课程小结:
- 适合零基础学习,如果之前学过python或者其他数据结构,过一下PPT就好了。遇到不会的再回去看视频。
- 里面都是代码片段,不是完整的可运行代码,适合入门练手。感觉还是java8文档代码比较适合跟着练。(但可以直接在jshell写片段)
String 同一个还(same one)仅是值相同(same value)
以下MOOC的说法不是最新的java8,java8/java10不一样了。赋值也是新建了内存赋值。
==
和input.equals()
都是判断包含的字符串是否一样,不判断是否同一个东西/内存位置。
//java8
class test2{
public static void main(String[] args) {
String a = "Bill";
String b = a ;
a = "bill2";
System.out.println(a);
System.out.println(b);
}
}
//output
bill2
Bill
this is test 2
java8做下javap 反汇编,可以看到test2 是 aload_1,就是将a的值赋给b,然后重新存储astore_2。而test3 是新建了内存空间,并且存入值“Bill”。
JAVAP.png以前的java版本
以下存档一个java String类型的 a)判断是否同一个东西(有点像C的指针指向的内存,也有点像python指向同一个数组)。 b)判断String值是否相同。
value.png这样是指向同一个内存块中的值。
compare.png//code for same one thing
class test2{
public static void main(String[] args) {
String a = "Bill";
String b = a ;
System.out.println(a);
System.out.println(b);
}
}
//code for same value, different var
class test3{
public static void main(String[] args) {
String a = "Bill";
String b = "Bill" ;
System.out.println(a);
System.out.println(b);
}
}
String小结
最好比较是否值相同或同一个东西,不要用"==",这个在不同版本的界定好像有点模糊,最好还是用string专用的对比工具x.equals()
。
学习资料:
中国大学MOOC 《零基础学Java语言》翁恺老师
6.3 节 字符串
2018.7.2
网友评论