Title: Core Java — Volume I Fundamentals
Edition: Eleventh Edition
Author: Cay S. Horstmann
读书笔记:对原书的归纳、总结、补充和疑问。
文章目录
- Chapter 2: The Java Programming Environment
- Chapter 3 Fundamental Programming Structures in Java
-
- 3.1 A Simple Java Program
- 3.2 Comments
- 3.3 Data Types
- 3.4 Variables and Constants
- 3.5 Operators
-
- 3.5.1 Arithmetic Operators
- 3.5.2 Mathematical Functions and Constants
- 3.5.3 Conversions between Numeric Types
- 3.5.4 Casts
- 3.5.5 Combining Assignment with Operators
- 3.5.6 Increment and Decrement Operators
- 3.5.7 Relational and `boolean` Operators
- 3.5.8 Bitwise Operators
- 3.5.9 Parentheses and Operator Hierarchy
- 3.6 Strings
- 3.7 Input and Output
- 3.8 Control Flow
- 3.9 Big Numbers
- 3.10 Arrays
- 总结
Chapter 2: The Java Programming Environment
2.1 Installing the Java Development Kit
Java 常见术语
Name | Explanation |
---|---|
JDK: Java Development Kit | 程序员想要写Java程序时需要用到的软件 |
JRE: Java Runtime Environment | 普通小老百姓想要运行Java程序时需要用到的软件 |
Server JRE | 服务器上运行Java程序时需要用的软件 |
Standard Edition | Java 开发平台用来开发Desktop程序或是简单的服务器程序 |
Enterprise Edition | Java 开发平台用来开发大型的简单的服务器程序 |
Micro Edition | Java 开发平台用来开发small devices的程序 |
第二章的后半部分没什么难度,不再赘述,从书中看一遍了解即可。
后续有时间再补上。
2.2 Using the Command-Line Tools
2.3 Using Integrated Development Environment
2.4 Jshell
Chapter 3 Fundamental Programming Structures in Java
3.1 A Simple Java Program
Java Features:
- Case sensitive.
- Everything in a Java program lives inside a class.
- 命名:以字母开始,接上字母和数字的任意组合。
- 命名习惯:class names start with uppercase letter, followed by CamelCase.
- 文件名必须和第一个class名一样。
- Java虚拟机从main method开始执行,main method 必须public。
- method call的模板:
object.method(parameters)
3.2 Comments
添加注释的三种方法:
//
常用于单行注释。/* */
常用于多行注释。/** */
用于生成documentation.
Caution: 注释是不可以嵌套的,下面这个例子就可以展示这个问题。
/*
statement1;
/* comments */
statement2;
*/
3.3 Data Types
Strongly typed language: every variable must have a declared type。
这个定义要注意。在编程语言当中经常会有类似于:statically typed, dynamically typed, strongly typed… 等等说法,彼此定义在不同的语境下也不一样。这里既然出现了strongly typed language的较官方定义,应该记下来,以免以后混淆。
3.3.1 Integer Types
Type | 适用场景 |
---|---|
int |
最常用的 |
short / byte |
特殊场景比如:底层文件处理、内存不足时处理大型array |
long |
大数 |
Java 程序在不同环境、操作系统下都是固定地使用一套数据类型标准,也就是第一章所说的portable 特性。
还需要注意如何表示各种数据类型的literals。比如 long a = 101;
应该怎样才能让compiler知道,我这里写的101,虽然数字本身小,但是我还是想用long type呢?
答案是应该写成 long a = 101L;
不同的数据类型,literals有不同的表示方式,需要注意。
3.3.2 Floating-Point Types
三个特别的浮点值:
- 正无限大 inf
- 负无限大 -inf
- NaN (not a number)
NaN 会在计算0/0 或是 负数的平方根的时候出现。
(参照 [读书笔记]《算法竞赛入门经典》,这倒是和我用cpp做实验时得出来的结果一样。)
3.3.3 The char
Types
注意:
"A"
和 'A'
是不一样的。前者是一个字符串,后者是单个字符,既literal value for char.
Unicode value 甚至可以用来写程序本身,不过实在是太鸡肋了。不过倒是给程序bug提供了一个新思路(?),Unicode value 会在编译器编译之前转换,即便是在comments里面也不行!
3.3.4 Unicode and the char
Types
术语解释:
Code Point: A code value is something that is associated with a character in an encoding scheme. In Unicode it is written in hexadecimal and prefixed with U+
.
Code Plane: a set of code points.
Basic multilingual plane: U+0000
to U+FFFF
Other 16 supplementary code planes: U+10000
to U+10FFFF
Unicode 到底是如何编码的?
- Unicode 使用variable length code.
- basic multilingual plane 统一用 2 bytes,叫作 Code Units
- 那么 supplementary code planes 怎么办呢? 原来在basic multilingual plane 还有2048个值没有分配到对应的符号(Surrogate Area)。我们把这2048个值分配成两个部分。这两个部分通过算法组成新的编码。
为什么要这么做?
这样的话,随便给你一个 code unit,你就知道这到底是一个字符呢?还是用来组成特殊字符的两部分之一呢?如果是两部分之一,你还可以知道到底是两部分的第一个呢还是第二个呢。
总之Java 中的 char 只能处理Code Units。
3.3.5 The boolean
Types
学过C或是C++的朋友的注意,在Java里面,0/1不可以当成 boolean 来使用。其他值也不可以。
3.4 Variables and Constants
3.4.1 Declaring Variables
注意哪些符号可以用来作为变量的名字。
尤其是注意“字母”在Java中不仅仅是大小写