Arrays工具类
方法是操作从某个下标到某个下标的片段时 末下标的值不改变 (排序 初始化等)
继承 父类与子类
静态成员 由类调用 如果创建对象person1.sta = 1 实际上编译为Person.sta = 1在子类中相当于隐式继承父类的无参构造 也可以用super显示 super(); 若子类中有有参构造且与父类有参构造的参数列表相同 不会隐式继承父类有参 只能通过super调用super(形参) 且只能在构造方法的第一句在子类中使用super.成员变量等访问修改了父类的成员变量值 相当于给子类模板提供了默认值 创建父类对象是无影响的使用对象.getClass() 得到的class1 与原类比如Person 不一样 Person.sta 可以直接调用类成员 但class1.sta报错 class1是Person的全限定路径
向下造型
判断父类变量是否属于子类类型 有两种方法 instanceof 和 getClass()若是用子类变量判断是否属于父类类型 instancof 是true 而getClass() 是false 因为其比较的是字节码文件方法调用的匹配顺序当前类对象变量.方法(形参对象类型)形参对象类型:当前类>父类>父类的父类>object方法匹配顺序:(若是当前变量是当前类子对象模板)当前类子类重写方法> 当前类方法>父类方法>object
方法关键字
final的内联机制当我们调用方法时,实际上是将程序的执行转移到该方法所在的内存地址上,将该方法执行完后,再返回到执行该方法前的位置内联函数可近似于宏定义。 用空间换时间。
枚举
枚举类型都是隐式继承了enum类 所以如果不重写toString方法 直接打印对象常量就是对象常量的名字
常用类
Integer 创建对象 也不能Integer(‘A’) 不能自动转换为65 不可解析的异常BigInteger 最好 BigInteger(String val) 构造 否则可能精度丢失BigDecimal的divide方法 防止精度丢失 BigDecimal divide (BigDecimal divisor,RoundingMode roundingMode) 注意:除数不能是数字 必须是该类型对象 RoundingMode是枚举类 使用应该是枚举类名.字段 ,比如RoundingMode.CEILING 取舍方式BigDecimal divide (BigDecimal divisor,int scale,int roundingMode) 注意:scale表示小数位数 roundingMode 是常量 应该用类.常量 比如BigDecimal.ROUND_DOWNString类创建对象 ,自动装箱,会在常量池创建对象,new 堆中创建对象 要是常量池有会把常量池地址给堆中的对象 所以地址不同 s=“A”s1= “A”+“BC”;s2=“A”+“BC”;s3=s+“BC”,其中s1=s2 s1!=s3 因为s3中有变量会直接在堆中创建对象String类中s.indexOf(String s2) s2 可以是字符串且必须连续s.lastIndexOf(String s2,int fromIndex) 是从指定下标开始往前找 包括该下标,且这个下标可以越界String类方法返回值类型是String基本都创建了新对象 而StringBuilder若是返回StringBuilder类型 基本都是修改了自身 可以继续调用方法
IO流
1.操作同一个文件,比如properties的时候,写出流如,FileWriter(File file) 默认是false, FileWriter writer = new FileWriter(“F:\Demo.properties”);FileWriter 打开文件的方式默认是覆盖,就是一旦执行了上面这句,那么原有文件中的内容被清空所以在还没有p.load(in);加载Properties的时候就把文件清空了 所以要load读入之后再写,才能保留之前的键值对