《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记

曾经有人说,作为Java程序员如果没有卷过这本书,就算不上是真正的Java程序员,那么我就也来卷卷它吧。下面是我的读书摘录笔记。

目录

3.1 一个简单的 Java 应用程序

3.2 注释

3.3 数据类型

3.3.1 整型

3.3.2 浮点类型

3.3.3 char 类型

3.3.4 Unicode 和 char 类型

3.3.5 boolean 类型

3.4 变量与常量

3.4.1 声明变量

3.4.2 变量初始化

3.4.3 常量

3.4.4 枚举类型

3.5 运算符

3.5.1 算术运算符

3.5.2 数学函数与常量

3.5.3 数值类型之间的转换

3.5.4 强制类型转换

3.5.5 结合赋值和运算符

3.5.6 自增与自减运算符

3.5.7 关系和 boolean 运算符

3.5.8 位运算符

3.5.9 括号与运算符级别

3.6 字符串

3.6.1 子串

3.6.2 拼接

3.6.3 不可变字符串

3.6.4 检测字符串是否相等

3.6.5 空串与 Null 串

3.6.6 码点与代码单元

3.6.7 String API

3.6.8 阅读联机 API 文档

3.6.9 构造字符串

3.7 输入与输出

3.7.1 读取输入

3.7.2 格式化输出

3.7.3 文件输入与输出

3.8 控制流程

3.8.1 块作用域

3.8.2 条件语句

3.8.3 循环

3.8.4 确定循环

3.8.5 多重选择:switch 语句

3.8.6 中断控制流程的语句

3.9 大数

3.10 数组

3.10.1 声明数组

3.10.2 访问数组元素

3.10.3 for each 循环

3.10.4 数组拷贝

3.10.5 命令行参数

3.10.6 数组排序

3.10.7 多维数组

3.10.8 不规则数组


3.1 一个简单的 Java 应用程序

FirstSample

public class FirstSample
{
    public static void main(String[] args)
    {
        System.out.println("We will ot use 'Hello, World!'");
    }
}

Java 区分大小写

关键字 public 称为访问修饰符(access modifier),用于控制程序的其他部分对这段代码的访问级别

关键字 class 表明 Java 程序中的全部内容都包含在类中

将类作为程序逻辑的一个容器,程序逻辑定义了应用程序的行为

类名必须以字母开头,后面可以跟字母和数字的任意组合

长度基本上没有限制

不能使用 Java 保留字作为类名

标准的命名规范为:类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写

骆驼命名法(camel case)

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

在编译这段源码之后就会得到一个包含这个类字节码的文件

当使用 java ClassName 运行已经编译当程序时,Java 虚拟机总是从指定类中的 main 方法的代码开始执行,因此为了代码能够执行,在类的源文件中必须包含一个 main 方法

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

Java 规范:http://docs.oracle.com/javase/specs

Java 虚拟机规范:The Java® Virtual Machine Specification

Sun 公司在 Java 开源很久以前就把 bug 报告及其解决方案放在网站上让所有人监督检查,这是一种非常了不起的举动

用大括号划分程序的各个部分(通常称为块)

main 方法没有为操作系统返回“退出码”

每个句子必须用分号结束

回车不是语句的结束标志,因此,如果需要可以将一条语句写在多行上

点号(.)用于调用方法

object.method(parameters)

采用双引号界定字符串

即使一个方法没有参数,也需要使用空括号

3.2 注释

Java 中的注释也不会出现在可执行程序中

在 Java 中,有 3 种标记注释的方式。最常用的方式是使用 //,其注释内容从 // 开始到本行结尾

可以使用 /* 和 */ 注释界定符将一段比较长的注释括起来

第 3 种注释可以用来自动地生成文档。这种注释以 /** 开始,以 */ 结束

3.3 数据类型

Java 是一种强类型语言

这就意味着必须为每一个变量声明一种类型

在 Java 中,一共有 8 种基本类型(primitiv type),其中有 4 种整型、2 种浮点型、1种字符类型 char 和 1 种用于表示真值的 boolean 类型

3.3.1 整型

整型用于表示没有小数部分的数值,允许是负值

int 4 字节

short 2 字节

long 8 字节

byte 1 字节

在 Java 种,整型的范围与运行 Java 代码的机器无关

长整型数值有一个后缀 L 或 l

十六机制数值有一个前缀 0x 或 0X

八进制有一个前缀 0

从 Java 7 开始,加上前缀 0b 或 0B 就可以写二进制数

从 Java 7 开始,还可以为数字字面量加下划线,如用 1_000_000 表示 100 万

在 Java 中,所有的数值类型所占据的字节数与平台无关

Java 没有任何无符号形式的 int、long、short 或 byte 类型

Byte、Integer 和 Long 类都提供了处理无符号除法和求余数的方法

3.3.2 浮点类型

浮点类型用于表示有小数部分的数值

float 4 字节

double 8 字节

double 表示这种类型的数值是 float 类型的两倍(有人称之为双精度值)

