内部类
指的是在Java中可以将一个类定义在另一个类的内部
内部类可以定义在 1.类的内部(与类成员层次一致)
2.方法/块内部(与类成员相差一个层次 方法的局部变量一个层次)
*1.成员内部类
将一个类直接定义在类的里面 作为成员 与属性和方法层次一致
成员内部类和正常类一样 使用不同的修饰符来修饰
好处:1.省略了一个.java文件
2.成员内部类中可以访问外部类的所有成员 包括私有的元素
内部类存在后 源代码进行编译 产生一个字节码Demo$InnerDemo.class
2.局部内部类
将一个类定义在方法/块里面 作为成员的内部结构 与临时的局部变量一个层次
局部内部类像是一个局部的变量一样 不嗯呢该用public protected private及static
只能用abstract或final
局部内命名规则Demo$1InnerTestMethod Demo$2InnerTestMethod
局部内部类 编译 字节码定义已经好了 由于变量的内容可以改变
局部内部类使用只能是final修饰
*3.匿名内部类
成员匿名内部类
局部匿名内部类
public interface Test{
public void test();
}
Test t = new Test(){
public void test(){
}
}
通常接口或抽象类的具体子类这样写
开放中为了省略一个类文件 上述的写法比较常见
匿名内部类很特殊 只有类体 没有类的所有结构 (修饰符 名字 继承 实现)
不能用任何修饰符来修饰 匿名内部类也没有构造方法
4.静态内部类
成员静态内部类
不需要外部类对象 通过正常的方式直接创建内部类
静态元素不能访问非静态成员(自己类和外部类)
1.枚举(类)
可以将某些类中的对象一一列列举出来 类中的对象具有有限的个数
1.通过enum来描述枚举 class interf enum
2.可以在枚举类中直接列举对象 public enum Day{monday,tuesday}
3.通过枚举类直接访问属性名(枚举对象)
4.通过枚举对对象调用 发现很多方法
每一个直接定义的enum枚举类型 都默认继承java.lang.Enum
name枚举对象名字 ordinal顺序(在枚举类中的索引)
name() ordinal()获取相关属性信息的方法
value
5.可以在enum中定义自己的一般属性 一般方法
必须在枚举类描述的第一行 列举枚举对象的样子 分号结尾
添加自己定义的私有属性
提供私有的构造方法(带参数) 我们自己是不能调用构造方法的
6.自己定义的enum不能再继承别的类(单继承)
实现多个接口 添加具体的方法
7.可以使用在switch语句中
2.内存的管理问题
栈内存-----变量空间 方法临时执行空间 从创建开始执行 完毕即回收
堆内存-----我们自己new申请对象空间
方法区-----常量 类模板 静态成员 有且只有一个 不回收
包装类(封装类) 1.5版本后 自动拆装包
byte---Byte short---Short int---Integer long-Long
float---Float double---Double clar---Character boolean---Boolean
1.八个包装类都在同一个包下 java.lang包 不需要import导包直接使用
2.八个包装类中有六个是和数字有关的 都默认继承父类Number
3.八个包装类都实现Serializable,Comparable
4.八个包装类都有自己对应类型参数的构造方法
八个包装类中有七个(除了Character)还有构造方法重载 带String类型
5.创建对象 对象调用属性/方法
有六个与数字相关的类都继承Number xxxValue(); 讲一个包装类类型转化为对应的基本类型(拆包)
1.==与equals()区别
==可以比较基本数据类型 也可以比较引用数据类型(变量中储存的类型)
如果比较基本类型比较的是变量中存储的值
如果比较引用类型比较的是变量中存储的地址引用
equals()是Object类中继承过来的方法 每一个引用类型都可以调用
默认继承equals();是Object继承过来的方法 每一个引用类型都可以滴啊哦哟请
由于Integer类就重写了equals()索引Integer比较的是数值
2.考察Integer类加载的时候 自己有一个静态的空间
空间内立即记载Integer类型的数组 内存储256个Interger对象 -128~127
如果我们用的对象范围在这之间Integer i1 = 10; 直接去静态区找对应的对象
如果我们用的对象范围超过了Integer Integer i1 = 1000; 会帮我们创建一个新的Interger对象
原文:https://www.cnblogs.com/mianji/p/14406278.html