智乐兔

Java基础

  • Java常见疑难问题-数值表达式1

    Java常见疑难问题-数值表达式1

    5. 窄数字类型提升至宽类型时使用符号位扩展还是零扩展System.out.println((int)(char)(byte)-1);// 65535结果为什么是65535而不是-1? 窄的整型转换成较宽的整型时符号扩展规则:如果最初的数值类型是有符号的,那么就执行符号扩展(即如果符号位为1,则扩展为1,如果为零,则扩展为0);如果它是char,那么不管它将要被提升成什么类型,都执行零扩展。 了解上面的规则后,我们再来看看迷题:因为byte是有符号的类型,所以在将byte数值-1(二进制为:11111111)提升到char时,会发生符号位扩展,又符号位为1,所以就补8个1,最后为16个1;然后 ...

    查看全文

  • Java常见疑难问题-应用17

    Java常见疑难问题-应用17

    55. thread. isInterrupted()与Thread.interrupted()public class SelfInerruption {public static void main(String[] args) {Thread.currentThread().interrupt();if (Thread.interrupted()) {// Interruped:falseSystem.out.println(“Interruped:” + Thread.interrupted());} else {System.out.println(̶ ...

    查看全文

  • Java常见疑难问题-数值表达式2

    Java常见疑难问题-数值表达式2

    12. 一个数永远不会等于它自己加1吗?i==i+1一个数永远不会等于它自己加1,对吗?如果数字是整型,则对;如果这个数字是无穷大或都是浮点型足够大(如1.0e40),等式就可能成立了。 Java强制要求使用IEEE 754浮点数算术运算,它可以让你用一个double或float来表示无穷大。 浮点型分为double型、float型。 无穷分为正无穷与负无穷。 无穷大加1还是无穷大。 一个浮点数值越大,它和其后继数值之间的间隔就越大。 对一个足够大的浮点数加1不会改变它的值,因为1不足以”填补它与其后者之间的空隙”。 浮点数操作返回的是最接近其精确数学结果的浮点数值。 ...

    查看全文

  • Java常见疑难问题-应用18

    Java常见疑难问题-应用18

    58. Hash集合序列化问题class Super implements Serializable{// HashSet要放置在父类中会百分百机率出现// 放置到子类中就不一定会出现问题了final Set set = new HashSet();}class Sub extends Super {private int id;public Sub(int id) {this.id = id;set.add(this);}public int hashCode() {return id;}public boolean equals(Object o) {return (o instanceo ...

    查看全文

  • Java常见疑难问题-数值表达式3

    Java常见疑难问题-数值表达式3

    16. Math.abs结果一定为非负数吗?System.out.println(Math.abs(Integer.MIN_VALUE));// -2147483648上面的程序不会输出2147483648,而是-2147483648,为什么? 其实我们看一下Math.abs源码就知道为什么了,源码:(a < 0) ? -a : a;,结合上面那个迷题,我们就发现-Integer.MIN_VALUE= Integer.MIN_VALUE,所以上面的答案就是最小整数自己。 另外我们也可以从API文档看到对Math.abs()方法的解释:如果参数等于Integer.MIN_VALUE 的值(即能够 ...

    查看全文

  • Java常见疑难问题-应用19

    Java常见疑难问题-应用19

    60. 编译期常量表达式第一个PrintWords代表客户端,第二个Words代表一个类库:class PrintWords {public static void main(String[] args) {System.out//引用常量变量.println(Words.FIRST + ” “+ Words.SECOND + ” “+ Words.THIRD);}}class Words {// 常量变量public static final String FIRST = “the”;// 非常量变量public sta ...

    查看全文

  • Java常见疑难问题-字符串4

    Java常见疑难问题-字符串4

    19. char类型相加System.out.println(‘a’ + ‘A’);//162上面的结果不是 aA ,而是 162。当且仅当+操作符的操作数中至少有一个是String类型时,才会执行字符串连接操作;否则,执行加法。如果要连接的数值没有一个是字符串类型的,那么你可以有几种选择:预置一个空字符串(”” + ‘a’ + ‘A’);将第一个数值用String.valueOf()显示地转换成一个字符串(String.valueOf(‘a’) + ...

    查看全文

  • Java常见疑难问题-字符串5

    Java常见疑难问题-字符串5

    25. 一段程序的三个BugRandom rnd = new Random();StringBuffer word = null;switch (rnd.nextInt(2)) {case 1:word = new StringBuffer(‘P’);case 2:word = new StringBuffer(‘G’);default:word = new StringBuffer(‘M’);}word.append(‘a’);word.append(‘i’);word.a ...

    查看全文

  • Java常见疑难问题-异常6

    Java常见疑难问题-异常6

    26. finally与中断//该方法返回falsestatic boolean f() {try {return true;} finally {return false;}} 不要用return、break、continue或throw来退出finally语句块,并且千万不要允许受检查的异常传播到finally语句块之外。也就是说不要在finally块内终止程序,而是执行完finally块后,要将控制权移交给try块,由try最终决定怎样结束方法的调用。 对于任何在finally语句块中可能抛出的受检查异常都要进行处理,而不是任其传播,下面流拷贝程序在关闭流时没有防止异常的传播,这会有问题 ...

    查看全文

  • Java常见疑难问题-异常7

    Java常见疑难问题-异常7

    27. catch捕获异常规则捕获RuntimeException、Exception或Throwable的catch语句是合法,不管try块里是否抛出了这三个异常。但如果try块没有抛出或不可能抛出检测性异常,则catch不能捕获这些异常,如IOException异常:public class Test {public static void main(String[] args) {try{//…}catch (Exception e) { }catch (Throwable e) { } /* !! 编译出错try{//…}catch (IOException e ...

    查看全文

  • Java常见疑难问题-异常8

    Java常见疑难问题-异常8

    30. System.exit()与finallytry {System.out.println(“Hello world”);System.exit(0);// 或者使用Runtime退出系统// Runtime.getRuntime().exit(0);} finally {System.out.println(“Goodbyte world”);}上面的程序会打印出”Goodbyte world”吗?不会。 System.exit将立即停止所有的程序线程,它并不会使finally语句块得到调用,但是它在停止VM之前会 ...

    查看全文

  • Java常见疑难问题-类9

    Java常见疑难问题-类9

    34. 参数兼容的方法重载public class Confusing {private Confusing(Object o) {System.out.println(“Object”);}private Confusing(double[] dArr) {System.out.println(“double array”);}public static void main(String[] args) {new Confusing(null);}}上面的程序打印的是”double array”,为什么? null可代表 ...

    查看全文

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微