常用类
内部类
概念: 定义在类内部中的完整的类
特点 :
- 编译之后可生成独立的字节码文件
- 内部类可直接访问外部类的私有成员,而不破坏封装.
- 可为外部类提供必要的内部功能组件.
成员内部类,静态内部类,局部内部类,匿名内部类
- 成员内部类
- 在类的内部定义,与实例变量,实例方法同级别的类.
- 外部类的一个实例部分,创建内部类对象时,必须依赖外部类的对象
- Outer out = new Outer();
- Inner in = out.new Inner();
- 当外部类,内部类存在重名时,会优先访问内部类属性.
- 成员内部类不能定义静态成员.
- 静态内部类
- 不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员.
- 只能直接访问外部类的静态成员(实例成员需实例化外部类对象)
- Outer.Inner inner = new Outer.Inner();
- Outer.Inner.show();
- 局部内部类
- 定义在外部类的方法中,作用范围和创建对象范围仅作用在当前方法.
- 局部内部类无法访问外部类局部变量,因无法保证变量与自身生命周期相同,需加final修饰.
- 限制类的适用范围.
- 匿名内部类
- 没有类名的局部内部类(一切特征都与局部内部类相同).
- 必须继承一个父类或者实现一个接口.
- 定义类,实现类,创建对象的语法合并,只能创建一个该类的对象.
- 优点:减少代码量.
- 缺点:可读性差.
Object类
- 超类,基类,所有类的直接或间接父类,位于继承树的最高层.
- 任何类,如果没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承.
- Object类中所定义的方法,是所有对象都具备的方法.
- Object类型可以存储任何对象
- 作为参数,可接受任何对象.
- 作为返回值,可返回任何对象.
- getCLass()方法
-public final Class<?> getClass(){}
- 返回引用中存储的实际对象类型
- 应用: 通常用于判断引用中实际存储对象类型. hashCode()方法
-public int hashCode(){}
- 返回该对象的哈希码值
- 哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值.
- 哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码.toString()方法
- public String toString(){}
- 返回该对象的字符串表示(表现形式).
- 可以根据程序需要覆盖该方法,如:展示各个属性值.
equals()方法覆盖步骤
- 比较两个引用是否指向同一个对象.
- 判断obj是否为null
- 判断两个引用指向的实际对象类型是否一致.
- 强制类型转换.
- 依次比较各个属性值是否相同.
finalize()方法
- 当对象被判定为垃圾对象时,由jvm自动调用此方法,用以标记垃圾对象,进入回收队列.
- 垃圾对象:没有有效引用指向对象时,为垃圾对象.
- 垃圾回收:由GC销毁垃圾对象,释放数据存储对象空间.
- 自动回收机制:jvm的内存耗尽,一次性回收所有垃圾对象.
- 手动回收机制:使用System.gc();通知jvm执行垃圾回收.
包装类
- 什么是包装类
- 基本数据类型所对应的引用数据类型
- Object可统一所有数据,包装类的默认值是null
包装类对应
基本数据类型 | 包装类型 ---|--- byte | Byte short | Short int | Integer long | Long float | Float double | Double boolean | Boolean char |Character类型转换与装箱,拆箱
- 8种包装类提供不同类型间的转换方法:
- Number父类中提供的6个共性方法
- parseXXX()静态方法. //字符串转基本类型
- Integer.parseInt(“10”);
- xxxValue(); //对象->基本类型
- valueOf()静态方法. //转成包装类
- Short s1 = valueOf(100);
常用数据类型之间的转换.
int转成Integer Integer i1 = new Integer(10); Integer i2 = Integer.valueOf(10); Integer转成int int a1 = i1.intValue(); String 转成Integer Integer i3 = new Integer("123"); Integer i4 = Integer.valueOf("123"); Integer转成String String s1 = i4.toString(); String s2 = i4 + ""; int 转成 String String s3 = a1 + ""; String 转成int int a2 = Integer.parseInt("123"); //必须是数字字符串.- char[] toCharArray() //将此字符串转换为一个新的字符数组
- 注意:需保证类型兼容,否则抛出NumberFormartException异常.
- JDK 5.0之后,自动装箱,拆箱.基本数据类型和包装类转换.
- 8种包装类提供不同类型间的转换方法:
整数缓冲区
- Java预先创建了256个常用的整数包装类对象.
- 在实际应用当中,对己创建的对象进行复用.
String类
- String
- 字符串是常量,创建之后不可改变.
- 字符串字面值存储在字符串池中,可以共享.
- String s = “Hello”;产生一个对象,字符串池中存储.
- String s2 = “abc”;//没有,复用池中”abc”
- String s3 = new String(“abc”);//一个,堆中”abc”
- String s = new String(“Hello”); //产生两个对象,堆池各存储一个.
- String s1 = “abc”;//没有,复用池中”abc”
- String s2 = “abc”;//没有,复用池中”abc”
- 可变字符串
- StringBuffer:可变长字符串,jdk1.0提供,运行效率慢,线程安全.
- StringBuiler:可变长字符串,jdk5.0提供,运行效率快,线程不安全.
- BigDecimal
- 位置:java.math包中.
- 作用:精确计算浮点数.
- 创建方式:BigDecimal bd = new BigDecimal(“1.0”);
- 方法:
- BigDecimal add(BigDecimal bd) 加
- BigDecimal subtract(BigDecial bd) 减
- BigDecimal multiply(BigDecimal bd) 乘
- BigDecimal divide(BigDecimal bd) 除
- BigDecimal result = bd1.divide(bd2, 2 , BigDecimal.ROUND_HALF_UP);//四舍五入

被折叠的 条评论
为什么被折叠?



