最好避免使用浮点数进行比较==银行业务的表示使用BigDecimal类
类型转换 不同类型的数据要先转换成同一类型才能进行运算
byte , char, short -- >int ---> long ---> float ---> double (低--->高)
规则:(强制转换 注意内存补药溢出,不要超过低级类型的最大值):(类型)变量名 高--->低 (自动转换)低--->高
不能对boolean类型进行转换 JDK7新特征:数字之间可以用下划线分割 不影响输出
类型转换前如果出现原类型溢出也是不行的,需要对其中一个数值进行数值转换再操作
变量 :
类变量 static xxx (相当于类中的全局变量) 实例变量(必须要创建类对象才能使用 animal.name) 局部变量 常量 final
变量命名规范:见名知意
变量类型 | 规则 | 示例 |
类成员变量 | 首字母小写+驼峰原则 | monthSalary |
局部变量 | 首字母小写+驼峰原则 | |
常量 | 大写字母+下划线 | MAX_VALUE |
类名 | 首字母大写+驼峰原则 | Man,Go0dMan |
方法名 | 首字母小写+驼峰原则 | run(), runRun() |
生成多级包结构
JavaDoc生成文档 : 命令行 javadoc -encoding UTF-8 -charset UTF-8 XX.java
cmd: javac XXX.java 生成字节码文件XXX.class
cmd: java XXX 运行字节码文件,但是必须在正确的包路径下
方法重载规则:
方法名称必须相同,形参列表必须不同(类型个数排列顺序等),返回类型可同可不同,仅仅改变返回类型不足以构成方法重载
可变参数 puclic void add(int n,char c,double... m) 一个方法中只能有一个可变参数,且必须放在参数列表之后,其余普通参数必须在它之前声明。
equals 检查引用对象的堆地址是否相同,即检查是否是指向同一个对象,== 检查对象内容是否相同,只要值相同地址不同也返回true
类可以有多个有参构造,但是签名必须不同
array.for (生成for each循环遍历的语句) Array.toString(a) Array.sort(a)
被final修饰的类无法被继承 ,被final修饰的方法不可以被重写但是可以被重载
(在同一个类中,如果定义了多个方法名相同,但是可以通过参数进行区分的方法,那么这些方法就可以称之为重载
在子类中,如果定义了方法名、参数和返回值都与父类完全相同的方法,那么子类中的这个方法就可以称之为重写了父类中的方法,子类重写父类方法不能降低方法的访问权限
public > protected > default > private)protected 对不同包下的子类也是公开的
protected 允许子类和同一个包中其他类访问
类中所有的 private 方法都隐式地指定为 final。因为不能访问 private 方法,所以不能覆写它。可以给 private 方法添加 final 修饰,但是并不能给方法带来额外的含义。
一个类的方法中static修饰的方法(静态方法)叫做类方法和类一起加载,未被static修饰的普通方法(非静态方法)只能在被实例化之后才存在,所以static中不能直接调用普通方法
协变返回类型:子类重写的父类方法其返回值可以是父类方法返回值类型的派生类型
接口:接口中的字段都自动是 static 和 final 的
java8前接口中的方法全是抽象方法,但是Java8后除了抽象方法还有default,static方法,Java9 还有私有方法(私有方法只能本接口使用)
包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,那么类本身也必须限定为抽象的,否则,编译器会报错。
抽象类A不能对其创建对象,否则会报错,其子类B可以不全部实现其抽象方法,但是该子类B也会是一个抽象类,剩余未实现的抽象方法交由B的子类去实现以此类推。
关键字 default 允许在接口中提供方法实现——在 Java 8 之前被禁止。
// interfaces/InterfaceWithDefault.java
interface InterfaceWithDefault {
void firstMethod();
void secondMethod();
default void newMethod() {
System.out.println("newMethod");
}
}
- 实现类会继承接口中的default方法
- 如果一个类同时实现接口A和B,接口A和B中有相同的default方法,这时,该类必须重写接口中的default方法
- 如果子类继承父类,父类中有b方法,该子类同时实现的接口中也有b方法(被default修饰),那么子类会继承父类的b方法而不是继承接口中的b方法
- 注意,实现接口的类或者子接口不会继承接口中的静态方法
1.如果多个接口中有同名的抽象方法,那么实现类只需要实现一次即可
2.如果多个接口中有同名的默认方法,那么实现类必须重写一次,并且要去掉default关键字
3.如果多个接口中有同名的静态方法,那么实现类无须理会,接口中的静态方法只供接口直接使用
4.如果多个接口中有同名的私有方法,那么实现类无须理会,因为接口中的私有方法只能在本接口中使用
选中代码段 Ctrl + Alt + T生成try catch结构
throw 在方法中抛出异常 throws在方法上抛出异常
字段和局部变量的区别:
https://www.cnblogs.com/pgrightwu/p/14081682.html
私有类和共有类
https://blog.csdn.net/jingzi123456789/article/details/71515728