[读书笔记]Core Java: Volume I - Fundamentals Chapter 2 & 3

Title: Core Java — Volume I Fundamentals
Edition: Eleventh Edition
Author: Cay S. Horstmann
读书笔记:对原书的归纳、总结、补充和疑问。

文章目录


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

添加注释的三种方法:

  1. // 常用于单行注释。
  2. /* */ 常用于多行注释。
  3. /** */ 用于生成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 到底是如何编码的?

  1. Unicode 使用variable length code.
  2. basic multilingual plane 统一用 2 bytes,叫作 Code Units
  3. 那么 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中不仅仅是大小写

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值