Java中String类的特点以及常用的方法

字符串类String
一.两种实例化方式以及区别
     1.直接赋值 String 变量 = "字符串";
     直接赋值就是讲一个字符串的匿名对象设置了一个名字。String 变量 = 字符串常量(匿名对象)
String stra = "hello";
String strb = "hello";
String strc = "hello";
发现以上所有采用直接赋值的String类对象的内存地址完全指向了同一个内存空间。

共享设计模式: 
    在JVM的底层实际上会存在一个对象池(不一定只保存String对象),当代码之中使用
   了直接赋值定义了一个String对象,会将此字符串对象所使用的匿名对象入池保存,而
   后如果后续还有其他的对象也采用直接赋值的方式,并且设置了同样内容的时候,那么将
   不会开辟新的堆内存空间,而是使用已有对象进行引用的分配。

       2.构造方法String stra = new String(“hello”);
    通过分析,如果使用的是构造方法的方式进行String类对象实例化的开辟了两块堆内存
   空间(其中一块堆内存空间将成为垃圾空间).
    除了内存的浪费之外,如果使用了构造方法定义的String类对象,其内容不会入对象池,
   因为是new开辟的新的内存。
    
      public String intern();//intern()方法
     //使用构造方法定义了新的内存,而后入池。
    String stra = new String("hello").intern();//手工入池
    String strb = "hello";
    System.out.println(stra == strb);//true,==判断对象指向的堆内存地址是否一致。

    字符串一旦定义则不可改变,所谓字符串的内容实际上根本就没有改变(Java本身规定字符串不可改变)
   对于字符串对象内容的改变,是利用了引用关系的变化而实现的,而每一次的变化都会产生垃圾空间。
   String的内容不要过多频繁修改。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值