【学习笔记】Java核心技术 卷I 第3章 Java的基本程序设计结构(1)


前言

本章主要介绍程序设计的基本概念(如数据类型、分支以及循环)在Java中的实现方式。


3.1 一个简单的Java应用程序

看下面这段简单的代码,它的功能是打印 “We will not use ‘Hello, World!’” 这段话。

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

从它的结构中,我们可以总结到:

  • Java 区分大小写,比如 main 不能写成 Main
  • 关键字 public 称为访问修饰符(access modifier),表示程序其他部分对这段代码的访问级别。
  • 关键字 class 表示 Java 程序的所有内容都包含在类中。
  • class 后面跟的是类名,必须以字母开头,后面可以跟字母和数字的任意组合,但不能使用 Java 保留字(如 public 或 class)。在这段代码中,FirstSample 就是一个标准的命名方式,成为骆驼命名法(camel case)。
  • 源代码的文件名必须与公共类的名字相同,存储上面这段代码的文件名必须为 FirstSample.java。
  • 编译的时候会生成包含这个类字节码的文件,自动命名为 FirstSample.class,并存储在同一目录下。
  • Java 虚拟机总是从指定类中的 main 方法的代码开始执行。
  • Java 用大括号 { } 划分程序的各个部分,通常称为块。
  • 每个句子必须用分号 ; 结束。

3.2 注释

以下是两种常见的注释方式。

System.out.println("We will not use 'Hello, World!'"); // commment here

/*
Comment here
*/


3.3 数据类型

Java 是一种强类型语言,必须为每一个变量声明一种类型。Java 中,一共有8种基本类型(primitive type),其中有4种整型,2种浮点类型,1种字符类型 char,和1种用于表示真值的 boolean 类型。

3.3.1 整型

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

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

在 Java 中,整型的范围与运行的机器无关,这就解决了代码移植的问题。

3.3.2 浮点类型

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

类型存储需求取值范围
float4 字节大约 ± 3.402 823 47E+8F(有效位数6~7位)
double8 字节大约 ± 1.797 693 134 862 315 70E+308(有效位数15位)

float 类型的数值有一个后缀 F 或 f,没有后缀 F 的浮点数值总是默认为 double 类型,也可以在浮点数值后面添加 D 或 d。

三个特殊的浮点数值:

  • 正无穷大 Double.POSITIVE_INFINITY
  • 负无穷大 Double.NEGATIVE_INFINITY
  • NaN Double.NaN

检测一个特定值是否为 NaN:

if (Double.isNaN(x)) // check whether x is "not a number"

3.3.3 char 类型

char 类型用于表示单个字符。
char 类型的字面量值要用单引号括起来。例如:‘A’ 是编码值为65的字符常量。它与 “A” 不同,“A” 是包含一个字符 A 的字符串。char 类型的值可以表示为十六进制值,范围从 \u000 到 \uFFFF。

转义序列名称Unicode 值
\b退格\u0008
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\’单引号\u0027
\\反斜杠\u005c

3.3.4 Unicode 和 char 类型

在 Java 中,char 类型描述了 UTF-16 编码中的一个代码单元
最好避免在程序中使用 char 类型,最好将字符串作为抽象数据类型处理。

3.3.5 boolean 类型

boolean(布尔)类型有两个值:false 和 true,用来判断逻辑条件。整型值和布尔值之间不能进行相互转换。


3.4 变量与常量

Java 用变量来存储值,常量就是值不变的变量。

3.4.1 声明变量

在 Java 中,每个变量都有一个类型(type)。
声明变量的示例如下:

double salary;
int vacationDays;
long earthPoplulation;
boolean done;

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

int i, j;

但不提倡这种风格,逐一声明每个变量可以提高代码的可读性。

3.4.2 变量初始化

声明变量后,必须用赋值语句对变量进行显式初始化。
示例如下:

int vacationDays;
vacationDays = 12;

或:

int vacationDays = 12;

3.4.3 常量

在 Java 中,利用关键字 final 指示常量。
示例如下:

final double CM_PER_INCH = 2.54;

关键字 final 表示这个变量只能被赋值一次。习惯上,常量名使用全大写。
也可以使用类常量(class constant),使用关键字 static final 设置一个类常量。定义通常位于 main 方法的外部:

public class Constant2 {
	public static final double CM_PER_INCH = 2.54;
	public static void main(String[] args) {
		......
	}
}

3.4.4 枚举类型

如果变量的取值只在一个有限的集合内,那么可以自定义枚举类型
例如:

enum Size {SMALL, MEDIUM. LARGE, EXTRA_LARGE};
Size s = Size.MEDIUM;

3.5 运算符

运算符用于连接值,Java 提供了丰富的算术和逻辑运算符以及数学函数。

3.5.1 算术运算符

运算符名称举例
+
-
*
/整数除法 15/2=7, 浮点数除法 15.0/2=7.5
%求余15%2=1

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

3.5.2 数学函数与常量

在 Math 类中,包含了各种各样的数学函数。
例如,计算一个数值的平方根,可以使用 sqrt 方法:

double x = 4;
double y = Math.sqrt(x); // y = 2.0

例如,幂运算:

double x = 4;
double y = Math.pow(x, 2); // y = 16.0

Math 也提供了一些常用的三角函数、反函数、甚至两个表示 π \pi π ϵ \epsilon ϵ 常量的最接近的近似值。

3.5.3 数值类型之间的转换

在这里插入图片描述
蓝线表示无信息丢失的转换,加粗的紫线表示可能有精度损失的转换。

3.5.4 强制类型转换

Java 允许进行数值之间的类型转换,但有可能会丢失一些信息,通过强制类型转换(cast)来完成。
如 double 转 int:

double x = 9.997;
int nx = (int) x; // nx = 9

对浮点数进行舍入运算:

double x = 9.997;
int nx = (int) Math.round(x); // nx = 10

3.5.5 结合赋值和运算符

x += 4; // equal to "x = x + 4"

3.5.6 自增与自减运算符

int n = 13;
n++; // n= 14

建议不要在表达式中使用,会使代码产生困惑。

3.5.7 关系和boolean运算符

3 == 7; // false
3 != 7; // true
4 != 0 && 5 != 1 // "and"
4 != 0 || 5 != 1 // "or"
x < y ? x : y // return the smaller one

3.5.8 位运算符

处理整型类型时,可以直接对组成整数的各个位完成操作。

运算符名称
&and
|or
^xor
~not
>>左移
<<右移

3.5.9 括号与运算符级别

略。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值