String

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
我是中国人
中国人

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值