第3章 Java的基本程序设计结构(重点摘录)
3.1 一个简单的Java应用程序
public class FirstSample {
public static void main(String[] args){
System.out.println("We still use hello world!");
}
}
注意:
- Java是区分大小写的,拼写错误会导致程序无法运行;
- 关键字public是访问修饰符,用于控制程序的其他部分对这段代码的访问级别。Java中的访问修饰符有public、protected、private和default四种。
- 关键字class表示Java中的全部内容都包含在类中。
- Java类名的标准命名规范:类名以大写字母开头,若由多个单词拼接则每个单词的第一个字母都应该大写(骆驼命名法)。
- 源代码的文件名必须与公共类名字相同,即存储以上代码的文件名必须为FirstSample.java
- Java代码的执行:Java编译器将.java文件编译生成字节码文件,也就是.class文件,然后虚拟机执行该字节码文件得到最终结果。(Java虚拟机总是从指定类中的main方法开始执行,因此在类的源文件中必须包含一个main方法)
3.2 注释
在Java中一共有三种注释方法:
//1.这是单行注释
/*2.可以实现多行注释
啦啦啦
哎呦喂*/
/**
*3.可以用来自动生成文档的注释
*/
3.3数据类型
在Java中一共有8种基本数据类型,其中有4种整型(byte、short、int、long),2种浮点型(float、double),1种字符类型(char)和一种用于表示真值的类型(boolean)。
3.3.1 整型
类型 | 存储需求 | 取值范围 |
---|---|---|
byte | 1字节 | -128~127 |
short | 2字节 | -32786~32767 |
int | 4字节 | -2147483648~2147483647(刚刚超过20亿) |
long | 8字节 | -9223372036854775808~9223372036854775807 |
- 在Java中,整型的范围与运行Java代码的机器无关,也在一定程度上解决了程序移植带来的问题。其中,int类型最常用,byte和short主要用于特定场合,例如,底层的文件处理或者在空间很宝贵时对于大数组的存储也会用。而长整型在表示的时候需要添加后缀L或l(大写或者小写的L,例如800000000000L)。
3.3.2 浮点型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 有效数位6~7位(单精度浮点数) |
double | 8字节 | 有效数位15位(双精度浮点数) |
- float类型的数值有一个后缀F或者f,没有后缀的浮点数默认为double类型。
- 浮点数不适用于无法接受舍入误差的计算。比如,下面程序的输出结果为0.7000000000000002,而不是0.7。主要原因是浮点数值在系统中通过二进制表示后,是无法精确地表示分数1/10,所以会有近似。
public class FirstSample {
public static void main(String[] args){
System.out.println(3.0-2.3);
}
}
3.3.3 char和boolean类型
- 主要用来表示单个字符,char类型的字面量值要用单引号括起来;
- boolean类型只有true和false两个值,且和整型值不能进行互换。
3.4 变量与常量
3.4.1 变量声明与初始化
- 在Java中,每个变量都有一个类型。在声明变量的过程中要首先指定变量类型,再指定变量名。
- 变量名必须以字母开头,可以包含数字和下划线_,$也是合法的,但是在自己的程序中不要用,它只用在Java编译器或其他工具生成的名字中。
- 不能使用Java的保留字作为变量名。
- 单下划线不能作为变量名。
- 在声明一个变量之后,必须用赋值语句对变量进行显式初始化,直接使用未初始化的变量编译器会报错(ERROR–variable not initialized)。
3.4.2 常量
- 在Java中,利用关键字final来修饰并指定一个常量,表示这个变量只能被修饰一次。一旦被赋值,便不能再更改。习惯上,常量名使用全大写。
- 若要希望某个常量可以在一个类的多个方法中使用,则将该常量定义成类常量,使用关键字static final来修饰,且需要定义在main方法的外部。
3.4.3 枚举类型
- 当变量的取值范围只在一个有限的集合内时,通常用枚举类型,枚举类型包括有限个命名的值。例如,
enum Size{SMALL,MEDIUM,LARGE}
声明这种类型的变量:Size s=Size.SMALL
。
3.5 运算符
3.5.1 算术运算符
- 注意,整数被0除会出现异常,浮点数被0除会得到无穷大或NaN结果。
3.5.2 数学函数与常量
- 在Java的Math类中,包含了各种各样的数学函数。
- 一些常用的三角函数:
Math.sin();Math.cos();Math.tan()
等 - 指数函数以及它的反函数:
Math.exp();Math.log();Math.log10()
- 用于表示Π和e常量的最接近的近似值:
Math.PI;Math.E
3.5.3 数值类型之间的转换
- 图中实线箭头表示两个数值类型之间无信息丢失的转换;虚线箭头则表示有精度损失的转换。
- 若想将一个浮点数转化成int类型,则需要使用强制类型转换来实现。强制类型转换是通过截断小数部分将浮点值转换为整型。
- 若想对浮点数进行舍入运算,需要使用
Math.round()
方法,该方法返回的结果是long类型,因此需要用显式的强制类型转换得到int类型。 - 不要再boolean类型与任何数值类型之间进行强制类型转换。
3.5.4 关系运算符、逻辑运算符和位运算符
- Java中经常使用的关系运算符有==、<、>、<=