21天概览Java面试知识之基础篇

1. &与&&的区别

  • &是既可是逻辑运算符也可作为位运算符,&&只能是逻辑运算符
  • &&具备短路功能(如果第一个表达式为false,则不再计算第二个表达式),&做逻辑运算符时,不具备短路功能
  • 当两边的表达式不是布尔表达式时,&表示按位与操作
短路功能展示:
&&:
int a = 1;
int b = 2;

if(a==2 && (b=4)==4){
}
System.out.println(a+"--"+b);
打印结果:1--4
&:
int a = 1;
int b = 2;

if(a==2 & (b=4)==4){	
}
System.out.println(a+"--"+b);
打印结果:1--2

2.交换两个数的值

目前我知道的有四种写法

  • 根据java的语言特性,一句代码即可交换
int a = 1;
int b = 2;
a = a + b - (b = a);//a = b +(b = a)*0;
System.out.println(a+"-"+b);
  • 通过加减法交换
int a = 1;
int b = 2;
a = a + b;
b = a - b;
a = a - b;

System.out.println(a+"-"+b);
  • 通过中间值交换
int a = 1;
int b = 2;

int c = b;
b = a;
a = c;

System.out.println(a + "-" + b);
  • 使用位操作交换
int a = 1;
int b = 2;

a = b ^ a;
b = a ^ b;
a = b ^ a;

System.out.println(a + "-" + b);

3.String,StringBuilder,StringBuffer的区别

  • 这三者都是final型的,即不能被继承
  • StringBuilder与StringBuffer继承自同一父类AbstractStringBuilder
  • StringBuilder是非线程安全的,StringBuffer和String是线程安全的
  • 这三者内部都是用cha[]来存放值的,只是String的是final型,也就是说,但试图修改String变量指向的对象值时,实际上是生成了新的String对象,并让String变量指向新对象,于是造成了String的值可修改的假象

4.final,finalize,finally的区别

请参考我写的这篇博文: final finally finalize的区别

5.java中的各种Object和Object-s类

6.Java中集合类

7.抽象类与接口有什么区别?

8.try/catch/finally结构

  • 当try中有return时,finally中的代码是否会执行?什么时候执行?
	public static void main(String[] args) {
		
		System.out.println((new Test()).test());
	}

	public int test() {
		int i = 1;

		try {
			i--;
			return i;
		} catch (Exception e) {
			// TODO: handle exception
			return -1;
		} finally {
			i = i + 1;
			System.out.println(i);
		}
	}

运行结果为:1  0

可以看出,当运行到return之后,i的值被保存起来,再接着执行finally中的代码,完成后,返回保存的运行结果。也就是说finally中的代码对函数的执行结果是没有影响的。

  • java中的throw,throws是什么意思?
throw表示抛出异常
throws表示捕获并向外抛出异常
	public static void main(String[] args) {
		
		(new Test()).test(1);
	}

	public void test(){
		throw new NullPointerException();
	}
	
	public void  test(int i)throws NullPointerException{
		try {
			test();
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println(e);
		}
	}

运行结果: java.lang.NullPointerException
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值