内部类与常用类

常用类
内部类

概念: 定义在类内部中的完整的类

特点 :

  • 编译之后可生成独立的字节码文件
  • 内部类可直接访问外部类的私有成员,而不破坏封装.
  • 可为外部类提供必要的内部功能组件.

成员内部类,静态内部类,局部内部类,匿名内部类

  • 成员内部类
    • 在类的内部定义,与实例变量,实例方法同级别的类.
    • 外部类的一个实例部分,创建内部类对象时,必须依赖外部类的对象
      • 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之后,自动装箱,拆箱.基本数据类型和包装类转换.
  • 整数缓冲区

  • 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);//四舍五入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值