2021.02.18
第十三次记录
单位马上上班,今天弄了一些单位的东西,代码看少了,距离上班还有3天。以后只能下班后再回家学习代码了。但不会放弃,每天都会学习,坚持就是胜利!
课堂笔记1:
关于java JDk中内置的一个类:java.lang.String
1.String表示字符串类型,属于引用数据类型,不属于基本数据类型;
2.在java中随便使用双引号括起来的都是String对象。例如:“abc”,“def”,“HelloWorld”,这是三个String对象;
3.java中规定,双引号括起来的字符串是不可变的,也就是说"abc"从出生到死亡,不可变,不能变成"abcd"、“ab”;
4.在JDK当中双引号括起来的字符串,例如:“abc”,"def"都是直接存储在方法区的"字符串常量池"当中的。因为
字符串在实际开发中使用太频繁,为了执行效率,所以把字符串放到了方法区的字符串常量池当中。
5.垃圾回收器是不会释放字符串常量池里面的常量的。
代码演示1:
public class StringTest01 {
public static void main(String[] args) {
String s1 = "abcdef";
//字符串拼接
String s2 = "abcdef" + "xy";
System.out.println(s2);
//凡是双引号括起来的都在常量池中有一份
//new对象的时候一定在堆内存中开辟空间
String s3 = new String("xy");
}
}
输出结果:
abcdefxy
代码演示2:
public class StringTest02 {
public static void main(String[] args) {
//"hello"是存储在方法区的字符串常量池当中
//所以这个"hello"不会新建(因为这个对象已经存在了)
String s1 = "hello";
//分析结果是true还是false
//"=="比较的是变量中保存的内存地址
String s2 = "hello"; //true
System.out.println(s1 == s2);
String x = new String("xyz");
//一旦x = null,存在空指针异常的风险,不建议这么写
//System.out.println(x.equals("xyz"));
//建议这种方式,可以避免空指针异常
//因为xyz是一个String字符串对象,只要是对象都能调用方法
System.out.println("xyz".equals(x));
String y = new String("xyz");
//分析结果是true还是false
System.out.println(x == y); //false
//通过这个案例,知道了:字符串对象之间的比较不能使用"=="
//"=="不保险,应该调用String类的equals方法
//String类已经重写了equals方法,以下的equals方法调用的是String重写之后的equals方法
System.out.println(x.equals(y)); //true
}
}
输出结果:
true
true
false
true
课堂笔记2:
关于String类中的常用构造方法
1.String s = new String("");
2.String s = “”;
3.String s = new String(char数组)
4.String s = new String(char数组,起始下标,长度)
5.String s = new String(byte数组)
6.String s = new String(byte数组,起始下标,长度)
代码演示3:
public class StringTest03 {
public static void main(String[] args) {
//创建字符串对象最常用的一种方式
String s1 = "hello world";
//这里只掌握常用的构造方法
byte[] bytes = {97, 98, 99};
String s2 = new String(bytes);
//输出一个引用的时候会自动调用toString()方法,默认Object的话,会自动输出对象的内存地址
//输出字符串对象的话,输出的不是对象的内存地址,而是字符串本身
System.out.println(s2);
//String(字节数组,数组元素下标的起始位置,长度)
//将byte数组中的一部分转换成字符串
String s3 = new String(bytes, 1, 2);
System.out.println(s3);
//将char数组全部转换成字符串
char[] chars = {'我','是','中','国','人'};
String s4 = new String(chars);
System.out.println(s4);
//将char数组的一部分转换成字符串
String s5 = new String(chars, 2, 3);
System.out.println(s5);
}
}
输出结果:
abc
bc
我是中国人
中国人