《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记

JAVA语言程序设计(第三版)10.1,10.2,10.3, 10.4 JAVA语言程序设计(第三版)10.1,10.2,10.3, 10.4 10.1 设计一个名为Swimmable的接口,其中包含void swim()方法;设计另一个名为Flyable的接口,其中包含fly()方法。定义一个Duck类实现上述两个接口。定义测试类,演示接口类型的使用。 package com.leox; /** * @Description 10.1 Swimmable接口,Flyable接口,Duck测试类 * @Author xrxleo * @Date 2020/12/17 阅读详情

曾经有人说,作为Java程序员如果没有卷过这本书,就算不上是真正的Java程序员,那么我就也来卷卷它吧。下面是我的读书摘录笔记。

目录

3.1 一个简单的 Java 应用程序

3.2 注释

3.3 数据类型

3.3.1 整型

3.3.2 浮点类型

3.3.3 char 类型

3.3.4 Unicode 和 char 类型

3.3.5 boolean 类型

3.4 变量与常量

3.4.1 声明变量

3.4.2 变量初始化

3.4.3 常量

3.4.4 枚举类型

3.5 运算符

3.5.1 算术运算符

3.5.2 数学函数与常量

3.5.3 数值类型之间的转换

3.5.4 强制类型转换

3.5.5 结合赋值和运算符

3.5.6 自增与自减运算符

3.5.7 关系和 boolean 运算符

3.5.8 位运算符

3.5.9 括号与运算符级别

3.6 字符串

3.6.1 子串

3.6.2 拼接

3.6.3 不可变字符串

3.6.4 检测字符串是否相等

3.6.5 空串与 Null 串

3.6.6 码点与代码单元

3.6.7 String API

3.6.8 阅读联机 API 文档

3.6.9 构造字符串

3.7 输入与输出

3.7.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 大数

3.10 数组

3.10.1 声明数组

3.10.2 访问数组元素

3.10.3 for each 循环

3.10.4 数组拷贝

3.10.5 命令行参数

3.10.6 数组排序

3.10.7 多维数组

3.10.8 不规则数组


3.1 一个简单的 Java 应用程序

FirstSample

public class FirstSample
{
    public static void main(String[] args)
    {
        System.out.println("We will ot use 'Hello, World!'");
    }
}

Java 区分大小写

关键字 public 称为访问修饰符(access modifier),用于控制程序的其他部分对这段代码的访问级别

关键字 class 表明 Java 程序中的全部内容都包含在类中

将类作为程序逻辑的一个容器,程序逻辑定义了应用程序的行为

类名必须以字母开头,后面可以跟字母和数字的任意组合

长度基本上没有限制

不能使用 Java 保留字作为类名

标准的命名规范为:类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写

骆驼命名法(camel case)

源代码的文件必须与公共类的名字相同,并用 .java 作为扩展名

在编译这段源码之后就会得到一个包含这个类字节码的文件

当使用 java ClassName 运行已经编译当程序时,Java 虚拟机总是从指定类中的 main 方法的代码开始执行,因此为了代码能够执行,在类的源文件中必须包含一个 main 方法

根据 Java 语言的规范,main 方法必须声明为 public

Java 规范:http://docs.oracle.com/javase/specs

Java 虚拟机规范:The Java® Virtual Machine Specification

Sun 公司在 Java 开源很久以前就把 bug 报告及其解决方案放在网站上让所有人监督检查,这是一种非常了不起的举动

用大括号划分程序的各个部分(通常称为块)

main 方法没有为操作系统返回“退出码”

每个句子必须用分号结束

回车不是语句的结束标志,因此,如果需要可以将一条语句写在多行上

点号(.)用于调用方法

object.method(parameters)

采用双引号界定字符串

即使一个方法没有参数,也需要使用空括号

3.2 注释

Java 中的注释也不会出现在可执行程序中

在 Java 中,有 3 种标记注释的方式。最常用的方式是使用 //,其注释内容从 // 开始到本行结尾

可以使用 /* 和 */ 注释界定符将一段比较长的注释括起来

第 3 种注释可以用来自动地生成文档。这种注释以 /** 开始,以 */ 结束

3.3 数据类型

Java 是一种强类型语言

这就意味着必须为每一个变量声明一种类型

在 Java 中,一共有 8 种基本类型(primitiv type),其中有 4 种整型、2 种浮点型、1种字符类型 char 和 1 种用于表示真值的 boolean 类型

3.3.1 整型

整型用于表示没有小数部分的数值,允许是负值

int 4 字节

short 2 字节

long 8 字节

byte 1 字节

在 Java 种,整型的范围与运行 Java 代码的机器无关

长整型数值有一个后缀 L 或 l

十六机制数值有一个前缀 0x 或 0X

八进制有一个前缀 0

从 Java 7 开始,加上前缀 0b 或 0B 就可以写二进制数

从 Java 7 开始,还可以为数字字面量加下划线,如用 1_000_000 表示 100 万

在 Java 中,所有的数值类型所占据的字节数与平台无关

Java 没有任何无符号形式的 int、long、short 或 byte 类型

