day01
JDK JRE JVM
JDK是Java Development Kit 的简写 是Java开发工具包 提供了Java开发工具和运行环境
JRE是Java Runtime Environment 的简写 是Java运行环境 包括了Java基本类库和Java虚拟机JVM
JVM是Java Virtual Machine的简写 是Java虚拟机 可以看做是Java的操作系统
Java源文件.Java通过编译成.class文件 JVM会将字节码文件加载到内存 并解释运行
所以我们在不同的操作系统安装不同的JVM就可以实现Write Onece ,Run Anywhere
一处编译 到处运行 也体现了Java的跨平台性
==和equals
==可以用来比较基本数据类型和引用数据类型
比较基本数据类型是比较数据值是否相等
比较引用数据类型是比较地址值是否相等
equals只能用于比较引用数据类型 默认情况下是比较地址值是否相等
在Object类中定义的equals()底层是用的return(this==obj)来实现的
我们通常会重写Object类里的equals()来比较两个对象的实体内容
final finally finalize
final是关键字
修饰的类不能被继承 例如String
修饰的方法不能被重写
修饰的变量是常量,要先赋值,并且不能改变值
finally也是关键字
用于异常处理机制当中 和try-catch搭配使用 一般用于关闭连接或者流等操作
finally里代码不一定都会执行
1 | try { |
2 | int a = 2; |
3 | int b = 0; |
4 | System.out.println("bbb"); |
5 | System.exit(0); |
6 | } catch (Exception e) { |
7 | e.printStackTrace(); |
8 | }finally{ |
9 | System.out.println("aaa"); |
10 | } |
finalize是Object中定义的方法
一般情况下用JVM所调用 用于回收机制处理对象时调用
hashcode() equals()
hashcode()计算对象的哈希吗值 equals()比较两个对象是否相等
都可以自定义重写 所以不会一定一个相等另外一个就必须相等
只是通常情况我们会保持一致
Math
round方法四舍五入 ceil取较大值 tail取较小值
基本数据类型 包装类
byte int short long boolean char float double
为了让基本数据类型用类的特征使用了包装类 其中除了integer和character其他首字母大写
除了Boolean和Character其他的父类是Number 从初始值比较 从堆栈比较
操作字符串的类
String 不是基本数据类型 是常用的引用数据类型
生成得对象不可变 底层是char[ ] value 用final修饰 对修改操作都会生成新的对象
StringBuilder 线程不安全的 效率高 建议单线程使用
StringBuffer 线程安全的 效率低 建议多线程使用
类 抽象类 接口
类和抽象类
抽象类不能实例化有抽象方法的类使抽象类
类没有抽象方法 抽象类里也可以没有抽象方法
抽象类和接口
抽象类用abstract修饰 接口用interface修饰
抽象类可以没有抽象方法 接口全是抽象方法
抽象类可以用构造器 接口不能有构造器
类继承抽象类使用extends 实现接口使用implements
抽象类的静态变量可以是任意修饰符 接口只能是public static final
抽象类可以有静态方法 接口在1.8前不能有之后可以有已实现的静态方法
抽象类的方法可以是public,protected,默认 接口只能是public
在设计的时候 抽象类的”is a” 的关系 接口是”like a”的关系
抽象类不能被final修饰
权限修饰符
本类 本包 子类 其他包
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
默认/不写 可以 可以 不可以 不可以
private 可以 不可以 不可以 不
String类常用方法
toLowerCase()
toUpperCase()
startsWith()
endsWith()
toString()
equals()
subString()
replace()
replaceAll()
trim()
length()