一、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;
抽象类定义的是体系内的功能; 接口定义的是体系外的扩展功能!!