专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
Java编程精选  ·  Java 中如何使用枚举来消除 if/else ·  16 小时前  
芋道源码  ·  疯传Java界,堪称最强! ·  昨天  
芋道源码  ·  30K ... ·  2 天前  
芋道源码  ·  Guava黑魔法:在日志脱敏场景下的奇遇 ·  2 天前  
芋道源码  ·  Spring Cloud Gateway ... ·  2 天前  
51好读  ›  专栏  ›  ImportNew

Java的常见误区与细节

ImportNew  · 公众号  · Java  · 2016-12-02 20:54

正文

请到「今天看啥」查看全文


public static void main(String[] args) {

Outer o = new Outer();

Outer.Inner i = o.new Inner();

i.innerPrint();

}

}

class Outer {

class Inner {

void innerPrint() {

System.out.println("Inner Print!");

}

}

}


在编译(javac Test3.java)这段代码的时候,编译器会报以下错误:Test.java:12: 错误: 类重复: com.laixintao.Test.Outer.Inner class Inner{ ^


4   Unicode转义字符处理的非常早,在解析程序之前。例如:


// char c1 = 'u00a';

// char c2 = 'u00d';


在程序中出现这两行代码编译报错。这两个Unicode码分别表示”换行”和”回车”,所以,在编译器编译的时候,代码是这样的:


// char c1 = '

';

// char c2 = '

';


5   Unicode码使用16位字符编码,在Java中用char类型来表示。现在Unicode已经扩展到一百万个字符,超出16位限制的成为增补字符。所有增补字符都不能用字符常量来表示。


6   当short,byte,char参加运算时,结果为int型,而非与较高的类型相同。如果变量是byte,short,byte类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围时,编译器就可以进行隐式的收缩转换。这种隐式的收缩转换是安全的,因为该收缩转换只适用于变量的赋值,而不适用于方法调用语句,即不适用于方法调用时的参数传递。(详见java中默认类型转换的小问题)


7   注意char类型,这是一个无符号类型。因此,char与short或char与byte之间的转换必须显示地使用类型转换。 从byte到char的转换为扩展收缩转换,该转换比较特殊,即先将byte扩展转换到int,然后再收缩到char。







请到「今天看啥」查看全文