- 浏览: 185727 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhulin0504:
必须赞
浅谈Java内部类的四个应用场景 -
zhmy0129:
想打印 表起来。
软件工程师的7年总结 -
RonQi:
lionkingzw 写道pop1030123 写道wly71 ...
java调用python -
linchixiong:
有种茅塞顿开的感觉,感谢啊~~
浅谈Java内部类的四个应用场景 -
hnzhoujunmei:
为什么没有完整的源码啊?
用 Java 通过串口发送手机短信
下面的程序用一个方法对字符进行了分类。这个程序会打印出什么呢?
public class Classifier {
public static void main(String[] args) {
System.out.println(
classify('n') + classify('+') + classify('2'));
}
static String classify(char ch) {
if ("0123456789".indexOf(ch) >= 0)
return "NUMERAL ";
if ("abcdefghijklmnopqrstuvwxyz".indexOf(ch) >= 0)
return "LETTER ";
/* (Operators not supported yet)
if ("+-*/&|!=" >= 0)
return "OPERATOR ";
*/
return "UNKNOWN";
}
}
如果你猜想该程序将打印LETTER UNKNOWN NUMERAL,那么你就掉进陷阱里面了。这个程序连编译都通不过。让我们再看一看相关的部分,这一次我们用语法高亮显示:
Java代码
1. if ("abcdefghijklmnopqrstuvwxyz".indexOf(ch) >= 0)
2. return "LETTER ";
3. /* (Operators not supported yet)
4. if ("+-*/&|!=" >= 0)
5. return "OPERATOR ";
6. */
7. return "UNKNOWN";
8. }
9. }
if ("abcdefghijklmnopqrstuvwxyz".indexOf(ch) >= 0)
return "LETTER ";
/* (Operators not supported yet)
if ("+-*/&|!=" >= 0)
return "OPERATOR ";
*/
return "UNKNOWN";
}
}
正如你之所见,注释在包含了字符*/的字符串内部就结束了,结果使得程序在语法上变成非法的了。我们将程序中的一部分注释出来的尝试之所以失败了,是因为字符串字面常量在注释中没有被特殊处理。
更一般地讲,注释内部的文本没有以任何方式进行特殊处理[JLS 3.7]。因此,块注释不能嵌套。请考虑下面的代码段:
Java代码
1. /* Add the numbers from 1 to n */
2. int sum = 0;
3. for (int i = 1; I <= n; i++)
4. sum += i;
/* Add the numbers from 1 to n */
int sum = 0;
for (int i = 1; I <= n; i++)
sum += i;
现在假设我们要将该代码段注释成为一个块注释,我们再次用粗体字突出整个注释:
Java代码
1. /*
2. /* Add the numbers from 1 to n */
3. int sum = 0;
4. for (int i = 1; I <= n; i++)
5. sum += i;
6. */
/*
/* Add the numbers from 1 to n */
int sum = 0;
for (int i = 1; I <= n; i++)
sum += i;
*/
正如你之所见,我们没有能够将最初的代码段注释掉。好在所产生的代码包含了一个语法错误,因此编译器将会告诉我们代码存在着问题。
你可能偶尔看到过这样的代码段,它被一个布尔表达式为常量false的if语句禁用了:
Java代码
1. //code commented out with an if statement - doesn't always work!
2. if (false) {
3. /* Add the numbers from 1 to n */
4. int sum = 0;
5. for (int i = 1; i <= n; i++)
6. sum += i;
7. }
//code commented out with an if statement - doesn't always work!
if (false) {
/* Add the numbers from 1 to n */
int sum = 0;
for (int i = 1; i <= n; i++)
sum += i;
}
语言规范建议将这种方式作为一种条件编译技术[JLS 14.21],但是它不适合用来注释代码。除非要被禁用的代码是一个合法的语句序列,否则就不要使用这项技术。
注释掉一个代码段的最好的方式是使用单行的注释序列。大多数IDE工具都可以自动化这个过程:
Java代码
1. //code commented out with an if statement - doesn't always work!
2. // /* Add the numbers from 1 to n */
3. // int sum = 0;
4. // for (int i = 1; i <= n; i++)
5. // sum += i;
//code commented out with an if statement - doesn't always work!
// /* Add the numbers from 1 to n */
// int sum = 0;
// for (int i = 1; i <= n; i++)
// sum += i;
总之,块注释不能可靠地注释掉代码段,应该用单行的注释序列来代替。对语言设计者来说,应该注意到可嵌套的块注释并不是一个好主意。他们强制编译器去解析块注释内部的文本,而由此引发的问题比它能够解决的问题还要多。
发表评论
-
apache commons-collections BagUtils
2010-01-20 12:55 1207import java.util.Iterator; i ... -
bug2
2010-01-13 14:01 1564010-1-12 15:33:59 org.apache.ca ... -
Apache Commons
2010-01-13 11:28 1634Apache Commons包含了很多开源的工具,用于解决平时 ... -
大文件上传
2010-01-12 15:35 1279package com.fuyou; import ja ... -
replaceAll 大小写敏感
2010-01-11 10:58 1362public class Test{ public sta ... -
jar文件运行时:Failed to load Main-Class manifest attribute from ......解决办法
2009-12-22 14:37 1809打包好的jar文件双击运行时报: Failed to load ... -
转载
2009-12-13 00:11 7651. Java语言基础 谈到Java语言基础学习的书 ... -
HttpSession和Hibernate里的Session的区别
2009-12-09 21:46 1553HttpSession和Hibernate里的Session的 ... -
java 10
2009-12-09 16:53 7751、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一 ... -
bug
2009-12-02 09:23 1017Error 503 Service Unavailable 一 ... -
PO BO VO DTO POJO DAO概念及其作用(转)
2009-11-29 20:17 1037引用J2EE开发中大量的专 ... -
JAVA里的PING和TELNET
2009-11-29 16:45 1251JAVA里的PING是在JDK 1.5后用了新的函数isrea ... -
awt swing swt
2009-11-27 14:00 865特性 AWT Swing SWT实现机制 awt采用最小公 ... -
thread local
2009-11-26 13:40 906在利用Hibernate开发DA ... -
用 Java 通过串口发送手机短信
2009-11-26 11:03 2066引用JAVA_HOME是 C:\jdk1.6.0_02 Pat ... -
下载链接直接打开
2009-11-26 11:01 2083关键字: 点击pdf/word等链接时时, 直接打开而不是下载 ... -
iframe 防止挂马的问题
2009-11-26 10:59 920据侠客站长站了解,现在流行的CMS系统中,挂马主要有以下几种 ... -
file copy 4 methods
2009-11-26 10:49 823使用 java 进行文件拷贝 相信很多人都会用,,不过效率上是 ... -
mobile ip identify card interface
2009-11-26 10:48 8941. 查询手机:http://www.yodao.com/sm ... -
5 module
2009-11-26 10:45 738一,最好模板 www.bestmoban.com 提供免费 ...
相关推荐
java java_leetcode题解之Beautiful Array.java
《代码之美》(Beautiful Code) 是一本集合了众多软件开发专家的经验与智慧的书籍,它深入探讨了如何通过精心设计和优雅实现来创造出优秀的代码。这本书的英文版为程序员们提供了一个独特的视角,展示了不同领域的...
【标题】"chu1204505056-vue-admin-beautiful-master_java_" 指示了一个项目,该项目结合了Java后端技术和基于Vue的前端框架,特别是Vue的两个不同版本——Vue3.x和Vue2.x,分别与Ant Design Vue(antdv)和Element ...
java 的相对简单性和大部分的新语言一样,它的简单性,一部分是幻觉,一...Small is beautiful, but simple ain’t easy 。 蓝领不是贬低的意思,主要是 java 诞生之初,James Gosling 希望树立一个 java 门槛低的形象
自己写的一个java的猜数字游戏,跟大家交流学习 这里不能贴图啊,能贴图就beautiful了
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
Java 中的 StringBuilder 用法详解 Java 中的 StringBuilder 是一个可变的字符串对象,主要用于字符串的操作和修改。下面将详细介绍 StringBuilder 的用法和常用方法。 StringBuilder 的创建 可以使用重载的构造...
5. **《Beautiful Code》英文版(beautiful-code-en)**:这是一本由多位知名程序员撰写的合集,讨论了如何写出优雅、高效的代码。书中可能包含各种编程语言的实例,但可能特别强调了Java编程中的设计模式、重构、算法...
在Java编程中,`StringBuilder`类是用来处理字符串的可变对象,相较于`String`类,它的主要优势在于能够在不创建新对象的情况下对字符串进行修改,从而提高了性能,尤其是在需要进行大量字符串操作,如循环连接字符...
美丽的Java编程 要求 1. Java 11 2. Maven 3.x.x 设置 1. Git克隆 git clone ...cd beautiful-java-programming-sample/ mvn clean install 模组 1. 2.
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
综上所述,这个项目是一个基于Vue 3.0和Ant Design Vue的前端管理平台,它对`good_luck/vue-admin-beautiful`进行了二次封装,增强了与Java后端的集成,提供了丰富的业务组件,并且利用Vue 3.0的新特性提升了开发...
Java中的StringBuilder是一个非常重要的类,它位于java.lang包中,被广泛应用于字符串操作中。StringBuilder的主要作用是提供一个可变的字符序列,用以替代不可变的String,以提高性能和效率。当需要频繁修改字符串...
在Android开发领域,"BeautifulApp"是一个以"最美应用"为设计灵感的开源项目,它展示了如何使用现代的Android开发框架和技术来构建一个高质量、优雅的应用程序。该项目遵循Model-View-Presenter(MVP)架构模式,...