内部类
内部类分类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
内部类:在一个类的内部再定义一个完整的类。
内部类特点:
- 生成独立的编码文件
- 可以访问外部类的私有成员而不破坏封装
- 可为外部类提供必要的内部组件
成员内部类
内部类和外部类属性重名时优先访问内部类属性,访问外部类属性时使用this
静态内部类
在成员内部类前加static。级别和外部类相同,目的是给外部类提供功能
局部内部类
定义在外部类方法中,范围限于当前方法
局部内部类使用时要在方法中new一下
局部内部类中不能包含静态成员,变量需加final(可省略)
匿名内部类
没有名字的局部内部类
必须继承一个父类或接口
用于只使用一次的类
Object类
getClass()
返回引用中存储的实际对象类型,返回值为Class类型
应用:通常用于判断两个 引用中实际存储对象类型是否一致
hashCode()
返回该对象的哈希码
哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
相同对象的哈希码相同
toString()
返回该对象的字符串表示
equals()
比较两个对象地址是否相等,返回true/false
finalize()
当对象被判断为垃圾对象时,由JVM自动调用此方法
垃圾对象:没有有效引用指向此对象时,为垃圾对象
垃圾回收:由GC销毁垃圾对象,释放数据存储空间
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
手动回收机制:使用System.gc()
包装类
基本数据类型所对应的引用数据类型
类型转换与装箱、拆箱
整数缓冲区
-128~127
String类
字符串是常量,创建后不可改变,字符串字面值存储在字符串池中(在方法区里),可以共享
可以使用new来创建,此方法创建后堆和字符串池中各有一个对象
常用方法
- public int length():返回字符串的长度
- public char charAt(int index):根据下标获取字符
- public boolean contains(String str):判断当前字符串中是否包含str
- public char[] toCharArray():将字符串转化为数组
- public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,返回-1
- public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引
- public String trim():去掉字符串前后的空格
- public String toUpperCase():将小写转成大写
- public String toLowerCase():将大写转成小写
- public boolean endWith(String str):判断字符串是否以str结尾
- public boolean startWith(String str):判断字符串是否以str开始
- public String replace(char oldChar,char newChar):将旧字符替换成新字符
- public String[] split(String str):根据str做拆分
可变字符串
StringBuffer:可变长字符串,运行效率慢,线程安全(比String效率高,节省内存)
StringBuilder:效率快,线程不安全
- append(str):追加
- insert(index,str):添加
- replace(index,length,str):替换
- delete(index,length):删除
BigDecimal类
大浮点数的精确计算
参数使用字符串
Date类
大部分被Calender取代
Calender类
SimpleDateFormat类
System类
- static void arraycopy(…):复制数组
- static long currentTimeMillis():获取当前系统时间,返回毫秒值
- static void gc():建议JVM启动垃圾回收器
- static void exit(int status):退出JVM,参数0表示正常退出,非0表示异常退出