Byte、Integer 和 Long 类都提供了处理无符号除法和求余数的方法

3.3.2 浮点类型

浮点类型用于表示有小数部分的数值

float 4 字节

double 8 字节

double 表示这种类型的数值是 float 类型的两倍(有人称之为双精度值)

float 类型的数值有一个后缀 F 或 f

没有后缀 F 的浮点值总是默认为 double 类型

也可以在浮点数值后面添加后缀 D 或 d

所有的浮点数值都遵循 IEEE 754 规范

下面是用于表示溢出和出错情况的三个特殊的浮点数值:

  • 正无穷大
  • 负无穷大
  • NaN(不是一个数字)

一个正整数除以 0 的结果为正无穷大。计算 0/0 或者负数的平方根结果为 NaN

常量 Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY 和 Double.NaN 分别表示这三个特殊的值

浮点数不适用于无法接受舍入误差的金融计算,应该使用 BigDecimal 类

3.3.3 char 类型

char 类型的字面量值要用单引号括起来

char 类型的值可以表示为十六进制值,其范围从 \u0000 到 \uFFFF

3.3.4 Unicode 和 char 类型

对于任意给定的代码值,在不同的编码方案下有可能对应不同的字母

采用大字符集的语言其编码长度有可能不同

在设计 Java 时决定采用 16 位的 Unicode 字符集

现在,16 位的 char 类型已经不能满足描述所有 Unicode 字符的需要了

码点(code point)是指与一个编码表中的某个字符对应的代码值

在 Unicode 标准中,码点采用十六进制书写,并加上前缀 U+

Unicode 的码点可以分成 17 个代码平面(code plane)

第一个代码平面称为基本多语言平面(basic multilingual plane),包括码点从 U+0000 到 U+FFFF 的“经典”Unicode 代码

其余的 16 个平面的码点为从 U+10000 到 U+10FFFF,包括辅助字符(supplementary character)

UTF-16 编码采用不同长度的编码表示所有 Unicode 码点

在基本多语言平面中,每个字符用 16 位表示,通常称为代码单元(code unit);而辅助字符编码为一对连续的代码单元

在 Java 中,char 类型描述了 UTF-16 编码中的一个代码单元

强烈建议不要在程序中使用 char 类型,除非确实需要处理 UTF-16 代码单元。最好将字符串作为抽象数据类型处理。

3.3.5 boolean 类型

boolean 类型有两个值:false 和 true,用来判定逻辑条件

整型值和布尔值之间不能进行相互转换

3.4 变量与常量

3.4.1 声明变量

变量名必须是一个以字母开头并由字母或数字构成的序列

大小写敏感

不能使用 Java 保留字作为变量名

在 Java 9 中,单下划线 _ 不能作为变量名,将来的版本可能使用 _ 作为通配符

可以在一行中声明多个变量

逐一声明每一个变量可以提高程序的可读性

3.4.2 变量初始化

声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用为初始化的变量值

要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号左侧,再把一个适当取值的 Java 表达式放在等号的右侧

也可以将变量的声明和初始化放在同一行中

在 Java 中可以将声明放在代码中的任何地方

变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格

从 Java 10 开始,对于局部变量,如果可以从变量的初始化推断出它的类型,就不再需要声明类型。只需要使用关键字 var 而无须指定类型

var vacationDays = 12; // vacationDays is an int

var greeting = "Hello"; // greeting is a String

在 Java 中,并不区分变量的声明和定义

3.4.3 常量

在 Java 中,利用关键字 final 指示常量

关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能再更改了。习惯上,常量名使用全大写。

在 Java 中,经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量(class constant)。可以使用关键字 static final 设置一个类常量。

如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量

const 是 Java 保留的关键字,但目前并没有使用。在 Java 中,必须使用 final 定义常量

3.4.4 枚举类型

变量的取值只在一个有限的集合内

枚举类型包括有限个命名的值

enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };

Size s = Size.SMALL;

Size 类型的变量只能存储这个类型声明中给定的某个枚举值,或者特殊值 null,null 表示这个变量没有设置任何值

3.5 运算符

3.5.1 算术运算符

算术运算符 +、-、*、/ 表示加、减、乘、除运算

当参与 / 运算当两个操作数都是整数时,表示整数除法;否则,表示浮点除法

整数的求余操作用 % 表示

整数被 0 除将会产生一个异常,而浮点数被 0 除将会得到无穷大或 NaN 结果

无论在哪个虚拟机上运行,同一运算应该得到同样当结果。对于浮点数的算术运算,实现这样的可移植性是相当困难的。double 类型使用 64 位存储一个数值,而有些h处理器则使用 80 位的浮点寄存器。这些寄存器增加了中间过程的计算精度。但是,这个结果可能与始终使用 64 位计算的结果不一样。(p38 最好读一下灰色部分)

使用 strictfp 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果

public static strictfp void main(String[] args)

main 方法中的所有指令都将使用严格的浮点计算

如果将一个类标记位 strictfp,这个类中的所有方法都要使用严格的浮点计算

3.5.2 数学函数与常量

在 Math 类中,包含了各种各样的数学函数

平方根 double y = Math.sqrt(x);

