3.1 一个简单的Java应用程序
public class FirstSample {
public static void main(String []args) {
System.out.println("Hello world!");
}
}
3.2 注释
// 单行注释
3.3 数据类型
(1)整型
| 类型 | 存储需求 | 取值范围 |
|---|---|---|
| int | 4字节 | -2 147 483 648~2 147 483 647 |
| short | 2字节 | -32 768~32 767 |
| long | 8字节 | -9 223 372 036 854 775 808~9 223 372 036 854 775 807 |
| byte | 1字节 | -128~127 |
(2)浮点型
| 类型 | 存储需求 | 取值范围 | 表示 |
|---|---|---|---|
| float | 4字节 | 大约±3.402 823 47E+38F(有效数位6~7位) | 3.14F或3.14f |
| double | 8字节 | 大约±1.797 693 134 862 315 70E+308(有效数位15位) | 3.14或3.14D或3.14d |
注:
溢出和出错可用下列三个特殊浮点数值表示:
正无穷大(Double.POSITIVE_INFINITY)
负无穷大(Double.NEGATIVE_INFINITY)
NaN(不是一个数字 Double.NaN)
判断x是否为NaN的方法:
// 错误 if(x == Double.NaN) // is never true // 正确 if(Double.isNaN(x))浮点数值不适用于无法接受舍入误差的金融计算中。
(3)char类型
(4)boolean类型
boolean只有两个值:true和false,用来判定逻辑条件。
整型值和布尔值之间不能进行相互转换。
int a = 10; if(a) // 错误 if(10) // 错误 Boolean flag = true; if(a == 10) // 正确 if(flag) // 正确
3.4 变量
(1)常量定义
final int ABC_D_F = 2; // final表示这个变量只能赋值一次 static final int X_Y_Z = 10; // 类常量可以用static final定义
3.5运算符
(1)/ 运算:
| / 运算 | 结果 | 说明 |
|---|---|---|
| 15 / 2 | 7(int) | 当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。 |
| 15.0 / 2 | 7.5(double) | 当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。 |
(2)数学函数与常量
// 常规用法 import java.lang.Math.*; System.out.println(Math.PI); // 静态导入,可省略Math import static java.lang.Math.*; System.out.println(PI);
(3)数值类型之间的转换
上图解释
实心箭头:表示无信息丢失的转换。
虚箭头:表示可能有精度损失的转换。
进行二元计算时,(如 n + f),先要将两个操作数转换为同一种类型,然后再进行计算。(double > float > long > int)
如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。否则,两个操作数都将被转换为int类型。
(4)强制类型转换
// 浮点型转整型 double x = 9.993; int y = (int)x; // y = 9 // 带舍入运算的浮点型转整型 double x = 9.993; int y = (int)Math.round(x); // y = 10
(5)关系运算
a && b 和 a|| b (短路方式运算):如果a为false,b就不计算。
(6)位运算
a & b 和 a| b (非短路方式运算):a和b都计算。> > >:用0填充高位。> > :用符号位填充高位。< <
3.6 字符串
(1)子串
String str = "Hello World!"; String str1 = str.substring(0,5); // Hello
(2)拼接
使用“+”拼接
String a = "Hello"; String b = "World"; String c = a + b; // "HelloWorld" // 当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串 int index = 987; String d = a + index; // "Hello987"
使用String.join()拼接
String str = String.join(" ", "a", "b", "c"); // "a b c",第一个参数为定界符
(3)不可变字符串
String为不可变字符串。
(4)检测字符串是否相等
== :检测两个字符串是否放在同一位置上。
equals():检测两个字符串内容是否相同。
equlsIgnoreCase():忽略大小写检测两个字符串内容是否相同。
String a = "Hello"; String b = "hello"; if(a.equals(b)) // false if(a.equlsIgnoreCase(b)) // true
(5)空串和Null串
空串:即"",是一个Java对象,有自己的串长度(0)和内容(空)。Null串:即null,表示目前没有任何对象与该变量关联。
// 判断一个字符串是否为null if(str == null) // 判断一个字符串既不是null也不为空串 if(str != null && str.length() != 0)
3.7 输入输出
(1)读取输入
Scanner in = new Scanner(System.in);
// 只有一个输入
String str = in.next();
// 多个输入
while(in.hasNext()) {
str = in.next();
}
(2)格式化输出
沿用C语言格式化输出方法
与C语言相比,将printf()用System.out.printf()替换即为该格式化输出方法。
Double num = 10000 / 3.0;
System.out.printf("%fn", num);
System.out.printf("%.2fn", num); // 保留小数点后2位
System.out.printf("%8.2fn", num); // 长度为8,右对齐,保留小数点后2位
System.out.printf("%-8.2fn", num); // 长度为8,左对齐,保留小数点后2位
System.out.printf("%,.2fn", num); // 保留小数点后2位,用“,”分隔
// 运行结果
3333.333333
3333.33
3333.33
3333.33
3,333.33
静态String.format()格式化输出方法
(3)文件输入与输出
创建Scanner对象方法
try {
// 相对路径
Scanner in = new Scanner(Paths.get("src/Test1/hello.txt"), "UTF-8");
// 绝对路径
//Scanner in = new Scanner(Paths.get("D:\Desktop\WorkSpace\数据结构\src\Test1\hello.txt"), "UTF-8");
while(in.hasNextLine()) {
System.out.println(in.nextLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
序列化方法(将在后面章节详解)。
3.8 控制语句
(1)条件与循环
if(condition){} 和 while(condition){} 的condition 只能是 表达式 或 Boolean 对象。
(2)中断控制流程
continue:当前循环体的剩余部分,立刻跳到循环首部
break:退出当前层循环。
注:break 也可实现退出指定循环
// 只输出一个 1 first : for (int i = 0; i < 12; i++) { for (int j = 0; j <12; j++) { System.out.println(1); break first; } }
3.9 大数值(BigInteger 和 BigDecimal)
(1)BigInteger(整数)
// 创建BigInteger对象 BigInteger a = BigInteger.valueOf(2);
(2)BigDecimal(浮点数)
// 创建BigDecimal对象 BigDecimal a = BigDecimal.valueOf(2);
均不支持"+"、"-"、"*"、"/"等运算符,“加减乘除”等运算算法由其封装的方法提供。
3.10 数组
(1)二维数组foreach遍历
int[][] arr = new int[10][10];
for(int[] row : arr) {
for(int value : row) {
}
}
(2)创建不规则数组
int[][] arr = new int[10][]; for(int i=0; i(3)Arrays方法类
``
均不支持"+"、"-"、"*"、"/"等运算符,“加减乘除”等运算算法由其封装的方法提供。
3.10 数组
(1)二维数组foreach遍历
int[][] arr = new int[10][10]; for(int[] row : arr) { for(int value : row) { } }(2)创建不规则数组
int[][] arr = new int[10][]; for(int i=0; i(3)Arrays方法类



