内部类、自动拆装箱、异常

一、内部类

1、内部类是定义在类中的类,语法:修饰符 class 类名{} ,内部类相当于是外部类的一个属性,内部类也是一个类,跟正常的类一样。

2、类的生命周期程序运行时开始到程序结束时销毁,但是呢,某些情况下,在整个应用程序中对该类的使用频率较低,那此时就需要将其定义为内部类,以缩短其生命周期; 使用内部类是为了缩短类的生命周期 , 当类或该类的对象并不是很常用的时候,就可以定义为内部类

1、内部类

public class Outer{
    public int count;
    
    
    class Inner{
        public int count;
        public void show(){}
    }
    public static void main(String []args){
        //把内部类当成外部类属性来调用;
        Outer.Inner inner = new Outer().new Inner();
        inner.show();
        //也可以先创建外部类对象
        Outer outer = new Outer();
        Outer.Inner inner= outer.new Inner();
        //调用静态的内部类
        Outer.Inner1 inner = new Outer.Inner();
    }
    //静态的内部类, 一般不这样写
    static class Inner1{
        public void show(){}
    }
    //内部类可以调用外部类的属性和方法,但是外部类只能通过对象的形式去调用内部类中的属性和方法
    //Outer.this.属性 方法,就可以调用外部类的方法跟属性

}

2、局部内部类

public void method(){
    class Inner{
        public void show(){}
    }
    new Inner.show();  //局部内部类只能在方法中创建对象, 方法执行局部内部类才能执行
}

3、匿名内部类

匿名内部类没有具体的子类名字

语法: 父类类名 变量名 = new 父类类型(){}; 是一种多态的形式,向上转型 ,不能直接访问子类型的属性或方法

public interface IUserDao{
    public void speak();
}
public static void main(String[] args){
    Object obj = new IUserDao(){  //报错 无法直接访问子类的属性或者方法
        @Override
        public void speak(){
            Syso("speak");
        };
    };
    obj.speak();
    
    IUserDao userDao = new IUserDao(){
        @Override
        public void speak(){	//可以运行 讲接口实现化了
            Syso("speak");
        };
    };
    userDao.speak();
}

二、自动拆装箱

1、基本数据类型-转换为-------->引用数据类型 :装箱

integer i = new integer(33); 装箱

integer i = 100; 自动装箱

2、引用数据类型-转换为-------->基本数据类型:拆箱

int i = i. intValue();装箱

i = 100; 自动拆箱

integer(String) integer.MAX_VALUE int的最大值 , integer.MIN_VALUE int的最小值

integer(int)

integer类加载的时候会初始化整数型常量池,也叫缓冲池:256个对象 127到 -128

integer a ==127;

integer b ==127;

a ==b 结果是true 127储存在缓冲池中 所以地址一样

integer c ==128;

integer d ==128;

c ==d 结果是flase 因为相当于 new Integer();这种格式对比的对象地址

byteByte
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

三、异常

关键词:Throwable 包含所有异常 继承Object
概念总结:Throwable包含两大模块(错误和异常),所有的错误或异常只有归属到Throwable体系下才能被虚拟机识别

错误(Error):所有的错误类后缀都是Error,错误的出现往往意味着虚拟机本身出现了问题,例如:OutOfMemoryError(内存溢出错误),StackOverflowError(堆栈内存溢出)。

异常(Exception):所有的异常类后缀都是Exception,分编译时期异常和运行时异常。

异常处理的的两种方式:
第一种:在方法声明的位置上,使用throws关键字,抛给上一级

第二种:使用try…catch语句进行异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值