基本语法:
变量:
定义变量:type identifier [ = value][, identifier [= value] ...] ;
局部变量,类的实例变量和类变量(静态变量)的使用示例:
import java.util.Random;; public class Student { String name; //实例变量 int age; static int studentCount = 0; //类变量(静态变量)
public Student(String n, int a) { name = n; age = a; studentCount++; }
public void sayHello() { System.out.println("Hello, I'm " + name + ", I'm " + age + " years old."); }
public void doSomeWork() { Random r = new Random(); int workload = r.nextInt(4) + 1; //局部变量 System.out.println(name + " is doing work for " + workload + " hours."); }
public static void showStudentCount() { switch(studentCount) { case 0: System.out.println("No student at all."); break; case 1: System.out.println("There is only one student."); break; default: System.out.println("There are " + studentCount + " students."); } } }
//Application.java public class Application { public static void main(String[] arguments) { Test(); }
public static void Test() { Student.showStudentCount(); Student s1 = new Student("Daniel", 21); Student.showStudentCount(); Student s2 = new Student("Peter", 22); Student s3 = new Student("Bruce", 28); Student.showStudentCount(); s1.doSomeWork(); s2.doSomeWork(); s3.doSomeWork(); } } |
输出:
No student at all. There is only one student. There are 3 students. Daniel is doing work for 4 hours. Peter is doing work for 4 hours. Bruce is doing work for 2 hours. |
算术运算符:
运算符 |
描述 |
示例(A=10,B=20) |
+ |
加法 - 相加运算符两侧的值 |
A + B 等于 30 |
- |
减法 - 左操作数减去右操作数 |
A – B 等于 -10 |
* |
乘法 - 相乘操作符两侧的值 |
A * B等于200 |
/ |
除法 - 左操作数除以右操作数 |
B / A等于2 |
% |
取模 - 左操作数除右操作数的余数 |
B%A等于0 |
++ |
自增: 操作数的值增加1 |
B++ 或 ++B 等于 21,前缀运算符表示先递增再返回值,后缀运算符表示先返回值再递增 |
-- |
自减: 操作数的值减少1 |
B-- 或 --B 等于 19,区别同上 |
关系运算符:
运算符 |
描述 |
示例(A=10,B=20) |
== |
检查如果两个操作数的值是否相等,如果相等则条件为真 |
A == B 为假 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真 |
A != B 为真 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真 |
A > B 为假 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真 |
A < B 为真 |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真 |
A >= B 为假 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真 |
A <= B 为真 |
位运算:
运算符 |
描述 |
示例(A=60,即 00111100, B=13,即 00001101) |
& |
如果相对应位都是1,则结果为1,否则为0 |
A&B = 12,即0000 1100 |
| |
如果相对应位都是0,则结果为0,否则为1 |
A | B = 61,即 0011 1101 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
A ^ B = 49,即 0011 0001 |
〜 |
按位补运算符,翻转操作数的每一位,即0变成1,1变成0 |
〜A = -61,即1100 0011 |
<< |
按位左移运算符,左操作数按位左移右操作数指定的位数 |
A << 2 = 240,即 1111 0000 |
>> |
按位右移运算符,左操作数按位右移右操作数指定的位数 |
A >> 2 = 15,即 1111 |
>>> |
按位右移补零操作符,左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 |
A>>>2 = 15,即0000 1111 |
逻辑运算符:
运算符 |
描述 |
示例(A=true,B=false) |
&& |
逻辑与运算符。当且仅当两个操作数都为真,条件才为真 |
A && B = false |
| | |
逻辑或操作符。如果任何两个操作数任何一个为真,条件为真 |
A | | B = true |
! |
逻辑非运算符。用来反转操作数的逻辑状态 |
!A = false |
赋值运算符:
运算符 |
描述 |
示例 |
= |
将右操作数的值赋给左侧操作数 |
C = A + B |
+= |
把左操作数和右操作数相加赋值给左操作数 |
C += A 等价于 C = C + A |
-= |
把左操作数和右操作数相减赋值给左操作数 |
C -= A 等价于 C = C - A |
*= |
把左操作数和右操作数相乘赋值给左操作数 |
C *= A 等价于 C = C * A |
/ = |
把左操作数和右操作数相除赋值给左操作数 |
C /= A 等价于 C = C / A |
%= |
把左操作数和右操作数取模后赋值给左操作数 |
C %= A 等价于 C = C % A |
<<= |
左移位赋值运算符 |
C <<= 2 等价于 C = C << 2 |
>>= |
右移位赋值运算符 |
C >>= 2 等价于 C = C >> 2 |
&= |
按位与赋值运算符 |
C &= 2 等价于 C = C & 2 |
^= |
按位异或赋值操作符 |
C ^= 2 等价于 C = C ^ 2 |
|= |
按位或赋值操作符 |
C | = 2 等价于 C = C | 2 |
其他重要的运算符:
- 条件运算符(三目运算符)“?:”:
定义:variable var = <expression> ? <value if true> :<value if false>
- instanceof 运算符:
定义:<Object reference variable> instanceof <class/interface type>
条件控制:
if语句:
if (<条件1>) { //如果<条件1>的值为true执行代码 } else if (<条件2>) { //如果<条件2>的值为true执行代码 } else if (<条件3>) { //如果<条件3>的值为true执行代码 } else { //如果以上 布尔表达式 都不为true执行代码 } |
switch语句:
switch (<表达式>) { case <value1>: //语句 break; //可选 case <value2>: //语句 break; //可选 default : //可选 //语句 } |
注意事项:
- case 标签必须为字符串常量或字面量
- 当变量的值与 case语句的值相等时,那么 case语句之后的语句开始执行,直到 break语句出现才会跳出 switch语句(即可以多个case公用一段执行语句)
- default 分支不需要 break语句
循环:
while循环:
while (<条件>) { //循环内容 } |
do…while循环:
do { //循环代码 } while (<条件>); |
for循环:
for (<初始化变量>; <条件>; <变量修改>) { //循环代码 } |
用于数组的for循环变体(类似于C#的foreach):
for (<声明语句> : <数组或返回数组的表达式>) { //代码句子 } |
示例:
public static void Calculate() { int [] nums = {1 ,2 ,3, 4, 5}; int total = 0; for(int i : nums) { total += i; } System.out.println(total); } |