面向对象的特性
封装
意义:在于明确识出允许外部使用的所有成员函数和数据线
内部细节对外部调用透明,外部调用无需修改或者关心内部实现
典型案例就是JavaBean,提供get和set对外访问
private String name;
public void setName(String name){
this.name = "tuling_"+name;
}
集成
集成基类(父类)的方法,做出自己的改变或者拓展
子类共性的方法或者属性直接使用父类的,而不需要自己再定义,只需要拓张自己个性化的方法
多态
基于对象所属性的不同,外部对同一个方法的调用,实际执行的逻辑不同
父类类型 变量名 = new 子类对象
变量名.方法
无法调用子类持有的功能
JDK、JRE、JVM的关系
JDK(Java DeveIpment):java开发工具 包含下面的工具
使用人群:开发者
JRE(Java Runtime Environment):java运行时环境 包含下面的工具
使用人群:使用者
JVM(Java virtual Machine ):java虚拟机
==和equals区别
==对比是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
equals:object中默认也是采用==比较,通常会重写
Object
public boolean equals(Object obj){
return (this==obj);
}
String
上述代码可以看出,String类中被复写的equals()方法其实是比较两个字符串的内容
String str1 = "hello";
String str2 = new String("hello");
String str3 = str2;//引用传递
System.out.println(str1==str2);//false
System.out.println(str1==str3);//false
System.out.println(str2==str3);//true
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
System.out.println(str2.equals(str3));//true