语言基础
变量
在面向对象的编程概念中提到过,对象将其状态存储到字段中。
int cadence = 0;
int speed = 0;
int gear = 1;
变量(字段)命名规则和约定是什么?
有哪些数据类型?
是否必须初始化?
未显示初始化时是否分配了默认值?
Java 编程语言定义了以下类型的变量:
- 实例变量(非静态字段): 从技术上讲,对象将其单个状态存储在“非静态字段”中,即声明没有 static 关键字修饰。非静态字段也称为实例变量,因为它们的值对于类的每个实例是唯一的;一辆自行车是独立于另一个自行车的;
- 类变量(静态字段):类变量是使用 static 关键字修饰的字段;这告诉编译器无论该类实例化多少次,此变量确实存在一个副本。可以将特定类型自行车的齿轮数的字段标记为静态,因此从概念上将,相同数量的齿轮将应用于所有情况。静态代码 static int numBears = 6,将创建这样一个静态字段。另外,可以添加关键字 final,以指示档位数量永远不会改变;
- 本地变量: 本地变量与对象在字段中存储其状态的方式类似,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段;
- 参数:变量是方法的参数。参数总是被归类为变量而不是字段。
变量命名规范
- 变量名称大小写敏感;
- 以字母、美元符号、下划线开头;但是约定是始终以字母开头,且永远不会使用美元符号这样的特殊字符;
- 变量名称可以是任何合法Unicode字母和数字的无线长度序列;
- 使用完整的单词而不是模糊不清的缩写;
- 变量名不能是关键字或保留字;
- 一个单词时全部小写,多个单词时第一个单词全小写后续单词首字母大写;
- 变量存储的是一个常量值时字母全部大写,并用下划线字符分隔后续单词。
操作符
下表中运算符优先级由高到低,同一行上的运算符具有相同优先级。所有二进制运算符均从左到右进行计算;从右到左计算赋值运算符。
Operators | Precedence |
---|---|
postfix | expr++ expr– |
unary | ++expr --expr +expr -expr ~ ! |
multiplicative | * / % |
additive | + - |
shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
ternary | ? : |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
表达式、语句和块
已经了解了变量和运算符,是时候了解表达式、语句和块了。运算符可以用于生成表达式,该表达式计算值;表达式是语句的核心组件;语句可以分组到块中。
表达式
表达式是由变量、运算符和方法调用组成的构造,这些构造时根据语言的语法构造的,其结果为单个值。例如:
int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);
int result = 1 + 2;
if (value1 == value2) {
System.out.println("value1 == value2");
}
语句
语句大致等同于自然语言中的句子。语句构造完整的执行单元。通过分号终止表达式,可以将以下类型的表达式转换为语句。
- 赋值表达式;
- 任何使用 ++ 或 --;
- 方法调用;
- 对象创建表达式
此类语句成为表达式语句。例如:
// assignment statement
aValue = 8933.234;
// increment statement
aValue++;
// method invocation statement
System.out.println("Hello World!");
// object creation statement
Bicycle myBike = new Bicycle();
除了表达式语句之外,还有另外两种类型的语句:声明语句和流程控制语句
// declaration statement
double value = 3.14;
块
块是大括号中的一组零个或多个语句,可以在允许单个语句的任何位置使用。例如:
class BlockDemo {
public static void main(String[] args) {
boolean condition = true;
if (condition) { // begin block 1
System.out.println("Condition is true.")
} // end block 1
else { // begin block 2
System.out.println("Condition is false.");
} // end block 2
}
}
控制流语句
if-then, if-then-else
switch
white, do-while
for
branching statements