文章目录
- 初始java String类型
- 理解 next和nextLine的区别
- new String(); 括号里面可以放什么呢
- 放byte类型的数组
- 放byte类型的数组,索引,长度
- 放char类型的数组
- 放char类型的数组,索引,长度
- String 类型对应同一字符串,是否相等
- 直接赋值
- 空的字符串
- 字节码
初始java String类型
理解 next和nextLine的区别
String sc = new String();
String s1=sc.next();
//当遇到空格或者回车就会结束键盘录入
String s2=sc.nextLine();
//当遇到回车的时候才会结束键盘录入
//遇到空格不会结束键盘的录入
new String(); 括号里面可以放什么呢
放byte类型的数组
byte [] arr = {65,66,67,68,69};
String sc = new Sting(arr);
//arr数组要是byte类型
打印结果
解释:将数组中的数值看成对应的 A S C L L \color{red}{ASCLL} ASCLL值,字符A对应的的ASCLL值就是65.
放byte类型的数组,索引,长度
byte [] arr = {65,66,67,68,69};
String sc = new String(arr, 1, 3);
// 数组,索引,长度
打印结果
解释:字符B对应的索引是1,我们打印3个长度,所以打印的是索引为1,2,3的字符。
放char类型的数组
char [] chars = {'a','b','c','d','e','f'};
String s6 = new String(chars);
System.out.println(s6);
//abcdef
放char类型的数组,索引,长度
char [] chars = {'a','b','c','d','e','f'};
String s7 = new String(chars, 1, 3);
// 数组,索引,长度
System.out.println(s7);
//bcd
String 类型对应同一字符串,是否相等
直接赋值
String name1="张三";
String name2="张三";
System.out.println(name1==name2);
//true
解释:值创建后不能被更改,但可以被更改,是对象的话,我们一般放在堆内存中,这就意味着地址值是相等的,我们比较的同一块地址内存,所以结果为true。
String name3 = new String("张三");
String name4 = new String("张三");
System.out.println(name3==name4);
//false
解释:这里面的张三地址都一样,但是这里是 n e w \color{red}{new} new的对象, 但是这里张三重复了。为了节省内存,new的对象指向了“张三”。这里比较的是 n e w \color{red}{new} new的地址,地址内存不一样。
空的字符串
String s = "";
String s = new String();
字节码
String name5 = "李四";
byte [] arr1 = name5.getBytes();
System.out.println(Arrays.toString(arr1));
//[-26, -99, -114, -27, -101, -101]
可以用字节码反推李四
byte [] arr2 = {-26, -99, -114, -27, -101, -101};
String s = new String(arr2);
System.out.println(s);
//李四
学的不是技术,更是梦想!!!