Java面试复习

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

持续更呦····································································

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李鑫海。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值