euqals与==的区别
== 的作用:
- 基本类型:比较的就是值是否相同
- 引用类型:比较的就是地址值是否相同
equals 的作用:
- 引用类型:默认情况下,比较的是地址值。
- 在一些类库当中这个方法被重写了,如String、Integer、Date。在这些类当中equals有其自身的实现(一般都是用来比较对象的成员变量值是否相同),而不再是比较类在堆内存中的存放地址了。
八种数据类型及其包装类及转化
包装类为了使基本数据类型的变量有类的特征,引入包装类
- Vector中只定义了形参为Object的方法:
v.addElement(Object obj); //基本数据类型 --> 包装类–> 使用多态
int Integer、char Character等
基本数据类型与包装类之间的转换:自动装箱、自动拆箱
Interger i = 10;
基本数据类型、包装类—>String : valueOf (Xxx xxx)
String—>基本数据类型、包装类:parseXxx(String s)
多态的理解
- 实现代码的通用性
- Object类中定义的public boolean equals(Object obj}{}、JDBC:使用java程序操作数据库
- 抽象类和接口的使用肯定体现多态性(抽象类和接口类不能实例化)
多态是运行时的行为
static/final
- 方法中不能使用this和super
- 静态方法中只能调用静态变量or方法
- 接口中定义的变量必须都是public static final(默认)
- 在局部内部类的方法中如果调用局部内部类所声明的方法中的局部变量的话,jdk1.8中此局部变量默认声明为final
属性是被共享且不会因为实例的不同而改变/操作静态属性的方法或者工具类声明为静态方法
单例模式「饿汉式(先造)、懒汉式(用的时候造)」
饿汉式:
//私化类的构造器
private Bank(){}
//内部创建类的对象
//要求此对象也必须声明为静态的,也可以使用静态代码块代替
private static Bank instance = new Bank();
//提供公共的静态的方法,返回类的对象
public static Bank getInstance(){
return instance;
}
懒汉式
//私化类的构造器
private Order(){}
//声明当前类对象没有初始化
//此对象夜必须声明为static
private static Order instance = null;
//声明public、static的返回当前类对象的方法
public static Order getInstance(){
//使用同步代码块避免线程不安全问题
if(instance == null ){
synchronized(Order.class){
if(instance == null){
instance = new Order();
}
}
}
return instance;
}
应用场景:计数器、日志应用、数据库连接池、读取配置文件的类、Application
类属性赋值的位置顺序
- 默认初始化 int i;
- 显示初始化、代码块中初始化 int i = 0、{i = 0}
- 构造器中初始化
- 通过“对象.属性”或“对象.方法”中赋值
异常处理
- try-catch-finally处理编译异常(常用方式String getMessage()/printStackTrace())
try{
//可能出现的代码
}catch(异常类型1 变量名1){
//处理异常的方式1
}catch(异常类型2 变量名2){
//处理异常的方式2
}catch(异常类型3 变量名3){
//处理异常的方式3
}
...
finally{(可选的)
//保证一定会执行的代码,比如关闭接口等操作(可以再套try-catch-finally )
}
- throws + 异常类型(写在方法的声明处,指明此方法执行时会抛出的异常类型)
一直往上抛,直到main中再使用try-catch-finally解决
try-catch-finally真正的处理问题了,throws的方式只是将异常抛给了使用者并没有真正的解决问题。注意:子类重写的方法抛出的异常类型不能大于父类的,父类没有抛出异常,子类不能抛
如何选择:
1.父类中被重写的方法没有throws抛出异常,则子类也不能使用throws,所以子类中若有异常只能使用try-catch-finally方式处理。
2.执行的方法中,先后又调用了另外的几个方法,这几个方法是递进关系进行的,建议使用throws进行处理。(第一方法就有异常,后面的就不需要进行处理了)
-
手动抛出异常(throw new RuntimeException/Exception)
本质是生成异常对象,使用Exception时,需要在方法声明时再throws出异常,最后返回main中使用try-catch-finally处理 -
自定义异常类
- 通常会继承现有的异常结构(RuntimeException/Exception)
- 提供全局敞亮serialVersionUID(与类共存,标识类)
- 提供重载的构造器
public class EcDef extends Exception{
static final long serialVersionUID = -33875164229948L;
public EcDef(){
}
public EcDef(String msg){
super(msg);
}
}