更直观一点就是
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