一、JAVA中的棧內存與堆內存
1.棧內存:存放局部變量,超出作用域會被回收;
2.堆內存:創建出來的對象,有java垃圾回收器回收。
二、static與類共存亡; 非static與對象共存亡!!
三、對象的比較:
1.== :比較的是棧內存中的值(地址)
2.equals : 比較的是內容,重寫該方法才有意義!!
四、函數傳參是:基本類型是值的拷貝的傳遞;引用類型是引用的傳遞!!
五、String的理解:
new出來的對象與直接寫的的區別!!!
1 String s1 = new String("abc"); //2個對象 2 String s2 = new String("abc"); //2個對象 3 4 System.out.println("s1 == s2 : " + (s1 == s2));//false 5 System.out.println("s1.equals(s2) : " + s1.equals(s2));//true 6 7 8 String s3 = "abc"; 9 String s4 = "abc"; 10 11 System.out.println("s3 == s4 : " + (s3 == s4));//true 12 System.out.println("s3.equals(s4) : " + s3.equals(s4));//true
六、getClass:
Class字節碼的獲取:
1.通過對象獲取; 對象.getClass()
2.通過類獲取; 類.Class
3.Class的forName方法獲取。 Class.forName("com.westos.javase.lesson04_2.Person"); -------> 注意全名
七、抽象類:
抽象類天生就是用來被繼承的;
抽象類不能被實例化,但可以定義變量指向子類對象;
其子類必須重寫所有方法,否則也必須聲明為抽象類;
抽象類中可以沒有抽象方法;
抽象類和普通類一樣,有構造方法!!!
八、接口
接口中所有方法都是抽象的 -----> public abstract
接口中的變量都是 -------> public static final
一個類只能繼承一個類,但可以實現多個接口:public class SuperMan extends Person implements Run_able,Flyable { }
解決了不能多繼承的問題!!
九、抽象類與接口的區別:
抽象類是繼承,接口是實現;
抽象類是 is a;接口是 like a;
抽象類定義的是體系內的功能; 接口定義的是體系外的擴展功能!!