java的String类

1、实例化String:

             (1)、直接赋值;

             (2)、调用String类中的构造方法;

2、String的内容比较:

         基本数据类型通过==比较,String通过==比较堆内存中的地址值,String类中equals方法比较的是内容。

        String str1="hello";
        String str2=new String("hello");
        String str3=str2;
        System.out.println("str1==str2:"+(str1==str2));
        System.out.println("str1==str3:"+(str1==str3));
        System.out.println("str2==str3:"+(str2==str3));
        打印结果:
                     str1==str2:false
                     str1==str3:false
                     str2==str3:true

       

3、String两种实例化方式的区别:

            首先明白:一个字符串就是一个String类的匿名对象,匿名对象就是已经开辟了堆内存空间并可以直接使用的对象。

           String str1="hello";
           实际上就是把一个在堆中开辟好的堆内存空间的使用权给了str1对象,实际上使用这种方式还有另外一个好处,
      就是如果一个字符串以及被一个名称引用,则以后再用相同的字符串声明时,就不会在开辟新的空间,如下:     
           String str1="hello";
           String str2="hello";
           String str3="hello";
           System.out.println("str1==str2:"+(str1==str2));
           System.out.println("str1==str3:"+(str1==str3));
           System.out.println("str2==str3:"+(str2==str3));
           打印结果:
                     str1==str2:true
                     str1==str3:true
                     str2==str3:true
           

             例子:使用new String()的方式实例化String对象
                     public class Test3 {
                        public static void main(String[] args) {
                            String str=new String("hello");//通过关键字new实例化String对象
                        }
                    }

               一个字符串就是一个String类的匿名对象,而如果使用new关键字,不管如何都会再开辟一个新的空间,但是此时,
          空间的内容还是hello,所以上面的代码开辟了两个内存空间。
          
java的String类
对于字符串的操作就直接采用赋值的方式完成,而不采用构造方法传递字符串的方式完成。

4、字符串的内容不可改变:

      String类有一个特性,那就是字符串的内容一旦声明则不可改变。

java的String类

5、String 类中常用的方法:

java的String类


java的String类

java的String类

java的String类

java的String类

java的String类

java的String类

java的String类