智乐兔

企业应用

  • 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可代表 ...

    查看全文

  • Java常见疑难问题-类10

    Java常见疑难问题-类10

    36. 属性只能被隐藏class P {public String name = “P”;} class S extends P {// 隐藏父类的name域,而不像方法属于重写private String name = “S”;} public class Test {public static void main(String[] args) {// !! S.name is not visible// !! System.out.println(new S().name);// 属性不能被重写,只是被隐藏,所以不具有多态性为System.o ...

    查看全文

  • Java常见疑难问题-类11

    Java常见疑难问题-类11

    39. 重写、隐藏、重载、遮蔽、遮掩重写:一个实例方法可以重写在其超类中可访问到的具有相同签名的所有实例方法,从而能动态分派,换句话说,VM将基于实例的运行期类型来选择要调用的重写方法。重写是面向对象编程技术的基础。public class P{public void f(){}}class S extends P{public void f(){}//重写} 重写时异常要求:? 如果父类方法抛出的是捕获型异常,则子类也只能抛出同类的捕获型异常或其子类,或不抛出。? 父类抛出捕获型异常,子类却抛出运行时异常,这是可以,因为抛出运行时就相当于没有抛出任何异常。? 如果父类抛出的是非捕获型异常,则 ...

    查看全文

  • Java常见疑难问题-类12

    Java常见疑难问题-类12

    40. 构造器中静态常量的引用问题class T {// 先于静态常量t初始化,固可以在构造器中正常使用private static final int y = getY();/** 严格按照静态常量声明的先后顺来初始化:即t初始* 化完后,才初始化后面的静态常量j,所以构造器中* 引用后面的静态常量j时,会是0,即内存清零时的值*/public static final T t = new T();// 后于静态常量t初始化,不能在构造器中正常使用private static final int j = getJ();private final int i; static int getY( ...

    查看全文

  • Java常见疑难问题-类13

    Java常见疑难问题-类13

    41. instanceof与转型System.out.println(null instanceof String);//falseSystem.out.println(new Object() instanceof String);//false//编译能通过System.out.println((Object) new Date() instanceof String);//false//!!程序不具有实际意义,但编译时不能通过//!!System.out.println(new Date() instanceof String);//!!运行时抛ClassCastException,这 ...

    查看全文

  • Java常见疑难问题-类14

    Java常见疑难问题-类14

    44. 请使用引用类型调用静态方法public class Null {public static void greet() {System.out.println(“Hello world!”);} public static void main(String[] args) {((Null) null).greet();}}上面程序运行时不会打印NullPointerException异常,而是输出”Hello world!”,关键原因是:调用静态方法时将忽略前面的调用对象或表达示,只与对象或表达式计算结果的类型有关。 在调用静态方法时,一定 ...

    查看全文

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

    Java常见疑难问题-应用15

    47. 不可变的引用类型BigInteger total = BigInteger.ZERO;total.add(new BigInteger(“1”));total.add(new BigInteger(“10”));System.out.println(total);//0上面程序的结果为11吗?答案是0。 BigInteger实例是不可变的。String、BigDecimal以及包装类型:Integer、Long、Short、Byte、Character、Boolean、Float和Double也是如此。对这些类型的操作将返回新的实例。 不 ...

    查看全文

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

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

    1. 奇偶判断不要使用 i % 2 == 1 来判断是否是奇数,因为i为负奇数时不成立,请使用 i % 2 != 0 来判断是否是奇数,或使用高效式 (i & 1) != 0来判断。2. 小数精确计算System.out.println(2.00 -1.10);//0.8999999999999999上面的计算出的结果不是 0.9,而是一连串的小数。问题在于1.1这个数字不能被精确表示为一个double,因此它被表示为最接近它的double值,该程序从2中减去的就是这个值,但这个计算的结果并不是最接近0.9的double值。一般地说,问题在于并不是所有的小数都可以用二进制浮点数精确表示 ...

    查看全文

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

    Java常见疑难问题-应用16

    51. 静态导入的优先权import static java.util.Arrays.toString;import java.util.Arrays;public class T {public static void main(String[] args) {prt(1, 2, 3);}static void prt(Object… args) {// 自身继承至Object类的toString的优先级高于静态导入的方法//!! System.out.println(toString(args));//不能编译System.out.println(Arrays.toString ...

    查看全文

  • 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(̶ ...

    查看全文