自我总结String的基本知识点

String类是java.long包默认引入的,为了解决字符串序列的相关问题。String类被final关键字修饰,他不能被继承。

1.常量对象

        String中字符串是常量,生成后就自动加载到方法区(常量池/元空间)里面去,一但定义就不可以修改。如果对字符串进行修改,则会重新开辟新的空间。System.identityHashCode()可以返回对象的内存地址。

package Package4.String类.String常用方法;
public class A {
   public static void main(String[] args){
      /*string中字符串是常量,定义了就不可变,
      在它上面做修改相当于在方法区(常量池)里面创建一个新value
      */
      String s1="你好";
      System.out.println(System.identityHashCode(s1));
      s1="hello";
      System.out.println(System.identityHashCode(s1));

   }
}

2.String对象

String对象的字符序列,每次new一个对象,就会在内存里开辟一个新的空间。即使字符序列相同,内存地址也不同。

package Package4.String类.String常用方法;
public class A {
   public static void main(String[] args){
      /*string中字符串是常量,定义了就不可变,
      在它上面做修改相当于在方法区(常量池)里面创建一个新value
      */
      String s1=new String("你好");
      System.out.println(System.identityHashCode(s1));
      String s2=new String("你好");
      System.out.println(System.identityHashCode(s2));

   }
}

3.并置运算+

并置运算运算如果有String对象,那么就会在内存里重新开辟内存空间,他们的内存地址不同

package Package4.String类.String常用方法;
public class A {
   public static void main(String[] args){
      String s1="你";
      String s2="好";
      String s3="你"+"好";
      String s4=s1+"好";
      String s5="你好"+s2;
      String s6=s1+s2;
      System.out.println(s3 == s4);
      System.out.println(s3 == s5);
      System.out.println(s3 == s6);
      System.out.println(s4 == s6);
   }
}

4.关于这方面的题 

当str被new创建时,“good”就不会发生改变,后面给str赋值的时候会重新开辟新的内存空间,而且这是形参,不能做到值传递。所以没有产生变化。而数组是基本数据类型,他是可以被改变的。

package Package4.String类.String常用方法.compareTo_;
public class StringTest {
    String str=new String("good");
    char[] ch={'t','e','s','t'};

    public void charge(String str,char ch[]){
        str="test ok";
        ch[0]='b';
    }
    public static void main(String[] args){
        StringTest ex=new StringTest();
        ex.charge(ex.str,ex.ch);
        System.out.println(ex.str);
        System.out.println(ex.ch);
    }
}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值