常用类
Object: Java面向对象(Object)
所有的引用类型默认继承Object 即Object是所有引用类型的超级父类
Object中的属性和方法:
转型:
向上转型:
把子类转换为父类,属于自动类型转换,向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,通过父类引用变量无法调用子类特有的方法。
向下转型:
把父类转换为子类,必须强制类型转换。
强制转换:
只有确定该对象属于某个类型才能正确转换(成功运行),否则程序发生异常(ClassCastException)
Instanceof关键字:
instanceof关键字,用来确定一个对象属于该类型。
instanceof:运算符用于判断一个对象是否属于一个类或实现一个接口。
instanceof:运算符通常和强制类型转换结合使用,先通过instanceof进行类型判断,
再进行相应的强制类型转换,最后结果为Boolean类型:
final关键字:
修饰类:
使该类不能被继承 比如String (不想被继承时使用)
修饰方法:
使该方法不能被继承
修饰量:
使该属性不能被重新赋值 但可以修改内容
修饰不可变量:
修饰常量:
权限 static final 数据类型 对象名 = 值; ( 权限 final 类型 名字 ;)必须有!!! 必须赋予初始值 可以在静态代码块中初始化
抽象类:(abstract)
限制:
使用abstract修饰的类:抽象类不能被实例化、可以定义抽象方法
主要用于:
被继承与代码重用
抽象类的继承:
抽象类可以继承实体类
实体类继承抽象类,必须继承抽象类中的抽象方法
抽象类可以继承抽象类
注意:
抽象类一般使用Abstract修饰
抽象类不能用final修饰
抽象方法不能用final和private修饰
接口
定义:
接口interface 一个类通过继承接口的方式,从而来继承接口的抽象方法,不能继承类
作用:
用于规范子类的行为
方法:
接口中的方法默认使用public abstract修饰 不能使用其他访问权限修饰符
接口中可以使用静态的方法
只要是静态方法肯定有方法体,
属性:
接口中属性都是常量
默认使用public static final
实例化:
接口不能直接实例化对象 ,不能new构造方法
构造方法:
接口中没有构造方法
使用:
实体类实现接口:
使用implements类实现接口
实现类必须实现接口中所有抽象方法
可以多实现 用,隔开
抽象类实现接口:
可以不实现接口中的抽象方法
接口继承接口:
使用extends关键字继承 并且可以多继承 用,隔开
类继承接口:
使用implements关键字继承
注意:
接口不能使用final修饰
字符串String:
字符串的定义:
定义字符串对象后,内容不可变
对象的比较:
== 在比较引用类型中比较是否是同一对象 在基本数据类型中比较值是否一样
new出来的都是新对象:
字符串长度的获取:
Equals方法:
.Equals方法定义在Object中
在默认的equals方法中其本质还是this==object,继承来的equals无法满足两个对象内容的比较,所以我们需要重写Equals方法
重写Equals方法时需要注意确保类型是否一致
str中包含的方法:
获取字符数量:
charAt获取下表对应的字符串:
charAt获取字符串中所有字符:
字符串的截取:
1、charAt截取单个字符:
2、substring截取某个区间字符:
indexOf查找字符串出现的位置(下标):
indexOf与lastIndexOf的区别:
indexOf验证A串是否是B类的字串:
分割字符串:
split分割字符串:
以字符串中某个字符作为分割点
通过 . 分割字符串:
在正则表达式中 . 代表任意字符
trim去除字符串前后的空白位:
大小写转换:
+ 字符串拼接 :
字符串缓存 与 常量池:
常量编译优化:
在编译阶段就将常量表达式运算完成
intern方法:
str.intern(); 检查常量池中是否有对应的副本对象
* 有: 直接返回常量池中的副本对象
* 没有:复制对象放到常量池中 然后返回常量池中的副本对象
* 所以:只要 equals得到的结果为true A.equals(B) true
* 那么:A.intern()== B.intern() 就是true
中间量:
问:字符串拼接时产生中间两怎么解决?
答:因为字符串 + 拼接 , 会产生很多中间量,这些中间量会永久占用内存空间,尽量避免使用 + 拼接字符串的形式
解决方案,使用一个数组存储要拼接的数据,拼接完成后转换为字符串, 有效避免中间量生成。
StringBuilder 与StringBuffer:
字符串的追加:
基本数据类型的封装类型:
问:为什么需要封装?
答:Java为了达到万物皆对象的理念,每一个基本数据类型都提供了一个对应的封装类型
格式:
用法:
将字符串转换为int数值:
装箱和拆箱:
缓存:
注意:
常用类:
定义一个double类型的[0---1]的随机数: