首页 > 代码库 > Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)
Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)
3.3 数据类型
Java是强类型语言,必须为每一个变量声明一种类型。
3.3.1 整型
Java 提供四种整型
int 4字节
short 2字节
long 8字节
byte 1字节
长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010)。
3.3.2 浮点型
Java提供两种浮点类型
float 4字节
double 8字节
float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数值(例如3.4)默认为double类型,也可以在浮点数值后面添加后缀D(例如3.4D),表示double类型。
浮点数值不适用于禁止出现舍入误差的金融计算中,例如:
public static void main(String[] args) { System.out.println((2.0 - 1.1)); }
将打印出0.8999999999999999,而不是我们想像的0.9,其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。如果需要在数值计算中不含有任何舍入误差,就应该使用BigDecimal类。
3.3.3 char类型
char类型表示单个字符,通常用来表示字符常量。
3.3.4 boolean类型
boolean类型有两个值:false和true,在Java中,整型值和布尔值之间不能进行相互转换。
3.4 变量
在Java中,每个变量属于一种类型。
变量必须是一个以字母开头的由字母和数字构成的序列。
我们可以使用Character.isJavaIdentifierPart(ch)方法来判断ch是不是一个合法的Java中的字母。
3.4.1 变量初始化
声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用未被初始化的变量。
3.4.2 常量
在Java中,利用关键字final声明常量。
关键字final表示这个变量只能被赋值一次,一旦被赋值之后,就不能够再更改了,习惯上,常量名使用大写。
3.5 运算符
整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。示例代码如下,可以放到eclipse中试一下:
public static void main(String[] args) { System.out.println(2 / 0); System.out.println(2.0 / 0); System.out.println(0.0 / 0); }
3.5.1 自增运算符和自减运算符
3.5.2 关系运算符与boolean运算符
3.5.3 位运算符
3.5.4 数学函数与常量
3.5.5 数值类型之间的转换
3.5.6 强制类型转换
如果想对浮点数进行舍入运算,以便得到最接近的整数,需要使用Math.round ()方法,例如:
public static void main(String[] args) { double b = 2.68; int x = (int) b; int y = (int) Math.round(b); System.out.println("x=" + x + " y=" + y); }
3.5.7 括号与运算级别
3.5.8 枚举类型
3.6 字符串
3.6.1 子串
substring()
3.6.2 拼接
+
3.6.3 不可变字符串
String greeting = "Hello";
如何想将greeting的内容修改为“Help!”,不能直接地将greeting的最后两个位置的字符修改为‘p‘和‘!‘,需要使用以下方式:
greeting = greeting.substring(0,3) + "p!";
由于不能修改Java字符串中的字符,所以在Java文档中将String对象称为不可变字符串。
不可变字符串有一个优点:编译器可以让字符串共享。
Java设计者认为共享带来的高效率远远胜过于提取、拼接字符串所带来的低效率。
3.6.4 检测字符串是否相等
需要注意的是Java里面只有字符串常量是共享的,而由substring和+所产生的结果并不是共享的。
3.6.5 代码点和代码单元
Java字符串是由char序列组成。字符数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元。
3.6.6 字符串API
3.6.7 阅读联机API文档
3.6.8 构建字符串
当需要频繁的拼接字符串操作时,优先考虑使用StringBuilder。
3.7 输入输出
3.7.1 读取输入
public class InputTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); // get first input System.out.println("What is your name?"); String name = in.nextLine(); // get second input System.out.println("How old are you?"); int age = in.nextInt(); // display output on console System.out.println("Hello, " + name + ", next year ,you will be " + (age + 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 大数值
BigInteger 和 BigDecimal
3.10 数组
3.10.1 for each循环
3.10.2 数组初始化以及匿名数组
3.10.3 数组拷贝
3.10.4 命令行参数
3.10.5 数组排序
3.10.6 多维数组
3.10.7 不规则数组