对于一个之前学C++而后转向学Java的人来说,通过《Java核心技术》来学习Java无疑是一个很好的选择。因为每到Java与C++有一些值得解释的不同的时候,书中都会专门辟出一个C++注释的部分,帮助我们厘清二者在某些具体语法上的相似性与差异。以下内容是我现今初读《Java核心技术 卷1:基础知识》第八版的第3章的读书笔记,对于像我一样从C++转向Java的或许会有些帮助。
第3章 Java的基本程序设计结构
* 基本语法及约定
1.Java应用程序的全部内容都必须放置在类中。
2.类名通常采用以大写字母开头的名词,并且采用骆驼命名法(CamelCase)。
3.源代码的文件名必须与公有类的名字相同,并用.java为扩展名。
4.当使用java ClassName 运行编译程序时,Java虚拟机将从指定类的main方法开始执行,因此为了代码能够执行,在类ClassName的源代码中必须包含一个main方法。
5.根据Java语言规范,main方法必须为public。
6.Java中除了C++中两种常用注释符外,还有/** */,可以用来自动生成文档。另外,/* */注释不能嵌套。
** 基本数据类型
1.相比C++,Java中多了一个byte类型,而且整型范围都是固定的。Java中没有任何无符号类型。整型值和布尔型(boolean)不能相互转换,因此Java中不会出现这样的麻烦:
if (x = 0)
{
// do something
}
而在C++中,这是可以编译运行的,只不过if判断条件总为false。
*** 常量与变量
1.变量名必须是一个以字母开头的有字母或数字组成的序列。在Java中,“字母”和“数字”可以是在某种语言中代表字母或数字的任何Unicode字符,如ä(德语中的字母)、π(希腊字母)。
2.在Java中,不区分变量的声明与定义。
3.在Java中,用关键字final声明常量,而某个常量若在多个方法中使用(即为类常量),则应当声明为static final,
类常量的定义位于main方法的外部。const是Java的保留关键字,但目前并没有使用。
**** 运算符
1.&和|应用于布尔值时,得到的结果也是布尔值,只是不按短路径求值的方式。
2.相比C++,Java中多了一个>>>运算符,作用为用0填充高位。没有<<<运算符。
3.与C++不同,Java中不使用逗号运算符。
***** 字符串
1.当将一个字符串与一个非字符串进行拼接时,后者被转换为字符串,在Java中,任何一个Java对象都可以转换为字符串。
2.Java语言中字符串的连接重载了“+”运算符,但没有重载其他运算符。
****** 控制流程
1.在Java中,不能在嵌套的两个块中声明同名的变量;没有goto语句,但break语句可以带标签。
2.switch语句中的case标签必须是整数或者枚举常量,不能测试字符串。
3.相比C++,Java中增加了一条带标签的break语句,用于跳出多重嵌套的循环,这个标签必须放在希望跳出的最外层循环之前,并且紧跟着一个冒号。执行时,程序将跳转到带标签的语句块末尾。
4.continue语句用于while循环中,可以将控制转移到最内层循环的首部;用于for循环中,将跳到循环的“更新”部分;另外,带标签的continue语句,将跳到与标签匹配的循环首部。
******* 数组
1.两种形式声明数组,形如1)int[] a; 2)int a[];
2.Foreach循环:
for (variable : collection)
statement
3.Java中,允许数组长度为0,并且数组长度为0与null不同;Java中的[]运算符被预定义为检查数组边界,而且没有指针运算,即不能通过a加1得到数组的下一个元素。
4.Java应用程序的main方法中,程序名并没有存储在args数组中。
5.在Java中,允许将一个数组变量拷贝给另一个数组变量,这时,两个变量将引用同一个数组。