欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

《Java核心技术》阅读笔记之第3章

时间:2023-08-02
第3章 Java的基本程序结构

3.1 一个简单的Java应用程序

public class FirstSample { public static void main(String []args) { System.out.println("Hello world!"); }}

3.2 注释

// 单行注释

3.3 数据类型

(1)整型

类型存储需求取值范围int4字节-2 147 483 648~2 147 483 647short2字节-32 768~32 767long8字节-9 223 372 036 854 775 808~9 223 372 036 854 775 807byte1字节-128~127

(2)浮点型

类型存储需求取值范围表示float4字节大约±3.402 823 47E+38F(有效数位6~7位)3.14F或3.14fdouble8字节大约±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 / 27(int)当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。15.0 / 27.5(double)当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。

(2)数学函数与常量

// 常规用法import java.lang.Math.*;System.out.println(Math.PI);// 静态导入,可省略Mathimport 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)) // falseif(a.equlsIgnoreCase(b)) // true

(5)空串和Null串

空串:即"",是一个Java对象,有自己的串长度(0)和内容(空)。Null串:即null,表示目前没有任何对象与该变量关联。

// 判断一个字符串是否为nullif(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.3333333333.33 3333.333333.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 也可实现退出指定循环

// 只输出一个 1first : 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方法类

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。