《Java核心技术》卷1——学习笔记(1)

第三章的基本语法

1、类名命名规范为骆驼命名法,即首字母大写。

2、源代码为.java文件,编译后字节码文件为.class。控制台先用javac name.java命令编译源文件,然后用java name运行编译后的字节码文件。

3、三种注释方法:

//第一种

/* 第二种 */

/**

第三种

*/

第三种可以用来自动生成文档。

/* */注释不能嵌套,也就是说,不能简单地把代码用/*和*/括起来作为注释,因为这段代码本身可能也包含一个*/

4、java没有任何形式的无符号(unsigned)形式的short、int、long、byte类型。

5、在c、c++中,整型所占字节数的大小跟机器有关,但在java中,整型大小是固定的。

6、没有后缀f、F的浮点数值默认为double类型。大多数应用程序用double,少部分需要单精度数据的库或需要存储大量数据的情况适合使用float类型。

7、Double.POSITIVE_INFINITY、 Double.NEGATIVE_INFINITY 和 Double.NaN分别表示正无穷、负无穷和非数值。

if(x==Double.NaN) //错误,所有的非数值都不相同

if(Double.isNaN(x)) //正确

8、如果在数值计算中不允许有任何写入误差,应该是用BigDecimal类。

9、转义序列\u还可以出现在加引号的字符常量或字符串之外(而其他所有转义序列不可以)。例如:

public static void main(String\u005B\u005D args)

10、Unicode 转义序列会在解析代码之前得到处理;注释中\u也会被解析,换行符的unicode编码转义后会产生错误。\u后未跟四个十六进制数也会报错。

11、整型0不能转化为Boolean值。

12、不能使用未初始化的变量。

13、final指示常量,被赋值之后不能再改写。习惯上常量名使用全大写。

14、static final设置类常量。

15、整数被0除会产生异常,浮点数被0除会产生无穷大或NaN。

16、如果将一个类标记为 strictfp, 这个类中的所有方法都要使用严格的浮点计算。

17、floorMod(position + adjustment, 12) 总会得到一个 0 ~ 11 之间的数。(遗憾的是,对于负除数,floorMod 会得到负数结果,不过这种情况在实际中很少出现。)

18、数值之间的合法转换:

•如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。

•否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。

•否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。

•否则, 两个操作数都将被转换为 int 类型。

19、Math.round(x)得到离浮点数x最接近的整数,返回值为long型,如果想要得到int型,需要强制转换。(int)Math.round(x)

20、如果x是int,则x+=3.5是合法的,将把x转化为(int)(x+3.5)

21、String all = String.join( " / ", "S", "M", "L", "XL" ); // all is the string "S / H / L / XL"

22、"Hello".equals(greeting);"Hello".equalsIgnoreCase("hel1o")

一定不要使用==运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串是否放置在同一个位置上。

23、空串是"",不是null串

24、用许多小段的字符串构建一个字符串,使用StringBuilder类

25、标准输入流:Scanner in = new Scanner(System.in);

String name = in.nextLine();//读取一行 

String firstName = in.next();//读取一个单词

int age = in.nextlnt();//读取一个int整数

26、因为输入是可见的, 所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别 引入了 Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:

Console cons = System.console();

String username = cons.readLine("User name: ");

char[] passwd = cons.readPassword("Password:");

为了安全起见, 返回的密码存放在一维字符数组中, 而不是字符串中。在对密码进 行处理之后,应该马上用一个填充值覆盖数组元素(数组处理将在 3.10 节介绍)。 采用 Console 对象处理输入不如采用 Scanner 方便。每次只能读取一行输入, 而没有 能够读取一个单词或一个数值的方法。

27、读取文件:Scanner in = new Scanner(Paths.get("myflle.txt"), "UTF-8");

写入文件:PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");

如果 用一个不存在的文件构造一个 Scanner, 或者用一个不能被创建的文件名构造一个 PrintWriter, 那么就会发生异常。

public static void main(String口 args) throws IOException
{
Scanner in = new Scanner(Paths.get("myfile.txt"), "UTF-8");
}

28、使用switch语句时,javac -Xlint:fallthrough Test.java,如果某个分支最后缺少break语句,就会弹出警告信息。如果你确实正是想使用这种“ 直通式”(fallthrough) 行为, 可以为其外围方法加一个 标注@SuppressWamings("fallthrough")。 这样就不会对这个方法生成警告了。

29、使用静态的 valueOf方法可以将普通的数值转换为大数值,但不能使用“+”、“-”、“*”等运算符,而且不能重载。

Biglnteger a = Biglnteger.valueOf(100);
Biglnteger c = a.add(b); // c = a + b
Biglnteger d = c.nultiply(b.add(Biglnteger.valueOf(2))); // d = c * (b + 2)

30、创建一个数字数组时, 所有元素都初始化为 0。boolean 数组的元素会初始化为 false, 对象数组的元素则初始化为一个特殊值 null, 这表示这些元素还未存放任何对象。

一旦创建了数组, 就不能再改变它的大小(尽管可以改变每一个数组元素)。如果经常需要在运行过程中扩展数组的大小, 就应该使用另一种数据结构—数组列表( array list)。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页