基本知识
- BigInterger和BigDecimal
- valueOf()方法 转化一个int为大整数
- add()方法 + multiply()方法 × divide()方法 ÷ compare()方法比较 相同返回1 否则返回0
- Arrays有个toString() 方法(多维数组用deepToString())。。。挺牛逼的 一下子打印所有元素。
- 因为Java没有指针 所以数组中不能用a+1这种方法寻找下一个元素。
- Arrays还有sort()方法 有点牛逼。
- 类中的static修饰符标识的变量可以说是所有的对象共享
- this()除了经常用的用途(我说不明白) 还可以指向另一个构造函数
String
- java里字符串不要用== 要用equals方法 还可以忽略大小写的方法equalsIgnoreCase。
- charAt()方法 返回一个char。
- StringBuilder类
- 添加append()方法
- 生成字符串toString()方法
注释
- /** 开始 */结束
- @param 变量描述
- @return 描述
- @throws 类描述
- @author 姓名
- @version 版本
- @since 始于何时
- @see 引用
继承
- java只有public继承
- java只能单继承
- 注意super关键词的用法 一是调用超类 二是构造函数
- final类不允许继承 final方法也不允许再去修改
- 包含抽象方法的必须是抽象类 但是抽象类里可以存在具体的方法 抽象类不允许实例化
- 可变数组使用ArrayList add set get
- 包装 自动拆箱和装箱 final类 不允许修改其数值
- Integer toString parseInt
- 继承的设计技巧
- 将公共操作和域放在超类中
- 不要使用受保护的域
- 使用继承实现is-a的关系
- 除非所有继承的方法都有意义,否则不要使用继承
- 在覆盖方法时,不要改变预期的行为
接口
- 接口中的方法自动的属于Public 但是在实现的时候需要将方法声明为public
- 接口中可以有常量 但是不能有实例域 接口不能实例化 但是可以声明
- 要使一个自定义类实现按照某个变量进行排序,需要继承Comparable接口 实现 compareTo方法 比较数字使用Integer 和Double 下的compare()
- 接口可以扩展 extends 接口中的域自动被设置为public static final
- 一个类可以实现多个接口
- 可以在接口的方法前面加上default关键词 作为一个默认方法 这样当一个类实现接口的时候就可以只担心自己所用到的了
- 接口和类冲突时类优先
- Cloneable是java的标记接口
- 所有数组类型都有一个Public的clone方法,而不是protected
- lambda表达式()->{} lambda表达式作用是转换为函数式接口 lambda表达式捕获的值必须是最终变量,即不会再去改变值得变量 好复杂QAQ
- 内部类部分
- 使用内部类的原因
- 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据
- 内部类可以对同一个包中国的其他类隐藏起来
- 当想要定义一个回调函数且不想编写大量代码时,时用匿名内部类比较便捷
- 内部类不能有static方法
- 内部类中声明的所有静态域都必须是final
- 局部内部类:将内部类放在方法中,不能用public或者private进行修饰
- 匿名内部类 格式 new SuperType(){} 由于构造器的名字必须和类名相同,所以匿名类不能有构造器,需要将参数传递给超类构造器
- 静态内部类:当内部类不需要访问外围类对象的时候,需要使用静态内部类,静态内部类可以有静态域和方法
- 代理:利用代理可以在运行时创建一个实现了一组给定接口的新类(是真的不懂)在编译时无法确定需要实现哪个接口时使用
异常
- 子类方法中声明的受查异常不能比超类方法中生命的异常更通用
- 超类没有抛出异常,子类也不行
- finally语句
- 断言 assert 条件;/assert 条件:表达式
泛型程序设计
- 泛型方法可以写在泛型类中,也可以写在普通类中
- 可以对类型变量进行限定 统一用extends
- 多个限定中间用&
- 不能用基本类型实例化类型参数
- 运行时类型查询只适用于原始类型(instanceof)
- 不能创建参数化类型的数组
- 不能实例化类型变量 不能构造泛型数组
- 泛型类的静态上下文中的类型变量无效 禁止使用带有类型变量的静态域和方法
- 不能抛出或捕获泛型类的实例
- Pair通配符 Pair
Comments | NOTHING