1.抽象:把现实世界中某一类的东西,提取出来,用程序代码体现
2.封装:把数据和过程包起来,对数据的访问只能通过自定义的界面
3.继承:一种联结类的层次模型
4.多态:允许不同类的对象对同一消息做出响应
简单易学
可靠性
与平台无关
面向对象 (使程序耦合度低--独立性高,内聚性更高--相关度比较高的尽可能集中)
支持多线程
面向对象:把构成问题的事务分解成各个对象,为了描述某个事务在解决过程中发生的行为
面向过程:分析解决问题的过程,用函数把这些步骤一步一步实现
jdk:是 java 开发工具包
jre:是 java 的运行环境
jvm:是 java 虚拟机,是整个 java 实现跨平台的最核心的部分
byte 1
short 2
int 4
long 8
float 4 单精度浮点类型
double 8 双精度浮点类型
boolean
char
标识符由字母、数字、下划线组成,并且首字母不能是数字
instanceof 双目运算符 检查 一个测试对象 是否为一个类的实例
int i = 0;
System.out.println(i instanceof Integer);//编译不通过 i必须是引用类型,不能是基本类型 System.out.println(i instanceof Object);//编译不通过
装箱:基本数据类型 转换为 包装器类型
拆箱:包装器类型 转换为 基本数据类型
都是方法多态的体现
定义不同:重载是定义相同的方法名、参数不同,
重写是子类重写父类的方法
范围不同:重载发生在同一个类
重写发生在子类和父类之间
多态不同:重载是编译时多态的体现
重写是运行时多态的体现
参数不同:重载的参数个数、参数类型、参数的顺序可以不同,
重写父类子方法参数必须相同
修饰不同:重载对修饰范围没有要求,
重写要求重写方法的修饰范围大于被重写方法的修饰范围
== 比较的是存放对象的内存地址
equals 比较的两个对象的内容是否相等
根据对象的内存地址换算出一个值,集合添加新元素,先调用这个元素的 hashcode方法,一下子定位到它该放置的物理位置上,如果这个位置没有没有元素,直接存储上这个位置,如果有元素,调用 equals 方法 与新元素比较,相同就不存了,不相同就散列到其他地址
安全
String是线程不安全
StringBuffer 使用 synchronized 关键字加锁,是线程安全
StingBuilder 没有使用,所以是线程不安全的
性能
String 性能最差,底层不可变,用char[] 类型 用final修饰
StringBuffer 性能低,原因是底层方法加锁了
StingBuilder 性能高