幂运算 double y = Math.pow(x, a);

Math.floorMod 求余数的

常用的三角函数

Math.sin

Math.cos

Math.tan

Math.atan

Math.atan2

指数函数以及它的反函数 —— 自然对数以及 10 为底的对数:

Math.exp

Math.log

Math.log10

Java 提供了两个常量

Math.PI

Math.E

import static java.lang.Math.*;

在 Math 类中

《Java核心技术:卷Ⅰ》学习记录(第三章) 以上代码段是一个基本的Java代码片段,idea软件中可以用快捷键直接生成基本模板。由于,所以Java中的main方法必须有一个外壳类。Java中的方法可以没有参数,也可以有一个或多个参数,例如不带参数的println方法只打印一个空行。 阅读详情

相关推荐

java核心技术卷1基础知识整理

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_39748316的博客 4834

Java语言程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案

Java语言程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案 第10章 接口和Lambda表达式 10.1 定义Duck类实现Swimmable接口和flyable接口。 interface Swimmable{ public void swim() ; } interface flyable{ public void fly() ; } public class Duck implements Swimmable, flyable{ @Override pub

nuist_NJUPT的博客 8125

app逆向分析案例-95分

先把justtrusmeplus打开设置好95分,开始抓包,得到结果为: https://www.95fenapp.com/api_goods/list/v3.0?is_all=1&keywords=%E7%A7%91%E6%AF%94& page=1&page_size=20 &publish_timestamp=0 &scene=2&scene_type=95fen_android_search_personal&sn=SearchList

weixin_41763171的博客 2742

2023-11-20 MySQL ARM64 银河麒麟

背景 MySQL是常用数据库,Windows安装比较容易,笔者也有记录。现在国产化系统银河麒麟中安装,不同的是软件安装包不容易下载。一是安装的方式,再一个是MySQL本身的版本,网上很多文档说明其实都是对的,但是为什么那么多都不一样呢?就是MySQL本身的版本差异比较大,这些差异笔者也不是很清楚,但是不要用8和5.7的差异非常大,8即使安装的很顺利,在使用过程也会很多坑,导致我宁愿卸载8,也要重新...

jxmh1991@163.com 808

用ST25DV芯片+KiCad快速设计NFC标签天线:参数计算/脚本生成/实测优化全流程

本文详细介绍了使用ST25DV芯片和KiCad工具设计NFC标签天线的全流程,包括参数计算、脚本生成和实测优化。通过解析芯片等效工作原理和设计思路,帮助开发者避开常见陷阱,实现高效、可量产的天线设计。文章还提供了Python计算工具和KiCad自动化脚本,大幅提升设计效率和成功率。

jj890的博客 758

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 299

1、工作流介绍

工作流起源于办公自动化,是对软件中业务流程的抽象。通过工作流将各个任务有序组织起来形成一个完整的业务闭环。比如:请假审批流程,网上购物流程,银行贷款流程;!

leyoliu的博客 5108

路径跟踪 | 图解路径跟踪PID算法(附ROS C++/Python/Matlab仿真)

PID控制是一种经典的控制算法,广泛应用于各种工业场景。在基于PID的局部路径规划中,希望机器人能快速跟踪上预设的轨迹。本文介绍PID控制的基本原理,并基于PID控制律设计路径跟踪算法,最后通过ROS C++/Python/Matlab进行仿真实现,加深理解

FRIGIDWINTER的博客 1万+

科研牛马千万不要错过!手把手教你用AI精准匹配真实参考文献,仅需一个专业应用+两个提示词指令

当然也可以借助生成式AI,如GPT-5.2、Gemini 3 Pro粘贴段落,输入设计好的提示词,让模型根据段落内容匹配参考文献,并正确引用到段落合适位置,再按规范格式输出参考文献列表。阅读我提供的【正文文本】,为其中的关键论点寻找真实的、权威的参考文献(优先来源于Nature, Science, IEEE, ACM, PubMed等),并插入引用。若在段落中已经引用好了参考文献,也有参考文献列表,担心引用位置不当或论点、论述逻辑与文献不够契合,则可以用以下结构化提示词,让AI辅助审查。

智能AI让学术科研更容易 1031

企业级 Multi-Agent 实施指南:从需求拆解到上线验收的全流程方法论

本文基于12个不同行业(金融、制造、零售、互联网)的百万级Multi-Agent投产项目经验,提炼出一套可复用的全流程实施SOP,覆盖需求对齐与拆解、架构设计、开发实现、测试优化、上线部署、验收迭代6个核心阶段,包含标准化工具、量化指标、踩坑指南、可直接运行的代码示例,帮你避开90%的落地坑。需求阶段是项目成败的核心,必须对齐业务方的量化指标,明确系统边界架构设计要兼顾性能、安全、可扩展性,不要为了炫技选择复杂的框架工程化是投产的关键,测试、灰度、监控、降级机制缺一不可。

AI云原生与云计算技术学院 224

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: Vagrant 搭建虚拟机环境
下一篇: IEEE 二进制浮点数的表示
码农UP2U
博客等级 码龄14年 6276粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农UP2U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值