基本语法:
变量:
定义变量: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); } |