CORE JAVA 第3章 基本程序设计结构
3.1 引例
- Java应用程序中的全部内容都必须放置在类中;
- 源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。
编译源代码后会得到一个包含这个类字节码的文件。Java编译器将字节码文件自动地命名为xx.class,并与源文件储存在同一个目录下。 - main方法必须声明为public
3.2 注释
- //
- /* …… */ ,不能嵌套。
- /** …… */ ,可自动生成文档。
3.3 数据类型
Java是强类型语言,共有八种基本类型。
- 整型
- int 4字节 -2147483638 ~ 2147483647
- short 2字节 -32768 ~ 32767
- long 8字节 -9223372036854775808 ~ 9223372036854775807
- byte 1字节 -128 ~ 127
长整型数值后有一个后缀L或l,十六进制数值有一个前缀0x或0X,八进制有一个前缀0。
加上前缀0b或者0B就可以写二进制数。
- 浮点类型
- float 4字节 有效位数为6 ~ 7位
- double 8字节 有效位数为15位
float类型的数值有一个后缀F或f。
// 不能这样检测一个特定值是否等于Double.NaN:
if (x == Double.NaN) // is never true
// 可以使用Double.isNaN方法:
if (Double.isNaN(x)) // check whether x is "not a number"
浮点数值不适用于无法接受舍入误差的金融计算中。
- char类型
有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值。
char类型的字面量值要用单引号括起来。
char类型的值可以表示为十六进制值。
- !
转义序列
\u
- boolean类型
有两个值,false和true,整型值和布尔值之间不能相互转换。
3.4 变量
- 声明变量
double salary;
不要在代码中使用$,不能使用保留字作为变量名。
- 变量初始化
- 常量
关键字final指示常量。
常量只能被赋值一次,一旦被赋值后,就不能再更改。
类常量:static final
类常量的定义在方法的外部。
3.5 运算符
如果将一个类标记为strictfp,这个类中的所有方法都要使用严格的浮点计算。
- 数学函数与常量
Math库 - 数值类型间的转换和强制类型转换
// 强制类型转换
double x =9.997;
int nx = (int) x;
-
位运算符
! -
括号与运算符级别
-
枚举类型
// 自定义枚举类型
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
Size s = Size.MEDIUM;
// Size类型的变量只能存储这个类型声明中给定的某个枚举值,或null值。
3.6 字符串
Java字符串就是Unicode字符序列。
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String。
每个用双引号括起来的字符串都是String类的一个实例。
-
子串
String类的substring方法。 -
拼接
- +号
- 把多个字符串放在一起,用一个定界符分隔,使用静态join方法:
String all = String.join("/","S","M","L");
//all is the string "S/M/L".
-
不可变字符串
-
检测字符串是否相等
s.equals(t)
//return true or false
//s与t可以是字符串变量,也可以是字符串字面量
不要使用"=="
- String API
让浏览器指向安装jdk的docs/api/index.html子目录
- 构建字符串
StringBuilder类
StringBuilder builder = new StringBuilder();
builder.append(ch);
builder.append(str);
String completedString = builder.toString():
3.7 输入输出
- 读取输入
import java.util.*;
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int age = in.nextInt():
-
格式化输出
System.out.printf(); -
文件输入与输出
!
3.8 控制流程
- 带标签的break
3.9 大数值
java.math.BigInteger和java.math.BigDecimal
BigInteger a = BigInteger.valueOf(100);
BigInteger c =a.add(b);
BigInteger d = c.multiply(b);
3.10 数组
int[] a = new int[10];
-
for each 循环
for(variable : collection) statement
variable是须定义一个变量,collection这一集合表达式必须是一个数组或者是实现了Iterable接口的类对象。 -
匿名数组
new int[] {15, 43, 23, 66 };
//使用这种语法可以在不创建新变量的情况下重新初始化一个数组
a = new int[] {15, 43, 23, 66 };
- 数组拷贝
允许将一个数组变量拷贝给另一个数组变量,两个数组变量可以引用同一个数组
int[] a = b;
如果希望将一个数组的所有值拷贝到一个新的数组中去,可以使用Arrays类的copyOf方法:
int[] copiedNumbers = Arrays.copyOf(Numbers,Numbers.length);
//第二个参数是新数组的长度,这个方法通常用来增加数组大小。
Numbers = Arrays.copyOf(Numbers,2 * Numbers.length);
- 多维数组和不规则数组
!