Java程序设计05——String,基本数据类型和集合

String,基本数据类型和集合


一.String和Stringbuffer类
1.String的声明
string s1="abc";

string s2 = new String("abc");
2.String内容的比较

在String中,比较两个字符串是否相同,不能使用==,应使用equals()方法。

1.“==”方法:比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同

String str1 = "zjd";//直接赋值
String str2 = new String ("zjd");//通过new赋值
String str3 = str2;
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3));

image

原因:

  1. 每一个String对象的内存存储其实都是在堆内存中。
  2. "=="是进行数值比较的,因为str1和str2的在堆内存的地址不一样所以:str1和str2不相等–>false

Java程序设计05——String,基本数据类型和集合_第1张图片

2.“equals()"方法:比较的是两个对象的内容是否相等

String str1 = "zjd";//直接赋值
String str2 = new String ("zjd");//通过new赋值
String str3 = str2;
System.out.println("str1 equals str2-->"+(str1.equals(str2)));
System.out.println("str1 equals str3-->"+(str1.equals(str3)));
System.out.println("str2 equals str3-->"+(str2.equals(str3)));

Java程序设计05——String,基本数据类型和集合_第2张图片

原因:因为equals()方法的作用是将内容进行比较,所以此处返回的结果都为true。

3.两种实例化对象的区别

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

1.直接赋值

String str1 = "zjd";//直接赋值
String str2 = "zjd";
String str3 = "zjd";
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3);

Java程序设计05——String,基本数据类型和集合_第3张图片

原因:实际上就是把一个在堆内存中开辟好的空间使用权给str1,并且如果一个字符串已经被一个名称所引用,则以后再有相同的名称的字符串声明时,就不会重新开辟新地址了
Java程序设计05——String,基本数据类型和集合_第4张图片

2.通过new的方式实例化

String str1 = new String("zjd");

Java程序设计05——String,基本数据类型和集合_第5张图片

4.一旦被初始化,字符串内容便不可以被改变
String str1 = "zjd";
str1 =str1+"zka";
System.out.println(str1);

结果:zjdzka

Java程序设计05——String,基本数据类型和集合_第6张图片

你可能感兴趣的:(java,后端)