最后
面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
在Java中,我们可以使用StringBuilder(str).reverse()
使字符串字母倒序。
public class ReverseString1 {
public static void main(String[] args) {
String str = "Reverse a String in Java";
StringBuilder sb = new StringBuilder(str).reverse();
System.out.println(sb.toString());
}
}
输出结果
avaJ ni gnirtS a esreveR
首先,我们将字符串转换为char数组,并逐个循环char数组,并使用temp变量交换值。
public class ReverseString2 {
public static void main(String[] args) {
String str = "Hello World";
System.out.println(reverse(str)); // dlroW olleH
}
public static String reverse(String input) {
if (input == null || input.length() < 0)
throw new IllegalArgumentException("Please provide an input!");
char[] result = input.toCharArray();
int startIndex = 0;
int endIndex = result.length - 1;
char temp;
for (; endIndex > startIndex; startIndex++, endIndex--) {
temp = result[startIndex];
result[startIndex] = result[endIndex];
result[endIndex] = temp;
}
return new String(result);
}
}
上面的算法需要5个循环(长度/ 2)来使字符串倒序“ Hello World”。
------------------------------------
H e l l o W o r l d
------------------------------------
0 1 2 3 4 5 6 7 8 9 10
------------------------------------
Loop #1 - Swap index 0 <-> index 10
------------------------------------
{d} e l l o W o r l {H}
------------------------------------
{0} 1 2 3 4 5 6 7 8 9 {10}
------------------------------------
Loop #2 - Swap index 1 <-> index 9
------------------------------------
d {l} l l o W o r {e} H
------------------------------------
0 {1} 2 3 4 5 6 7 8 {9} 10
------------------------------------
Loop #3 - Swap index 2 <-> index 8
------------------------------------
d l {r} l o W o {l} e H
------------------------------------
0 1 {2} 3 4 5 6 7 {8} 9 10
------------------------------------
Loop #4 - Swap index 3 <-> index 7
------------------------------------
d l r {o} o W {l} l e H
------------------------------------
0 1 2 {3} 4 5 6 {7} 8 9 10
------------------------------------
Loop #5 - Swap index 4 <-> index 6
------------------------------------
d l r o {W} {o} l l e H
------------------------------------
0 1 2 3 {4} 5 {6} 7 8 9 10
------------------------------------
3. Byte[] – StringBuilder(str).reverse(str)
以下代码段类似于StringBuilder(str).reverse()
的内部实现(UTF16内容除外)。
import java.nio.charset.StandardCharsets;
public class ReverseString3 {
public static void main(String[] args) {
String str = "Hello World";
System.out.println(reverse(str));
}
public static String reverse(String input) {
if (input == null || input.length() < 0)
throw new IllegalArgumentException("Please provide an input!");
byte[] val = input.getBytes(StandardCharsets.UTF_8);
int length = val.length - 1;
for (int start = (length - 1) >> 1; start >= 0; start--) {
int end = length - start;
byte temp = val[start];
val[start] = val[end];
val[end] = temp;
// debugging
//System.out.println(String.format("start=%s, end=%s", start, end));
}
return new String(val);
}
}
最令人困惑的部分是右移运算符(length - 1) >> 1
,这是什么意思?查看下面的8位示例,您可以找到规律吗?
System.out.println(10>>1); // 10 -> 5
0000 1010 = 10
0000 0101|0 = 10 >> 1 = 5
System.out.println(4>>1); // 4 -> 2
0000 0100 = 4
0000 0010|0 = 4 >> 1 = 2
System.out.println(100>>1); // 100 -> 50
0110 0100 = 100
00110 010|0 = 100 >> 1 = 50
System.out.println(7>>1); // 7 -> 3
0000 0111 = 7
0000 0011|1 = 7 >> 1 = 3
对于数字,每右移1位,金额将减少该值的一半并四舍五入。这(length - 1) >> 1
试图找出字符串的中间点。
number >> 1 = round_down(number/2) or Math.flooa(number/2)
值交换从内部开始,然后扩展到外部。
for (int start = (length - 1) >> 1; start >= 0; start--) {
int end = length - start;
byte temp = val[start];
val[start] = val[end];
# 《MySql面试专题》
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/9181d8982b73222618079c8760dfd7ec.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/f3911ce96d24626272104d67c3c7318b.webp?x-oss-process=image/format,png)
# 《MySql性能优化的21个最佳实践》
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/4f74c816eb34d0132e90744471dbf814.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/aeea0920787714e589bb74cd70333968.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/6ad90e742202ad72de7d16a218e724ec.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/8d83775083e898c3199c9991a295ed85.webp?x-oss-process=image/format,png)
# 《MySQL高级知识笔记》
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/bab10f71d2ea99f8f3cbc370ca56649f.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/be7e49f1a7321fe4571d90eb7dec2363.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/ec1bd6c8f0f5c98da05691b515ec7865.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/de65df0d2c6918f9c9fed403ced76268.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/996f1365bb1c7ec2f200332e1eb65f3c.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/b84c8c3f3fc31f02db8a21b4afeb5d40.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/5f627821e93cb37aa89dc0575ae74f30.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/842d54ab016d135708917f2dacd01969.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/a73fb6acc7df0083cfb99d54ba783645.webp?x-oss-process=image/format,png)
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/8fb8f908937d00499391b09823da5303.webp?x-oss-process=image/format,png)
文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图
![全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好](https://img-blog.csdnimg.cn/img_convert/6d0769613bc3ceded87a7146516a5f3b.webp?x-oss-process=image/format,png)
**关注我,点赞本文给更多有需要的人**
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
24655481)]
[外链图片转存中...(img-beHWx3jO-1715424655481)]
文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图
[外链图片转存中...(img-tkO7YVmt-1715424655481)]
**关注我,点赞本文给更多有需要的人**
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**