JavaSE基础系列之字符串

一.equals与= =

  ==是关系运算符,equals是方法,结果都是返回布尔值。Object ==equals()比较的都是地址,作用相同。)

1.equals()方法的作用?

   JDK中的类一般已经重写了equals(),比较的是内容。自定义类如果没有重写equals(),将调用父类(默认Object类)的equals()方法,Obeject的equals()比较使用了this==obj.

 2. ==作用?

  基本数据类型:比较值是否相等.

  引用数据类型:比较内存地址是否相等,不能比较没有父子关系的两个对象。

二.为什么需要包装类?基本数据类型和包装类之间的转换

       基本数据类型方便,简单,高效,但泛型不支持,集合元素不支持。不符合面向对象的思维。包装类提供很多方法,如Integer类,parseInt(String s)方法等等。  

三.装箱与拆箱

装箱:基本类型转变为包装器类型的过程.

拆箱:包装器类型转变为基本类型的过程.

注意:

 

         //jdk1.5不支持自动装箱和拆箱

         Integer i=new Integer(10);

        //jdk1.5开始提供自动装箱,拆箱

         Integer s=11;

         int  n=i;

四.String

1.String概念

   该类由final关键字修饰,表示该类不能被继承。从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一 些空间。该类描述的字符串内容是个常量不可更改,因此可以被共享使用。

2.常量池概念

   由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。

注意事项:

 

        // 常量有优化机制,变量没有

        String str5 = "abcd";

        String str6 = "ab" + "cd";  // 常量优化机制  "abcd"

        System.out.println(str5 == str6); // 比较地址  true

        String str7 = "ab";

        String str9="cd";

        String str8 = str7 + str9; // 没有常量优化

        System.out.println(str5 == str8); // 比较地址 false

五.StringBuilder,StringBuffer,String区别

相同点:都可以存储和操作字符串。都使用final修饰,不能被继承。提供的API相似.

不同点:String是只读字符串,String对象内容是不能被改变的;StringBuffer和StringBuilder的字符串对象可以对字符串内容进行修改,在修改后的内存地址不会发生改变;StringBuilder相比StringBuffer效率高,但安全性低

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值