Java复习
1、基础语法
标识符命名规范:以字母、_、$开头的字母字符(仅仅是 _ $)数字串
8种基本数据类型:(内存中的最小逻辑存储单元)
整数: byte (1B) short(2B) int(4B) long(8B)
小数:float(4B) double(8B)
非数值: char(2B) boolean(1B)
引用数据类型:除了上述的8种基本数据类型外的其他类型
(变量后放的不是值,是值的引用地址)
三元(目)运算符: 布尔表达式 ? 为true时结果 : 为false时结果
移位运算(结果自动升级为int)
<< N 左移N位: 向左移动指定N位数,右边补0 (相当于 * 2)
>> N 带符号右移: 向右移动指定N位,左边补符号位 (相当于正数 /2)
>>> N 无符号右移: 向右移动指定N位,左边0 (相当于正数 / 2)
类型升级带来的强制类型转换问题:
1、byte类型变量运算后的结果为int类型;
2、char类型变量运算后的结果为int类型;
不规则数组:
上三角:
//定义了5个一维数组
int[][] a = new int[5][];
//循环定义每行的元素个数
for(int i; i<a.length; i++){
a[i] = new int[i+1];
}
下三角:
//定义了5个一维数组
int[][] a = new int[5][];
//循环定义每行的元素个数
for(int i; i<a.length; i++){
a[i] = new int[a.length-i];
}
int[] a = new int[0];
int[] b = null;
String:
String类中包含了许多操作当前字符串的方法:
equals(),length(),charAt(),compareTo(),indexOf(),lastIndexOf(),substring(start, end), replace(), replaceAll(), split(“limit”)、trim()、 toUpperCase()、toLowerCase() 等
String、StringBuffer、StringBuilder区别:
String不可变、StringBuffer和StringBuilder可变
StringBuffer线程安全(synchronized)、StringBuilder非线程安全;
final:
1- 方法中修饰常量
2- 方法中修饰InnerClass
3- 修饰方法为最终方法,不能被覆盖
4- 修饰属性为常量属性
5- 修饰类为最终类,不能被继承
finally:
try代码段后,必须被执行的代码段修饰,一般用来关闭流,保存必要信息等不可缺少的操作
finalize:
是Object定义的protected方法,每个对象都有,一般在对象被销毁前被JVM调用。
但是注意:如果JVM轮巡销毁对象前,进程就结束了,则此方法无法被调用。
如果希望某个对象销毁前要做的动作,而且其运行环境允许(不是立即结束进程),可以将动作代码写到finalize中
重载:在一个类中,同名不同参(形参),称为重载;重载的意义:给方法的使用者提供遍历,不用记忆太多的功能相似的方法名称;
重写(方法的覆盖):子类继承父类的方法,但是被继承的方法对子类不适用,则可以定义与父类被继承方法,同名、同参、同返回类型的方法加以覆盖,则子类对象只能调用子类定义的覆盖方法,而无法调用父类的被覆盖方法;
注意:子类覆盖方法的访问规则要小于等于父类被覆盖方法的访问规则
子类覆盖方法的显性异常的再抛出(throws 异常列表)异常类型范围,要小于等于父类显性再抛出异常的范围,原因是多态(要用父类方法签名 获取 子类方法执行体)
多态:父类对象名获取了子类对象的引用,则父类对象调用被覆盖方法时,只能调用子类定义的覆盖方法,而无法调用父类自己定义的被覆盖方法。
继承的意义:扩展功能
接口和抽象类的区别:
1- 接口没有实现的方法(jdk1.8以后出现默认实现的方法),接口没有成员属性,没有构造器;
抽象类可以有抽象或者实现的方法,可以有成员属性,可以有构造器;
2- 接口为了实现预设算法的接入而出现的一种变相的类,如果有类需要预设算法,则接入接口,例如 Comparator接口 可以使用 Collections.sort() 排序算法
抽象类,对上层属性和算法做了规则,由子类进行具体实现,例如:AbstractList , ArrayList 用数组结构实现算法;LinkedList用链表结构实现算法
静态导入:
导入其他类中静态成员,其后可以像使用自己定义的静态成员一样,不需要加类限定;
import static com.yq.mvn06.tset.sub.TestClass.FINAL_VAL;
static {
int x = FINAL_VAL;
}
throw和throws的区别:
throw是手动抛出异常对象,格式: throw 异常对象;
throws 是在方法签名上说明这个方法体中可能抛出的异常;(显性再抛出)
try代码段的结构:
try{
...
}catch( Exception e){
...
}
try{}finally{
...
}
try{
...
}catch( Exception e){
...
}finally{
...
}
自动打包注意: 如果自动打包,数值范围 -128~127之间使用预设的对象,否则才建立新对象
Integer i = 10;
Integer k = 10;
System.out.println(i == k); //结果为true
Integer i = 128;
Integer k = 128;
System.out.println(i == k); //结果为false
持续更呦····································································