1. &与&&的区别
短路功能展示:
&&:
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类
Collection与Collections
Array与Arrays
6.Java中集合类
Java 集合概览
7.抽象类与接口有什么区别?
Java 抽象类与接口
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 exceptionreturn -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 exceptionSystem.out.println(e);}}运行结果:java.lang.NullPointerException
要铭记在心;每天都是一年中最美好的日子