float 类型的数值有一个后缀 F 或 f

没有后缀 F 的浮点值总是默认为 double 类型

也可以在浮点数值后面添加后缀 D 或 d

所有的浮点数值都遵循 IEEE 754 规范

下面是用于表示溢出和出错情况的三个特殊的浮点数值:

  • 正无穷大
  • 负无穷大
  • NaN(不是一个数字)

一个正整数除以 0 的结果为正无穷大。计算 0/0 或者负数的平方根结果为 NaN

常量 Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY 和 Double.NaN 分别表示这三个特殊的值

浮点数不适用于无法接受舍入误差的金融计算,应该使用 BigDecimal 类

3.3.3 char 类型

char 类型的字面量值要用单引号括起来

char 类型的值可以表示为十六进制值,其范围从 \u0000 到 \uFFFF

3.3.4 Unicode 和 char 类型

对于任意给定的代码值,在不同的编码方案下有可能对应不同的字母

采用大字符集的语言其编码长度有可能不同

在设计 Java 时决定采用 16 位的 Unicode 字符集

现在,16 位的 char 类型已经不能满足描述所有 Unicode 字符的需要了

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

在 Unicode 标准中,码点采用十六进制书写,并加上前缀 U+

Unicode 的码点可以分成 17 个代码平面(code plane)

第一个代码平面称为基本多语言平面(basic multilingual plane),包括码点从 U+0000 到 U+FFFF 的“经典”Unicode 代码

其余的 16 个平面的码点为从 U+10000 到 U+10FFFF,包括辅助字符(supplementary character)

UTF-16 编码采用不同长度的编码表示所有 Unicode 码点

在基本多语言平面中,每个字符用 16 位表示,通常称为代码单元(code unit);而辅助字符编码为一对连续的代码单元

在 Java 中,char 类型描述了 UTF-16 编码中的一个代码单元

强烈建议不要在程序中使用 char 类型,除非确实需要处理 UTF-16 代码单元。最好将字符串作为抽象数据类型处理。

3.3.5 boolean 类型

boolean 类型有两个值:false 和 true,用来判定逻辑条件

整型值和布尔值之间不能进行相互转换

3.4 变量与常量

3.4.1 声明变量

变量名必须是一个以字母开头并由字母或数字构成的序列

大小写敏感

不能使用 Java 保留字作为变量名

在 Java 9 中,单下划线 _ 不能作为变量名,将来的版本可能使用 _ 作为通配符

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

逐一声明每一个变量可以提高程序的可读性

3.4.2 变量初始化

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

要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号左侧,再把一个适当取值的 Java 表达式放在等号的右侧

也可以将变量的声明和初始化放在同一行中

在 Java 中可以将声明放在代码中的任何地方

变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格

从 Java 10 开始,对于局部变量,如果可以从变量的初始化推断出它的类型,就不再需要声明类型。只需要使用关键字 var 而无须指定类型

var vacationDays = 12; // vacationDays is an int

var greeting = "Hello"; // greeting is a String

在 Java 中,并不区分变量的声明和定义

3.4.3 常量

在 Java 中,利用关键字 final 指示常量

关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能再更改了。习惯上,常量名使用全大写。

在 Java 中,经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量(class constant)。可以使用关键字 static final 设置一个类常量。

如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量

const 是 Java 保留的关键字,但目前并没有使用。在 Java 中,必须使用 final 定义常量

3.4.4 枚举类型

变量的取值只在一个有限的集合内

枚举类型包括有限个命名的值

enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };

Size s = Size.SMALL;

Size 类型的变量只能存储这个类型声明中给定的某个枚举值,或者特殊值 null,null 表示这个变量没有设置任何值

3.5 运算符

3.5.1 算术运算符

算术运算符 +、-、*、/ 表示加、减、乘、除运算

当参与 / 运算当两个操作数都是整数时,表示整数除法;否则,表示浮点除法

整数的求余操作用 % 表示

整数被 0 除将会产生一个异常,而浮点数被 0 除将会得到无穷大或 NaN 结果

无论在哪个虚拟机上运行,同一运算应该得到同样当结果。对于浮点数的算术运算,实现这样的可移植性是相当困难的。double 类型使用 64 位存储一个数值,而有些h处理器则使用 80 位的浮点寄存器。这些寄存器增加了中间过程的计算精度。但是,这个结果可能与始终使用 64 位计算的结果不一样。(p38 最好读一下灰色部分)

使用 strictfp 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果

public static strictfp void main(String[] args)

main 方法中的所有指令都将使用严格的浮点计算

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

3.5.2 数学函数与常量

在 Math 类中,包含了各种各样的数学函数

平方根 double y = Math.sqrt(x);

幂运算 double y = Math.pow(x, a);

Math.floorMod 求余数的

常用的三角函数

Math.sin

Math.cos

Math.tan

Math.atan

Math.atan2

指数函数以及它的反函数 —— 自然对数以及 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农UP2U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值