background image

更直观一点就是

static

 String getStr(){

return

 

"suhuanzhen123"

;

}

public

 

static

 

void

 main(String[] args) {

String str7 = getStr();
System.

out

.println(

"suhuanzhen123"

 == str7);

}

输出的是 true;
如果是 2 个字符串变量之间比较就不能用==了
String str7 = getStr();
String str8 = 

new

 String(

"suhuanzhen123"

);

System.

out

.println(str8 == str7);

输出 false。
应该用
System.out.println(str8.equals(str7));

7. 赋值语句的类型提升

上图程序实际上就是类型自动提升发生了错误,num 本身是 int 型,而 num = 
num+33.567;表达式中使用了 double 类型的数值,那么此表达式会自动向最高级
别的基本类型转型,但是呢 num 自身是 int,会提示不能向上转换的编译错误。如果
程序这么写

public

 

static

 

void

 main(String[] args) {

int

 num = 1;

double

 numDoub = num+33.567;

}

就不会报错了。
赋值运算中基本数据转型的级别从高到低排序是 String->double->float->long-
>int->chart、short->byte。
如果运算中含有字符串变量,那么二话不说,此表达式所有的运算最后的返回值就
是一个字符串了,比如

int

 num = 1;

double

 numDoub = num+33.567;

String str = num+numDoub+

""

;

所以最高级别还是 String。
8. 符合运算符中的隐式类型转换

在符合运算符中实际上存在着一个隐藏的类型转换

 

2

 / 

14