2.1 编写简单的程序
编写程序设计如何设计算法以及如何将算法翻译成程序指令,即代码。
算法描述的是:如果要解决一个问题,所需要执行的动作以及这些动作的执行顺序。算法可以帮助程序员在使用程序设计语言编写程序之前进行规划。算法可以用自然语言或者伪代码(即自然语言和程序设计代码混在一起使用)描述。
变量代表存储在计算机内存中的一个值。变量名应该尽量选择描述性的名字。
声明变量:指明变量的数据类型。
2.2 从控制台读取输入
{
Scanner input = new Scanner(System.in);
double radius = input.nextDouble();
}
new Scanner(System.in):创建一个Scanner类型的对象。
Scanner input:声明input是一个Scanner类型的变量。
nextDouble():对象可以调用其方法。调用对象的方法就是让这个对象执行某个任务。调用nextDouble()方法来读取一个double值。
有两种类型的import语句:明确导入(specific import)和通配符导入(wildcard import)。
除非要在程序中使用某个类,否则被导入包中的这些类的信息在编译时或运行时是不被读入的。导入语句只是告诉编译器在什么地方能找到这些类。声明明确导入和声名通配符导入在性能上是没有什么差别的。
2.3 标识符
标识符(identifier)
规则略
2.4 变量
变量用于程序中可能被改变的值。
变量用于表示某种类型的数据。变量声明通知编译器根据数据类型为变量分配合适的内存空间。
声明变量的语法如下:datatype variableName;
在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被赋值。尽量一步完成变量的声明和赋初值。这会使得程序易读,同时避免程序设计错误。
2.5 赋值语句和赋值表达式
赋值语句将一个值指定给一个变量。在Java中赋值语句可以作为一个表达式。
变量在声明之后,可以使用赋值语句(assignment statement)给它赋一个值。在Java中,将等号(=)作为赋值操作符(assignment operator)。赋值语句的雨打如下所示:
variable = expression;
表达式(expression)表示包含值、变量、操作符的一次计算,它们组合在一起得出一个新值。
2.6 命名常量
命名常量(named constant)表示从不改变的数据。Java中常量也称为final修饰的变量。下面是声明常量的语法:
final datatype CONSTANTNAME = value;
常量必须在同一条语句中声明和赋值。final是声明常量的关键字。
使用常量有3个好处:
1.当一个值多次使用时,不许重复输入。
2.如果必须修改常量值,只需在源代码中的一个地方做改动。
3.给常量赋一个描述性名字会提高程序易读性。
2.7 命名习惯
使用小写字母命名变量和方法,如果一个命名包含多个单词,就将它们连在一起,第一个单词的字母小写,而后面每个单词的首字母大写。(驼峰命名法)
类名中的每个单词的首字母大写。
常量中的所有字母大写,两个单词间用下划线连接。
2.8 数值数据类型和操作
2.8.1 数值类型
P39略
2.8.2 从键盘读取数值
{
Scanner scannerName = new Scanner(System.in);
Byte a = scannerName.nextByte();
short a = scannerName.nextShort();
int a = scannerName.nextInt();
long a = scannerName.nextLong();
float a = scannerName.nxetFloat();
double a = scannerName.nextDouble();
}
2.8.3 数值操作符
加、减、乘、除、取余(取模)
2.8.4 幂运算
使用Math.pow(a,b)来计算a^b。
pow方法定义在Java API的Math类中。
2.9 数值型字面值
字面值(literal)是程序中直接出现的常量值。
2.9.1 整型字面值
只要整型字面值与整型变量相匹配,就可以将整型字面值赋给该整型变量。如果字面值太大,超出该变量的存储范围,就会出现编译错误。
整型字面值默认是int型的,为了表示一个long型的整型字面值,需要在其后加字母L。
为了提高可读性,Java允许在一个数值型字面值的两个数字间使用下划线。
2.9.2 浮点型字面值
浮点型字面值带小数点,默认情况下是double型的。可以通过在数字后面加字母F表示该数为float型字面值,也可以在数字后面加D表示该数为double型字面值。
2.9.3 科学记数法
浮点型字面值也可以用a x 10^b形式的科学计数法表示。
1.23456 x 10^2 可以写成1.23456E2或者1.23456E+2 E表示指数,既可以用大写字母也可以用小写字母。
float型和double型都是用来表示带有小数点的数。因为这些数在计算机内部都是以科学记数法的形式进行存储的。但一个像50.534的数被转换为科学记数法的形式时,它就是5.0534E+1,它的小数点移到(即浮动到)一个新的位置。
2.10 表达式求值以及操作符优先级
P44略
2.11 示例学习:显示当前时间
可以通过调用System.currentTimeMillis()返回当前时间。
开发一个以GMT(格林尼治标准时间)来显示当前时间的程序,以小时:分钟:秒的格式来显示。
System类中的方法currentTimeMillis返回从GMT 1970年1月1日00:00:00开始到当前时刻的毫秒数。时间戳是时间开始计时的点,因为1970年是UNIX操作系统正式发布的时间,所以这一时间也称为UNIX时间戳(UNIX epoch)。
2.12 增强赋值操作符
数值操作符结合赋值操作符形成增强操作符。
符号+=称为加法赋值操作符(addition assignment operator)。
增强赋值操作符在表达式中所有其他操作符计算完成后执行。
2.13 自增和自减操作符
自增操作符(++)和自减操作符(–)对变量进行加1或减1的操作。
i++ 称为后置自增操作符, ++i称为前置自增操作符
|操作符|名称|描述|示例(假设i = 1)|
|-|-|-|-|
|++var|前置自增|将var加1,在语句中使用新的var值|int j = ++i;//j is 2,i is 2|
|var++|后置自增|将var加1,但是在语句中使用原来的var值|int j = i++;//j is 1,i is 2|
|–var|前置自减|将var减1,在语句中使用新的var值|int j = –var;//j is 0,i is 0|
|var–|后置自减|将var减1,但是在语句中使用原来的var值|int j = i–;//j is 1,i is 0|
2.14 数值类型转换
通过显式转换,浮点数可以被转换为整数
类型转换是将一种数据类型的值转换成另一种数据类型的值的操作。将范围较小的类型转换为范围较大的类型称为扩展类型(widening a type),而将范围较大的类型转换为范围较小的类型称为缩小类型(narrowing a type)。Java将自动扩展一个类型,但缩小类型必须显式完成。
类型转换不改变被转换的变量。
Java中,x1 op= x2形式的增强赋值表达式实现为x1 = (T)(x1 op x2),这里T是x1的类型。
2.15 软件开发过程
开发软件产品是一个工程过程。软件产品无论大小,都具有同样的生命周期:需求规范、分析、设计、实现、测试、部署和维护。