第2章:结构化程序设计基础
1.标识符、关键字和数据类型
1.1 字符集和标识符
- Java语言采用Unicode 16字符集(16bits存储格式),包括中文在内。
- 凡是自己可以起名字的地方都叫标识符,都遵循标识符的规则:
- 由字母、下划线“_”、“$”符号(不能有其他特殊符号)或数字组成
- 不能以数字开头
- 大小写敏感、长度无限制,但Java系统最多可以识别前255个字符
- 不能与Java的关键字重复
1.2 关键字
- Java语言共规定了48个关键字,Java语言关键字都是小写的
- 在Java中保留但已经不再使用的2个关键字:const,goto
1.3 数据类型
(1)整数类型
- 整数类型的默认型为int型,声明long型常量要在数字尾部加l或L
(2)浮点类型
- 浮点类型的默认型为double型,声明float型常量要在数字尾部加f或F
(3)字符类型
- char用单引号
- 支持转义字符
- 此外,Java语言把字符串定义为一个类——String类,它不包括在8种基本数据类型当中,字符串数据必须用双引号括起来
(4)逻辑类型
- Java语言中,逻辑类型与整数类型不能进行直接转换,与C/C++不同
基本数据类型转换
- boolean类型不可以转换,其他基本数据类型转换规则如下:
- 多种类型数据混合运算时,系统首先自动将所有的数据转换成容量大的那种数据类型,然后再进行计算。
- 数据类型按容量排序为:
- byte, short, char < int < long < float < double
- byte, short, char之间不会相互转换,他们三者在计算时首先转换为int类型
- 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出。
1.4 常量
- 文字常量:所有基本数据类型都可以定义常量,其取值范围内的值都可以被表示成文字常量
整型常量:123 实型常量:3.14159
字符常量:‘a’ 逻辑常量:true、false - 符号常量:用“final”修饰,其值在赋值之后将不能再作改动
static final PI=3.14159;
1.5 变量
- 任何变量、数组、对象实例在使用之前必须经过声明、创建和初始化
- 声明是要把代表变量的标识符作出说明
- 创建是为其分配存储空间
- 变量的初始化:
方法体外声明的变量,系统可自动赋初值(类成员变量)
方法体内声明的变量,需由语句赋初值(局部变量)
- 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(初始化),才能够使用。
1.6 程序执行过程
2.操作符
- Java的操作符基本上继承了C和C++的操作符体系,从形式到功能,包括优先级和结合性与C和C++的操作符非常相似。
- Java取消了结构体成员操作符“->”,指针操作符“*”和“&”,长度操作符“sizeof”。
2.1 赋值操作符 =
基本类型与引用类型的赋值区别
大多数基本类型赋的值在栈里,引用类型值在堆里
例2.3:
n1=n2是将n1指向了n2所指向的空间
之后改变n1.i,n2.i也会改变(有点像指针,但不是指针)
2.2 数学运算符
++i:首先将i自增
i++:最后将i自增
2.3 关系操作符
适用于基本类型;
equals()适用于对象类型;
例2.5:
s1s2是比较在栈中的s1和s2,结果false
s1.equals(s2)是比较指向的堆中的两个对象的内容是否相同,结果true
进一步辨析==与equals():
写法"“.equals(userName)比userName.equals(”")更好
2.4 逻辑操作符
在C和C++中,用整型数据替代逻辑型数据;而JAVA中整型数据与逻辑型数据不存在互换关系。
Java语言改变了C和C++中对下面6个操作符的定义:
- “!”操作符将原有的“逻辑非”运算修改定义为对逻辑数据的“逻辑非”运算;
- “&&”操作符将原有的“逻辑与”运算修改定义为对两个逻辑数据的“逻辑与”运算;
- “||”操作符将原有的“逻辑或”运算修改定义为对两个逻辑数据的“逻辑或”运算。
- “&”操作符将原有的“按位与”运算修改定义为对两个整数的“按位与”运算和对两个逻辑数据的“逻辑与”运算;
- “|”操作符将原有的“按位或”运算修改定义为对两个整数的“按位或”运算和对两个逻辑数据的“逻辑或”运算;
- “^”操作符将原有的“按位异或”运算修改定义为对两个整数的“按位异或”运算和对两个逻辑数据的“逻辑异或”运算;
&&、||与&、|的区别:
- “&&”和“||”在计算逻辑值时,如果仅靠左运算数即可判定运算结果时,右运算数的值将不被计算,所以它们也被称为“条件与”和“条件或”。
- 而“&”和“|”在计算逻辑值时,总是将两个运算数的值都计算出来之后再作逻辑运算。
2.5 位操作符和移位操作符
位操作符和位移操作符用来对二进制位进行运算,操作数应是整数类型,结果也是整数类型。下表给出了各操作符及其功能。
2.6 字符串操作符
2.7 三元条件操作符
同C/C++
3.表达式与语句
同C/C++
4.控制流程
顺序、分支、循环同C/C++;
跳转:
1.Java没有goto
2.label功能:带label的break语句和continue语句可实现类似goto的功能,用法如下
5.良好的Java代码规范