Java细节回顾
数据转换
1:不能对布尔值进行转换
2:不能把对象类型转换为不相干的类型
3:在把高容量转换到低容量的时候,强制转换
4:转换的时候可能存在内存溢出,或者精度问题
5:数字溢出时,可以如下处理
int money = 100_0000_0000 int years = 20 long total = money * years //会溢出 long total2 = money * ((long)years) //需要先把一个数转为long
反编译 java---class(字节码文件)----通过IDEA查看反编译文件
1:点击上方菜单栏File ->Project Structure ->Project settings ->Project -> Project compiler output:
2:到以上目录中,拷贝对应文件,如本次run的文件为Main.java,则拷贝Main.class到Main.java平齐目录中
3:双击点击Main.class,此时就能看到对应的反编译代码了。
多态
1:类型转换异常:ClassCastException
2:存在条件:继承关系,方法需要重写,父类引用指向子类! 如 Person s1 = new Student();
3:static方法、final常量、private方法不可进行重写
4:如图中s2想要调用eat的话,需要先强转为Student类
5:如Student student = new Student(); Person person = student; 对应的person可能会丢失student自己的本来一些方法
抽象类
1:抽象类不能创建对象,只能靠子类去实现
2:抽象类中可以写普通方法
3:抽象类中,不一定包含抽象方法,但有抽象方法的类必定是抽象类
4:抽象类作为类一定有而且是必须有构造器,是供子类创建对象时,初始化父类成员使用的
5:抽象类的核心意义就是为了被子类继承,否则抽象毫无意义;抽象类是模板思想,部分实现,部分抽象
接口
1:定义一些方法,让不同的人实现
2:方法都是public abstract类型;定义的值都是public static final类型
3:接口的变量名称建议全部大写,多个单词用"_"连接
4:一个类实现多个接口,必须要重写所有接口的全部抽象方法,否则这个类要定义成抽象类
5:接口与接口是多继承关系,一个接口可以继承多个接口
异常处理
异常体系架构
RuntimeException(运行时异常)
ArrayIndexOutOfBoundsException(数组下标异常)
NullPointerException(空指针异常)
ArithmeticException(算术异常)
MissingResourceException(丢失资源)
ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理
Error和Exception区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
实际应用中的经验总结
处理运行时异常时,采用逻辑合理规避同时辅助try-catch处理
在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
对于不确定的代码,也可以加上try-catch,处理潜在的异常
尽量去处理异常,切忌知识简单的printStackTrace()去打印输出
尽量添加finally语句去释放占用的资源
构造器
1:子类的全部构造器默认一定会调用父类的无参构造器,除非构造器第一行调用super(xxx)