持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情
3、关键字
定义:被Java语言赋予了特殊含义,用做专门用途的字符串
特点:关键字中所有的字母都是小写。
| 访问控制 | private | protected | public | ||||
|---|---|---|---|---|---|---|---|
| 类,方法和变量修饰符 | abstract | class | extends | final | implements | interface | native |
| new | static | strictfp | synchronized | transient | volatile | ||
| 程序控制 | break | continue | return | do | while | if | else |
| for | instanceof | switch | case | default | |||
| 错误处理 | try | catch | throw | throws | finally | ||
| 包相关 | import | package | |||||
| 基本类型 | boolean | byte | char | double | float | int | long |
| short | null | true | false | ||||
| 变量引用 | super | this | void | ||||
| 保留字 | goto | const |
3.1、标识符和关键字的区别?
在我们编写程序的时候,需要大量地为程序、类、变量、方法等取名字,于是就有了标识符,简单来说,标识符就是一个名字。但是有一些标识符,Java 语言已经赋予了其特殊的含义,只能用于特定的地方,这种特殊的标识符就是关键字。因此,关键字是被赋予特殊含义的标识符。比如,在我们的日常生活中 ,“警察局”这个名字已经被赋予了特殊的含义,所以如果你开一家店,店的名字不能叫“警察局”, “警察局”就是我们日常生活中的关键字。
4、标识符
定义:Java所有的组成部分都需要名字。类名、变量名以及方法名都被成为标识符。
- 由26个英文字母大小写,
0-9、_、$组成。 - 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。
5、运算符
运算符包含6种:
5.1、算术运算符
算术运算符: +、- 、*、/、%、(前)++、 (后)++、(前)--、(后)-- +
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| + | 正号 | +7 | 7 |
| - | 负号 | b=11, -b | -11 |
| + | 加 | 9+9 | 18 |
| - | 减 | 10-8 | 2 |
| * | 乘 | 7*7 | 49 |
| / | 除 | 9/9 | 1 |
| % | 取模(取余) | 11%9 | 2 |
| ++ | 自增(前):先运算后取值 自增(后):先取值后运算 | a=2;b=++a a=2;b=a++ | a=3;b=3 a=3;b=2 |
| -- | 自减(前):先运算后取值 自减(后):先取值后运算 | a=2;b=--a a=2;b=a-- | a=1;b=1 a=1;b=2 |
| + | 字符串相加 | "hsp" + "edu" | "hsp edu" |
【特别说明】
(前)++:先自增1,后运算(后)++:先运算,后自增1(前)--:先自减1,后运算(后)--:先运算,后自减1+:连接符,只能使用在String与其他数据类型变量之间使用。
- 面试一:
下列输出结果为?
int a = 8; int b =(a++)+(++a)+(a*10);
分析解剖:int b=(a++)+(++a)+(a * 10); 可拆分为:c=(a++);d=(++a);e=(a * 10); 所以:int b=c+d+e; 从左到右依次计算; a++为先使用再自增,使用a=8先复制给c=8后,a再自增为9,a再更新变量为:9 ++a先自增,再使用,当a=9时,++a先自增为10后,更新变量为10;再赋值给d;此时d=10; 跟新的变量a=10,所以e=((a=10)*10)=100;所以e=100; 故,int b=c+d+e=8+10+100=118;
所以:int b=(a++)+(++a)+(a*10)=118;
public class Test {
public static void main (String[] args){
int a = 8;
int b =(a++)+(++a)+(a*10);
System.out.prinln(b);//118
}
}
- 面试二:
下列输出结果为:
int i = 0;
i = ++i;
System.out.println(i);
int i = 0;
i = i++;
System.out.println(i);
分析:
i = ++i; //++i为先自增,在使用 //底层原理: //i = (int)(i+1); //i = i; System.out.println(i);//1
i = i++;//i++为先使用,再自增 //底层原理: //int temp = i;–temp用于记录i最初的值 //i = (int)(i+1); //i = temp System.out.println(i);//0
public class Test{
public static void main (String[] args){
int i = 0;
i = ++i;
System.out.println(i);//i=1
int i = 0;
i = i++;
System.out.println(i);// i=0
}
}
5.2、赋值运算符
赋值运算符使用操作符=来表示,它的意思是把=号右边的值复制给左边,右边的值可以是任何常数、变量或者表达式,但左边的值必须是一个明确的,已经定义的变量。比如:int a = 4。
对于对象来说,复制的不是对象的值,而是对象的引用,所以如果说将一个对象赋值给另一个对象,实际上是将一个对象的引用赋值给另一个对象。
| 操作符 | 描述 | 例子 | |||
|---|---|---|---|---|---|
| = | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C | |||
| += | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A | |||
| -= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A | |||
| *= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A | |||
| /= | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | 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 |