包装类:返回值类型不能满足返回类型的要求
例子:一个学生的成绩是一个double类,无法表示学生缺考的情况。
组成:为8种基本类型各自提供对象形式
int Integer
char Character
byte Byte
short Short
long Long
float Float
double Double
boolean Boolean
JDK5.0 自动封箱 由Java编译器自动完成 基本类型<--->包装类 转换
5.0之前 Integer i1 = 3;编译是不能够通过的,5.0之后可以直接将一个基本类型直接赋值给一个包装类(装箱)。可以直接直接进行i1+3一个对象类型和数值类型相加(拆箱)
常用:
int Integer.parseInt(String)将字符转换成数值
1.5之后包装类和基本类可以混用
内部类:放在一个类内部的类
成员内部类
可以访问外部类的私有成员
用"外部类类名.this"访问外部类对象
创建成员内部类对象,需要先创建外部类对象,再通过"外部类对象.new 内部类类名()"
静态内部类
静态内部类只能访问外部类的静态成员
创建静态内部类对象,直接通过"new 外部类类名.内部类类名()"
局部内部类
定义在外部类的方法内部,作用范围:从定义开始--所在的代码块结束
不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)
匿名内部类
特殊的局部内部类
1)继承某个类或者实现某个接口
2)只会创建一个对象
不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)
无法定义构造方法!
不需要添加新的公开方法
JVM空间划分:
堆空间(heap) : 对象
栈空间(stack) : 局部变量
代码空间(code) : 常量池 静态数据
例子:一个学生的成绩是一个double类,无法表示学生缺考的情况。
组成:为8种基本类型各自提供对象形式
int Integer
char Character
byte Byte
short Short
long Long
float Float
double Double
boolean Boolean
JDK5.0 自动封箱 由Java编译器自动完成 基本类型<--->包装类 转换
5.0之前 Integer i1 = 3;编译是不能够通过的,5.0之后可以直接将一个基本类型直接赋值给一个包装类(装箱)。可以直接直接进行i1+3一个对象类型和数值类型相加(拆箱)
常用:
int Integer.parseInt(String)将字符转换成数值
1.5之后包装类和基本类可以混用
内部类:放在一个类内部的类
成员内部类
可以访问外部类的私有成员
用"外部类类名.this"访问外部类对象
创建成员内部类对象,需要先创建外部类对象,再通过"外部类对象.new 内部类类名()"
静态内部类
静态内部类只能访问外部类的静态成员
创建静态内部类对象,直接通过"new 外部类类名.内部类类名()"
局部内部类
定义在外部类的方法内部,作用范围:从定义开始--所在的代码块结束
不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)
匿名内部类
特殊的局部内部类
1)继承某个类或者实现某个接口
2)只会创建一个对象
不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)
无法定义构造方法!
不需要添加新的公开方法
JVM空间划分:
堆空间(heap) : 对象
栈空间(stack) : 局部变量
代码空间(code) : 常量池 静态数据