#Java# 学习笔记-MOOC零基础学Java语言-翁恺

2018-07-02  本文已影响29人  LeeMin_Z

课程小结:

  1. 适合零基础学习,如果之前学过python或者其他数据结构,过一下PPT就好了。遇到不会的再回去看视频。
  2. 里面都是代码片段,不是完整的可运行代码,适合入门练手。感觉还是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

上一篇下一篇

猜你喜欢

热点阅读