Java常用类
内部类
概念:在一个类的内部再定义一个完整的类。
//内部类
public class Outer {
class Inner{
}
}
特点:
- 编译后可生成独立的字节码文件。
- 内部类可直接访问外部类的私有成员,而不破坏封装。
- 可为外部类提供必要的内部功能组件。
成员内部类
- 在类的内部定义,于实例变量、实例方法同级别的类。
- 外部类的一个实力部分,创建内部类对象时,必须依赖外部类对象。
静态内部类
- 不依赖外部类对象,可以直接创建或通过类名访问,可声明静态成员。
局部内部类
- 定义在外部类的方法中,作用范围和创建对象范围仅限于当前方法。
- 局部内部类访问外部类当前方法中的局部变量时,因无法保障变量的生命周期与自身相同,变量必须修饰为final常量。
匿名内部类
- 没有名字的局部内部类(一切特征都与局部内部类相同)。
- 必须继承一个父类或者实现一个接口。
- 定义类、实现类、创建对象的语法合并,只能创建一个该类的对象。
优点:减少代码量。缺点:可读性较差。
Object 类
- 超类、基类,所有类的直接或者间接父类。
getClass方法
- 返回当前对象的实际类型。
- 返回值类型为class类型。
hashCode()方法
- 返回类型为int类型,返回该对象的哈希码值。
- 哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值。
toString()方法
- 返回类型为 String 类型。
- 表现形式为字符串。
equals()方法
-
比较两个对象的地址是否相同。
-
可进行覆盖,比较两个对象的内容是否相同。
覆盖方法:
- 判断两个对象是否是同一个引用
- 判断obj是否为null
- 判断是否是同一个类型
- 是同一种则进行强制类型转换
- 比较属性
-
返回布尔值类型
finalize()方法
- 当对象被判定为垃圾对象时,由JVM自动调用该方法,用以标记,进入回收队列。
- 垃圾对象:没有有效引用指向此对象时为垃圾对象。
- 垃圾回收:由GC销毁垃圾对象,释放空间。
包装类
- 基本数据类型所对应的引用数据类型
- 默认值为null
- 基本类型所对应的包装类类型:
- 除int类型对应Integer、char类型对应Character外,其余基本类型都是首字母大写。
类型转换与装箱、拆箱
- 装箱:基本类型转换为引用类型。
- 拆箱:引用类型转换为基本类型。
- jdk 1.5后提供自动装箱、拆箱。
- 基本类型转字符串
- 使用+号。
- 使用Integer中的toString()方法。
- 字符串转为基本类型
- 使用Integer中的parseXXX()方法(XXX代表基本数据类型)。
- 布尔类型的字符串转为基本类型时,除了字符串是“true”会转成true,其他全部为false。
注意:类型要兼容,否则抛出NumberFormatException异常。
整数缓冲区
- Java预先创建了256个常用的整数包装类型对象。
- 在实际应用当中,对已创建的对象进行复用。
String 类
- 字符串是常量,创建之后不可以改变。
- 字符串字面值存储在字符串池中,可以共享。
- 给字符串赋值时,并没有修改数据,而是重新创建的。
常用方法
- length():返回字符串长度。
- charAt(int index):根据下标获取字符。
- contains(String str):判断当前字符串是否包含str。
- toCharArray():将字符串转为数组。
- indexOf(String str):查找str首次出现的下标。
- lastIndexOf(String str):查找最后一次出现的下标。
- trim():去掉字符串前后的空格。
- toUpperCase():将小写转为大写 、toLowerCase()将大写转为小写。
- endwith(String str):判断是否str结尾,startwith(String str):判断是否以str开头。
- replace(str1,str2):将str1替换为str2。
- split():拆分字符串。
- 比较:equals()比较相等、compareTo ()比较大小。
可变字符串
- StringBuffer:可变长字符串,运行效率慢,线程安全。
- StringBuilder:可变长字符串,运行效率快,线程不安全。
和String 的区别:
- 比String效率高。
- 比String节省内存。
用法:
- append(str):追加内容。
- toString():输出内容。
- insert(index,str):添加,在某个位置添加某个类型的数据。
- replace(start,end,str):替换,指定位置替换。
- delete(start,end):删除
BigDecimal类
浮点类型需要精度高的运算时使用此类。
创建方式:BigDecimal bd = new BigDecimal(“1.0”);
类之间不能用运算符进行计算,应该调用方法:运算后返回值类型为BigDecimal。
- 加法(+)–>add()
- 减法(-)–>subtract()
- 乘法(*)–>multiply()
- 除法(/)–>divide()
Calendar 类
提供了获取或设置各种日历字段的方法。
构造方法:protected Calendar(),由于修饰符是protected,所以无法直接创建对象。
使用其getInstance()方法创建对象。
格式为:Calendar calendar = Calendar.getInstance();
- 获取当前时间:get(Calendar.XXX),返回值类型为int
XXX替换为如年YEAR、月MONTH(返回0-11,0为1月,11为12月)、日 DAY_OF_MONTH、小时HOUR_OF_DAY(24)、分钟MINUTE、秒SECOND。
- 修改时间set(当前时间,修该的时间)
- 输出calendar.getTime().toLocaleString();
SimpleDateFormat 类
- 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
- 进行格式化(日期 ->文本)、解析(文本 ->日期)
- 常用模式字母
- y 年
- M 月
- d 天
- H 小时(0-23)
- m 分钟
- s 秒
- S 毫秒
- 实例化SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日HH:mm:ss”);
- 方法:
- 格式化:format(data);
- 解析:parse(str); 会抛出异常
System类
系统类,主要获取系统的属性数据和其他操作,构造方法私有的。方法是静态的,不需要实例化对象。
- arraycopy(str1,i,str2,j,length):实现数组复制,i开始位置,j开始位置
- currentTimeMillis():获取当前系统时间,返回的是毫秒
- gc():通知JVM回收垃圾对象
- exit():退出JVM(0表示正常退出,非0表示异常退出)