Java核心技术(原书第8版)卷I_基础知识简要摘要(一)

Java核心技术(原书第8版)卷I_基础知识简要摘要(一)

1.javac程序是一个Java编译器。它将文件Welcom.java编译成Welcom.class,并发送到Java虚拟机。虚拟机执行编译器存放在class文件中的字节码。

2.类是构建所有Java应用程序和applet的构建块。Java应用程序中的全部内容都必须放置在类中。

3.关键字class后面紧跟类名。Java中定义类名的规则很宽松。名字必须以字母开头,后面可以跟字母和数字的任意组合。长度基本上没有限制。但是不能使用Java保留字(例如public或class)作为类名。

4.从类名FirstSample可以看出,标准的命名规范为:类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写(这种在一个单词中间使用大写字母的方式称为骆驼命名法。以其自身为例,应该写成CamelCase)。

5.运行编译程序时,Java虚拟机将从指定类中的main方法开始执行(这里的“方法”就是Java中所说的“函数”),因此为了代码能够执行,在类的源文件中必须包含-一个main方法。 当然,也可以将用户自定义的方法添加到类中,并且在main方法中调用它们。

6.在通常情况下,int类型最常用。但如果表示星球上的居住人数,就需要使用long类型了。byte和short类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。

7.在Java中,所有的数值类型所占据的字节数量与平台无关。注意,Java没有任何无符号类型(unsigned type)。

8.警告:浮点数值不适用于禁止出现舍入误差的金融计算中。例如,命令System.out printn(2.0-1.1)将打印出989999999999…而不是人们想像的0.9。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十进制无法精确地表示1/3一样。”如果需要在数值计算中不含有任何舍入误差,就应该使用BigDecimal类。

9.char类型用于表示单个字符。 通常用来表示字符常量。例如: 'A’是编码为65所对应的字符常量。与"A"不同,"A"是一个包含字符A的字符串。

10.变量名必须是一个以字母开头的由字母或数字构成的序列。另外,不能将变量名命名为Java保留字,但是可以包含保留字和关键字。可以在一行中声明多个变量,不提倡使用这种风格。逐一声明每-一个变量可以提高程序的可读性。

11.声明一个变量之后,必须用赋值语句对变量进行显式初始化,在Java中,变量的声明尽可能地靠近变量第一次使用的地方, 这是一-种良好的程序编写风格。

12.关键字final表示这个变量只能被赋值1次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用大写。在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final设置一个类常量。

13.需要注意,类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为public,那么其他类的方法也可以使用这个常量。

14.>>>运算符将用0填充高位; >>运算符用符号位填充高位。没有<<运算符。
要想计算一个数值的平方根,可以使用sqrt方法:
double x = 4;
double y = Math. sqrt(x);
System.out.println(y); // prints 2.0

15. println方法和sqrt方法存在微小的差异。println方法操作一个定义在System类中的System.out对象。但是,Math类中的sqrt方法操作的不是对象,这样的方法被称为静态方法。

16.double y = Math,pom(x, a); 将y的值设置为x的a次幂(x)。 pow方法有两个double类型的参数,其返回结果也为double类型。*
Java核心技术(原书第8版)卷I_基础知识简要摘要(一)
17.强制类型转换通过截断小数部分将浮点值转换为整型。

Java核心技术(原书第8版)卷I_基础知识简要摘要(一)
18. 子串
String类的substring方法可以从一个较大的字符串提取出一个子串。例如:
String greeting = “Hello”;
String s = greeting. substring(0, 3);
创建了一个由字符“Hel”组成的字符串。substring方法的第二个参数是不想复制的第一一个位置。这里要复制位置为0、1和2 (从0到2,
包括0和2)的字符。在substring中 从0开始计数,直到3为止,但不包含3。
substring的工作方式有-个优点:容易计算子串的长度。字符串s.subtring(a, b)的长度为a。例如,子串“Hel”的长度为3-0=3。

19.由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串,
如同数字3永远是数字3一样,字符串"Hello" 永远包含字符H、e、l、l和o的代码单元序列,而不能修改其中的任何一个字符。当然,可以修改字符串变量greeting,让它引用另外一个字符串,这就如同可以将存放3的数值变量改成存放4一样。
这样做是否会降低运行效率呢?看起来好像修改一一个代码单元要比创建一一个新字符串更加
简洁。答案是:也对,也不对。的确,通过拼接“He!” 和“p!”来创建一个新字符串 的效率确实不高。但是,不可变字符串却有一个优点:编译器可以让字符串共享。

为了弄清具体的工作方式,可以想像将各种字符串存放在公共的存储池中。字符串变量指
向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的
字符。//常量池的概念~~~

20.检测字符串是否相等
可以使用equals方法检测两个字符串是否相等。对于表达式:
s.equals(t)
如果字符串s与字符串t相等,则返回true;否则,返回false。 需要注意,s与t可以是字符串变量,
也可以是字符串常量。例如,下列表达式是合法的:
“Hello”.equals(greeting)
要想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。
“Hello”.equalsIgnoreCase(“hello”)一定不能使用“= =”运算符检测两个字符串是否相等!
这个运算符只能够确定两个字符串是否放置在同一个位置上。当然,如果字符串放置在同一个位置上,它们必然相等。但是,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。java中只有字符串常量是共享的,而“==”判断的是地址值。

21.java中代码点与代码单元的区别
代码点与代码单元:一个代码单元为16位二进制,一个代码点为一个或两个16位二进制。即一个代码点可表示为一个代码单元或两个代码单元。
请参考 https://www.jianshu.com/p/c3a94294056a
link.

22.提示:**有个更加简单的方式打印数组中的所有值,即利用Arrays类的toString方法。**调用Arrays.totring(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分隔,例如,“[2,3,5,7,11,13]”。 要想打印数组,可以调用System.out.println(Arrays. toString(a));

23.数组拷贝
在Java中,允许将一个数组变量拷贝给另-一个数组变量。这时,两个变量将引用同一个数组:
int[] luckyNumberssal1Primes;
luckyNumbers[5] = 12; // now sallPrimes[5] is also 12
如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:
int[] copiedLuckyNumbers = Arrays.CopyOf(luckyNumber,rr luckylumbers.length);

第2个参数是新数组的长度。这个方法通常用来增加数组的大小:
luckyNumbers = Arrays.copyOf(luckyNumbers, 2 * luckyNumbers.length);
如果数组元素是数值型,那么多余的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false。

未完待续-----