内存模型 ≈ Stack + Heap
基本数据类型
Java提供8种基本数据类型,每种基本数据类型都有自己所对应的包装器类
数字:byte -> short -> int -> long & float -> double
字符:char
布尔:boolean
隐式类型转换:数字运算中,小空间数据会先转换成大空间数据再与其进行运算
整数相除的运算结果是整数,小数位会被舍弃
引用数据类型
类
为什么会有类?
类的概念为Java新建数据类型提供统一的模板
类由字段与方法两个部分组成
字段:用于存储数据的变量,类中字段在加载时会被自动初始化
方法:接收参数并返回计算结果
// 类的组成
class <ClassName>{
<Fields>
<ReturnType> <MethodName> (<Arguments....>){
Statements...
}
}
方法签名:由方法名称与参数列表两部分组成,类中的方法签名必须唯一
抽象类
为什么会有抽象类?
抽象类的作用在于延迟声明,可以将细节延迟到其子类中进行;抽象类是因为继承而存在的
抽象方法是一种特殊的方法,只有声明,没有具体实现;抽象方法需要用abstract关键字标识
含有抽象方法的类叫抽象类
继承抽象类需要用extends关键字声明
接口
为什么会有接口?
接口是对类的行为的完全抽象,在各种使用环境中提供统一的协议规则
用interface标识并没有任何具体方法实现的类叫接口
接口中所有成员默认都是public的,字段是public static final,方法是public abstract
继承接口需要用implements关键字声明
接口的另一作用是实现多重继承
内部类
为什么会有内部类?
可以获取外部类的所有成员的访问权限;使代码更加简洁
将一个类的定义放在另一个类的定义内部,就是内部类
内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。所以内部类的字段和方法名可以与外部类的相同
.this语法:在使用外部类对象的引用时,用外部类的名称加.this语法 – Outer.this
.new语法: 创建内部类对象时,用外部类对象加.new语法 – new Outer().new Inner()
内部类在使用定义在其外部的对象时,要求该对象必须是final所修饰的,这样可以保证内部类在使用时其值不会发生变化
匿名内部类:在new的同时给出类的定义,是继承关系的另一种表现形式