java中字符串比较的问题

一、关于基本类型与引用类型

1.基本类型:  

全在   栈空间:名字--具体值

整型:byte short  int  long

浮点型:float double 

逻辑型:boolean 

字符型:char

2.引用类型:   栈空间:名字--地址(用于在堆空间寻找)      堆空间:具体值

类、接口、数组

二、创建字符串的两种方式

String a = "ttt";  
String b = new String("ttt"); 

字符串无法被修改:
eg:

String str1 = new String("ttttttt"); 
str1 = "yyyyyyy";

ttt这个字符串在堆空间中并没有消失  当改变变量b时

在堆空间中新建一个字符串yyy 再替换掉对ttt地址的引用 重新让b来指向yyy的首地址

 

三、关于字符串的比较

1.equals:值比较

2.==:地址比较

例一:

String a = "ttt";
String b = "ttt";

 equals相等   ==相等

例二:

String a = new String("ttt");

String b = new String("ttt");

 equals相等   ==不相等

例三: 

String a = "ttt";
String b = new String("ttt");

equals相等   ==不相等

猜你喜欢

转载自www.cnblogs.com/yang37/p/11204347.html