IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 《Java核心技术》阅读笔记之第3章 -> 正文阅读

[Java知识库]《Java核心技术》阅读笔记之第3章

第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 647
short2字节-32 768~32 767
long8字节-9 223 372 036 854 775 808~9 223 372 036 854 775 807
byte1字节-128~127

(2)浮点型

类型存储需求取值范围表示
float4字节大约±3.402 823 47E+38F(有效数位6~7位)3.14F或3.14f
double8字节大约±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);

// 静态导入,可省略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("%f\n", num);
System.out.printf("%.2f\n", num);   // 保留小数点后2位
System.out.printf("%8.2f\n", num);  // 长度为8,右对齐,保留小数点后2位
System.out.printf("%-8.2f\n", num); // 长度为8,左对齐,保留小数点后2位
System.out.printf("%,.2f\n", 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<arr.length; i++) {
	arr[i] = new int[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<arr.length; i++) {
	arr[i] = new int[i];
}

(3)Arrays方法类

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2022-02-04 10:54:21  更:2022-02-04 10:56:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:33:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码