Java String的特点

1.概念

 String 是字符串类型的类,使用双引号("")定义的都是字符串;

2.String的两种实例化方式

3.字符串的比较

 在数值类型中 "=="比较两个数值值是否相等;在引用类型中"=="比较的是内存地址,使用equals比较两个值是否相同;

 

4.在字符串相等中"=="和equals的区别;
     1. "=="是java提供的关系运算符,主要用来进行数值相等判断;用在String对象上表示判断这个两字符串对象的内存地址是否相等判断;
     2. equals 主要负责字符串内容相等比较;

5.字符串常量是Stirng的匿名对象;

  java提供了字符串,String不属于基本数据类型;它是将字符串作为String的匿名对象的形式存在的;

 直接赋值相当于是将一个匿名对象设置名字而已;但唯一的区别在于String的匿名对象是由系统自动生成的,不再由用户自己创建;

 为了避免空指向异常,可以将字符串写在前面调用方法;

6.两种方式实例化的区别

1.采用直接赋值实例
         直接赋值是将一个字符串的匿名对象设置了一个名字;
        String  引用(变量)=匿名对象(字符串常量)
        String str="hello";
        此时会再内存中开辟一块堆内存,并且由一块栈内存指向此堆内存;

*使用直接赋值的String的类对象的内存地址完全相同(stra,strb,strc 指向同一块堆内存);

 

共享设计模式
     1.在JVM 底层会存在一个对象池(不一定只保存String对象),当代码中定义了一个直接赋值的String对象时,会将此对象使用的匿名对象 入池保存,后续如果有另外的String对象使用了直接赋值的方式来实例化对象的且设置内容相同的时候,将不再开辟新的堆空间,而是使用已有对象进行引用的分配,继续使用;

2.采用构造方法实例化

使用new 关键字,如果使用了new就一定会在堆内存中开辟新的堆空间;
   1.   会开辟两块空间,其中一块会成为垃圾空间;
     2.内存浪费且内容不会保存到对象池当中;如果希望存入对象池需要使用String提供的手工入池的方法:public native String intern();

 

 String实例化的两种区别;
     1.直接赋值
       1.会开辟一块堆空间,自动保存到对象池中以便下次重复使用;
     2. 构造方法
       1.会开辟两块堆空间,其中一块将成为垃圾,不会自动保存到对象池中,如果想要保存到对象池中需要手动入池(使用intern());  

字符串是不可变的;

字符串的内容一旦定义了就不会改变,对于字符串内容的改变是利用了引用的变化来实现的;每次的变化都会产生垃圾空间;

  
    

 Stirng的特点:
        String类型的内容相等判断用equals()完成;"=="比较的是String的内存地址;
        String字符串的内容一旦声明就不能改变,String内对象的的改变是依靠引用关系的变更来实现的;
        String 的两种实例化方式,使用直接赋值不会产生垃圾空间,且可以自动入池,尽量不要使用构造方法来实例化;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值