java完整注释程序_Java注释也会被执行?

代码

public class Comment {

public static void main(String[] args) {

String str = "你好世界";

// \u000dstr="Hello World";

System.out.println(str);

}

}

输出:

Hello World

原因

查看反编译.class后的代码。发现编译器将\u000d后的注释换了一行,发现是\u000d对应的是Unicode中的换行符,即\r。因为Java支持Unicode进行编码(毫无可读性可言),所以编译器再处理Unicode时先转换字符。

public class Comment {

public Comment() {

}

public static void main(String[] args) {

String str = "你好世界";

str = "Hello World";

System.out.println(str);

}

}

延伸

虽然以下代码在IDEA中会提示错误信息:Cannot resolve symbol 'u000d',但不影响正常执行。

public static void main(String[] args) {

System.out.println(\u000d);

System.out.println('\u03C0');

double π = Math.PI;

System.out.println(\u03C0);

}

输出以下信息,发现变量π,可以用Unicode码中的\u03c0代替并正常输出Math.PI的值。

π

3.141592653589793

注意

将注释中的变量名str改为str2,编译时将得到以下错误信息:

Error:(8, 18) java: 找不到符号

符号: 变量 str2

位置: 类 Comment

结论

Java中的注释是肯定不会被执行的,只是编译器识别了\u000d转换成了换行符,将注释拆成了两句语句。

相关类

JDK的lib包下的tools.jar。IDEA可以在Project Structure中的Libraries中添加。

com.sun.tools.javac.parser.UnicodeReader

com.sun.tools.javac.parser.JavacParser

完整代码

public class Comment {

public static void main(String[] args) {

String str = "你好世界";

// \u000dstr="Hello World";

System.out.println(str);

System.out.println(\u000d);

System.out.println('\u03C0');

double π = Math.PI;

System.out.println(\u03C0);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值