Java语言基础
Java的语言基础包括,变量的命名规则和惯例、基础的数据类型(原始类型、字符串、数组)、默认值、常量、运算符、控制流。
1. 变量
1.1 实例变量
实例,指的是类创建的对象实例。对象实例的属性(变量)是非静态属性,是在类中未用static关键字声明的属性(变量)。
1.2 类变量
在类中用关键字static声明的变量是类变量,用static关键字声明的意义在于告诉编译器,不管这个类被实例化了多少次,static修饰的变量只有一个副本存在。
关键字final(不可改变的),用来修饰一个变量是不可被修改的。
static int numGears = 6; //声明一个类变量,类变量只有一个副本存在
static final int numGears = 6; //声明一个类变量,并且用final来表示这个变量是不可被实例修改的
1.3 局部变量
在类中,使用类变量和实例变量来存储类的属性,在方法中可以使用局部变量存储暂时的状态。局部变量的作用域是声明这个变量的方法,不会被其他的类访问到。
1.4 参数
参数也是变量,通过参数传递给方法一个确切的值,让方法能够根据参数来计算最终的结果。
1.5 变量的命名规则
- 变量的命名区分大小写
- 允许无限长度的unicode字符和数字、美元符号、下划线作为变量的开头。但是一般不使用
$或者_来作为变量的开头,一些情况下自动生成的变量会用$作为变量的开头,而下划线变量也拥有类似的惯例存在,所以一般不使用$或者_来作为变量的开头。 - 变量除了开头之外的其他字符,可以使用
$,_或者其他可见字符来定义。变量应该具有较强的可读性,不应该是一个神秘的缩写哈哈哈。 - 变量不能是关键字或者保留字,比如不能是
final,int,staic等等已经被Java用作关键字或者保留字的字符序列。 - 驼峰式变量命名法:
numGears,currentGear等都是驼峰式命名法,如果一个变量是由一个单词命名,则这个单词小写,如果是多个单词命名,则第一个单词的首字母小写,其他单词的首字母大写。(这只是一种命名规范,并不是Java语言的强制要求) - 常量的命名规范:如果一个属性值是一个常量,其变量中的单词都应该大写,并且单词与单词之间用下划线连接,如:
static final int NUM_GEARS = 6;
2. 运算符
操作数使用运算符来作运算,并且返回结果。
运算符具有优先级,在表格中顶部的运算符优先级最高,在一个运算中,优先作优先级较高的运算。
| 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 | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
3. 表达式,语句和块
运算符可以用来构建表达式,表达式用来计算值。表达式是语句的核心组成部分,而语句可以被分组为块。
3.1 表达式
表达式是由变量、运算符和方法调用组成的构造。
int cadence = 0;
anArray[0] = 100;
System.out.println( "Element 1 at index 0: " + anArray[0] );
int result = 1 + 2; // result is now 3
if (value1 == value2)
System.out.println( "value1 == value2" );
表达式返回值的类型取决于表达式使用的变量的数据类型。
3.2 语句
编程语言的语句相当于自然语言的语句,一条语句构成一个完整的执行单元。下列表达式通过以;结束来组成语句。
- 赋值表达式
- ++ 、-- 表达式
- 方法调用表达式
- 对象创建表达式
下面代码是 表达式语句 的示例:
// 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 aValue = 8933.234;
控制流程语句调节语句的执行顺序
int aValue = 2;
if (aValue > 1){
System.out.println("aValue 大于 1");
}else{
System.out.println("aValue 不小于 1");
}
3.3 块
块是用花括号包含的零个或多个语句,可以在允许单个语句的任何地方使用。
class BlockDemo {
public static void main(String[] args) {
boolean condition = true;
if (condition) { // begin block 1
System.out.println("Condition is true.");
} // end block one
else { // begin block 2
System.out.println("Condition is false.");
} // end block 2
}
}
4. 控制流程
控制流程语句包含条件语句(if-then,if-then-else,switch),循环语句(for,while,do-while),分支语句(break,continue,return),这些流程控制语句根据情况用来决策程序执行的顺序。