《Java 核心技术:卷Ⅰ》—学习笔记

 

第三章

1.术语

JDK(Java Development Kit ):编 M Java 程序的程序员使用的软件

JRE(Java Runtime Environment ):运行 Java 程序的用户使用的软件。(包含虚拟机但不包含编译器。 这并不是开发者想要的环境 , 而是专门为不需要编译器的用户而提供 。)

Server JRE:在服务器上运行 Java 程序的软件

Java SE(Standard Edition):用于桌面或简单服务器应用的 Java 平台

Java EE(Enterprise Edition ):用于复杂服务器应用的 Java 平台

Java ME(Micro Edition ):用于手机和其他小型设备的 Java平台

Java FX:用于图形化用户界面的一个替代工具包 , 在 Oracle 的 Java SE 发布版本中提供

OpenJDK:JavaSE 的一个免费幵源实现 ,不包含浏览器集成或 JavaFX

NetBeans:Oracle 的集成开发环境

 

暂未详细学习的点:

*使用命令行工具。

 

2.Java区分大小写。

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

4.源代码的文件名必须与公共类的名字相同, 并用 . java 作为扩展名 。

5.根据 Java 语言规范 , main 方法必须声明为 public。

6. object.method ( parameters ),这等价于函数调用。   比如System . out 对象并调用了它的 println方法。

7.在 Java 的方法中 , 可以没有参数 , 也可以有一个或多个参数 ( 有的程序员把参数叫做实参 )。 对于一个方法 , 即使没有参数也需要使用空括号 。

8.在 Java 中 , / * * / 注释不能嵌套。

 

9.Java 是 - 种强类型语言 。 这就意味着必须为每一个变量声明一种类型 :。

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

11.在 Java 中 , 整型的范围与运行 Java 代码的机器无关 。 

