第二章 基本程序设计

2.1 引言
2.2 编写简单的程序

编程逻辑

1⃣️以算法的形式来勾勒程序,设计解决方案

2⃣️编写代码

小知识

变量代表了存储在计算机内存中的一个值。变量名应该尽量选择描述性的名字, 而不是用 x 和 y 这样的名字

如果一个字符串和一个数值连接,数值将转化为字符串,然后再和另外一个字符串连接

2.3 从控制台读取输入

本书前面章节的大多数程序分三个步骤执行,即输入、处理和输出,这被称为IPO;输入是从用户那里获得输入,处理是使用输入产生结果,而输出是显示结果

import 语句有两种类型:明确导入 ( specific import) 和通配符(*)导入(wildcard import)

你的程序应该在希望得到键盘输人的时候 ,告知用户输入什么。

输入多个数字时,可以输入3个用空格分开的数字,也可以每输入一个数字后就按一次回车键

2.4 标识符

标识符用于命名程序中的变量、方法、类和其他项。避免采用缩写作为标识符,要使用完整的描述性词汇

Java 是区分大小写的, area、Area 和 AREA 都是不同的标识符

规则:

• 标识符是由字母、数字、下划线( )和美元符号($)构成的字符序列

• 标识符必须以字母、下划线(_)或美元符号($)开头,不能以数字开头。 (习惯上,美元符号只用在机器自动产生的源代码中)

• 标识符不能是保留字

• 标识符不能是true、false或null

• 标识符可以为任意长度

2.5 变量

变量用于表示在程序中可能被改变的值

int i;
int i, j, k;
int count = 1;
int i = 1, j = 2;

在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被斌值。任何时候,都要尽可能一步完成变量的声明和斌初值。这会使得程序易读,同时避免程序设计错误

2.6 赋值语句和赋值表达式

variable expression;(变量 = 表达式)

2.7 (命名)常量 - (named) constant

final datatype CONSTANTNAME = value;

使用常量有三个好处: 不必重复输入同一个值; 如果必须修改常量值,只需在源代码中的一个地方做改动; 给常量赋值一个推述性名字会提高程序易读性。

2.8 命名习惯

• 使用小写字母命名变量和方法。如果一个名字包含多个单词,就将它们连在一起, 第一个单词的字母小写,而后面的每个单词的首字母大写

• 类名中的每个单词的首字母大写,例如,类名ComputeArea和System。
• 大写常量中的所有字母,两个单词间用下划线连接,例如,常量PI和常量MAX_VALUE

2.9 数值数据类型和操作

整数:byte, short, int, long

浮点数:float(单精度), double(双精度,因为范围是2倍),计算结果也更精确,一个float值有7到8位小数位,一个double值有15到17位小数位

幂运算:使用方法Math.pow(a,b)来计算JAVA白皮书多少页 java编程黑皮书_JAVA白皮书多少页,Math 类是在 java.lang 包中,而 java.lang 包中的所有类是隐式被导入的。因此,不需要显式地导人 Math 类

当被除数是负数时,%运算符的结果也为负数

一元操作符仅有一个操作数;而二元操作符有两个操作数。例如,在-5中,负号-可以认为是一元操作符,是对正数5取负数值,而在表达式4-5中,负号-是二元操作符,是从4中减去5。

2.10 数值型直接量
整形直接量

默认int:2147483648 - 2147483647

支持long:2147483648L/2147483648l

浮点型直接量

默认double:100.2/100.2D/100.2d

支持float:100.2f/100.2F

科学计数法

1.23456 * JAVA白皮书多少页 java编程黑皮书_JAVA白皮书多少页_02

1.23456 * JAVA白皮书多少页 java编程黑皮书_JAVA白皮书多少页_03

为了提高可读性,Java 允许在數值直接量的两个数字间使用下划线。int num = 232_111;

2.11 表达式求值以及操作符优先级

Java 表达式的结果和它对应的算术 表达式的结果是一样的

2.12 示例学习
2.13 增强赋值操作符

+=, -=, *=, /=, %=

2.14 自增和自减操作符
i++/++i :自加1
i–/–i:自减1
++var:使用+1后的变量var新值
var++:使用+1前的变量var原有值
–var:使用-1后的变量var新值
var–:使用-1前的变量var原有值
 public class Main{
 public static void main(String[] args) {
 int x = 3;
 int y = 5;
 int z = (x++) + --y;
 System.*out*.println(x);
 System.*out*.println(y);
 System.*out*.println(z);
 }
 }
Output:
 4
 4
 7
2.15 数值类型转换

二元运算中,一个操作数是整数,而另一个操作数是浮点数,Java 会自动地将整数转换为浮点值

总是可以将一个数值赋给支持更大数值范围类型的变量,但是,如果不进行类型转换,就不能将一个值賦给范围较小类型的变量

类型转换之后不会改变原类型

double d = 4.5;
 int i = (int)d; //i becomes 4, but d is still 4.5
 public class Main{
 public static void main(String[] args) {
 int sum = 0;
 sum += 4.5;
 sum += 4.5;
 System.*out*.print(sum);
 }
 }
output
 8
保留2位小数
 public class Main{
 public static void main(String[] args) {
 double income = 5396.99;
 double tax = income * 0.16;
 System.*out*.println("Tax is " + (int)(tax * 100) / 100.0);
 //tax * 100 是 863.5184
 //(int)(tax * 100〉是 86351,不会四舍五入
 //(Int)(tax * 100) / 100.0 是 863.51
 }
 }
2.16 软件开发过程

需求规范(做什么)-系统分析(倒序,明白输出,弄清输入)-系统设计(正序,理清输入、输出逻辑)-实现(编写代码)-测试(确保规范,排除错误)-部署(给用户使用)-维护(产品更新改进)

软件开发的任何阶段都有可能回到之前的阶段改正错误

2.17 示例学习
2.18 常见错误和陷阱

未声明、未初始化的变置和未使用的变量

整数溢出

取整错误

超出预期的整数除法