12.长整型数值有一个后缀 L 或 l ( 如 4000000000 L ) 。 十六进制数值有一个前缀 0x 或 0X ( 如0xCAFEL 八进制有一个前缀 0 ,例如 ,010 对应八进制中的 8 。 很显然 , 八进制表示法比较容易混淆 , 所以建议最好不要使用八进制常数 。从 Java 7 开始 , 加上前缀 0 b 或 0 B 就可以写二进制数 。

13.在 Java 中, 所有的数值类型所占据的字节数量与平台无关。注意 , Java 没有任何无符号 ( unsigned ) 形式的 int、 long 、 short或 byte 类型 。

 

14.码点 ( code point ): 是指与一个编码表中的某个字符对应的代码值。

 

3.4.1  变量

15.在 Java 中, 每个变量都有一个类型 ( type ) 。

16.在 Java 中可以将声明放在代码中的任何地方 。在声明变量时 , 变量的类型位于变量名之前。  由于声明是一条完整的 Java 语句 , 所以必须以分号结束 。

17.可以在一行中声明多个变量。

18.变量名必须是一个以字母开头并由字母或数字构成的序列 。 变量名中所有的字符都是有意义的, 并且大小写敏感 。 变量名的长度基本上没有限制 。

19.声明一个变量之后, 必须用赋值语句对变量进行显式初始化 , 千万不要使用未初始化的变量。

 

3.4.2 常量

20. 利用关键字 final 指示常量例如:final double CM _ PER _ INCH = 2.54 ; 习惯上 ,常量名使用全大写。

21. 类常量:可以使用关键字 static final设置一个类常量 。例如:public static final double CM _ PER _ INCH = 2.54;注意类常量的定义位于 main方法的外部,因此 , 在同一个类的其他方法中也可以使用这个常量如果一个常量被声明为 public , 那么其他类的方法也可以使用这个常量 。

 

3.5 运算符

22.加、减、乘、除、求余运算用 +、 - 、* 、 / 、%表示 。 当参与 / 运算的两个操作数都是整数时,表示整数除法;否则 , 表示浮点除法 。 例如, 15 / 2 等于7, 15 % 2 等于1 , 15.0 / 2 等于 7.50。需要注意 , 整数被 0 除将会产生一个异常, 而浮点数被0 除将会得到无穷大或 NaN 结果 。

23.类型转换:byte-short-int-long-float-double

24.强制类型转换 ( cast ):  (目标类型)   变量名 。

25. 位运算符:需要再研究

26. 枚举类型:自定义枚举类型 enum Size { SMALL , MEDIUM , LARGE , EXTRA . LARCE }

 

3.6 字符串

1.当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。例如 :int age = 13 ;String rating = " PC " + age。

2.String 类没有提供用于修改字符串的方法 。要修改字符串,提取需要的字符 , 然后再拼接上替换的字符串 :greeting = greeting . substring ( 0 , 3 ) + " p ! "

3.检测字符串是否相等:s.equals (t),如果字符串 s 与字符串 t 相等 , 则返回 true ; 否则 , 返回 false。不要使用 = 运算符检测两个字符串是否相等 ! 这个运算符只能够确定两个字是否放置在同一个位置上 。

4.检测两个字符串是否相等, 而不区分大小写 , 可以使用 equalsIgnoreCase方法。" Hello " . equalsIgnoreCase ( " hello" )

5.检查一个字符串是否为空:if ( str.length() = 0) 或 if ( str . equals ( "" ) )。

6.检查一个字符串是否为 null:if ( str = = null )

7.检查一个字符串既不是 null 也不为空串:if ( str ! = null & & str . length()! = 0 )

 

8.string API

p67-p69.

 

9.构建字符串

构建一个空的字符串构建器 :StringBuilder builder = new StringBuilder();

每次需要添加一部分内容时 , 就调用 append 方法 :builder.append ( ch ) ;

 

3.7 输入输出

1.读取输入:

要想通过控制台进行输人, 首先需要构造一个Scanner 对象, 并与 “标准输人流 ” System . in 关联:Scanner in = new Scanner ( System . in ) ;

 

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

可以采用下列代码 :
Console cons = System . console () ;
String  username = cons.readLine ( " User name : " ) ;
char [ ]  passwd = cons . readPassword ( " Password : " );

 

3.格式化输出

System.out.print ( x ) ;

System.out.printf ( " Hello , % s . Next year , you ' ll be SSd " , name , age ) ;

Systen. out.printf("%, . 2 f " , 10000.0 / 3.0 ) ;

可以使用静态的 String.format 方法创建一个格式化的字符串 , 而不打印输出 :String message = String.format ( " Hello , % s . Next year , you ' ll be % d " , name , age ) ;

 

4.文件输入与输出

读文件:Scanner in = new Scanner ( Paths.get ( " myflle.txt " ) , " UTF - 8 " ) ;      文件名中包含反斜杠符号, 就要记住在每个反斜杠之前再加一个额外的反斜杠 :“c : \\ mydirectory \ \ myfile . txt ” 。

写文件:PrintWriter out = new Printlulriter("myfile . txt " , " UTF - 8 " ) ;     文件不存在, 创建该文件 。

可以使用下面的调用方式找到路径的位置 :String dir = System.getProperty("user . dir " ) ;

 

3.8 控制流程

1.用标签设置要跳出的循环         标签名:循环体开始 break 标签名; 循环体结束

 

3.9 大数值

1.大数值:Biglnteger 类实现了任意精度的整数运算 , BigDecimal 实现了任意精度的浮点数运算 。

2.将普通的数值转换为大数值 :Biglnteger a = Biglnteger.valueof ( 100 );

3.大数值不能使用算术运算符,而使用 add 和 multiply 方法:

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

 

//java.math API

 

3.10 数组

1.数组是一种数据结构,用来存储同一类型值的集合。

2.创建数组: 数据类型[] 数组名 =new 数据类型[数组长度]。 数组长度不要求是常量。

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

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

5.for each 循环: for  (variable :  collection) statement; 

例如:

for (int element : a)
System.out.pri ntln(element);

循环打印a中的每一个元素。

 

6.简化形式的数组初始化:数组类型[] 变量名={数值1,数值2,···};

7.初始化一个匿名数组:new 数组名[]  {数值1,数值2,···};

 

// 注意,数组长度为0,与null不相同。

 

8.数组拷贝:

数据类型[] 变量名1 = 变量名2;  

数据类型[] 变量名1=Arrays.copyOf(变量名2,变量名2.length);

 

9.命令行参数

 

10.数组排序

Arrays.sort(a);

 

11.多维数组

 

12.不规则数组

 

posted @ 2018-10-22 11:18  todaynowind  阅读(239)  评论(0编辑  收藏  举报