赞
踩
Table of Contents
关键字对 Java 技术编译器有特殊的含义,它们可标识数据类型名或程序构造(construct)
名。
其实就是个约定或者规定,比如我们看到红灯就知道要停下来,看到绿灯就可以前进了。这
些都是人类约定好的游戏规则,在我们的日常生活中有特殊的意义,不可改变,违反它就要付出
代价。
关键字是 Java 语言和 Java 的开发和运行平台之间的约定,程序员只要按照这个约定使用
了某个关键字,Java 的开发和运行平台就能够认识它,并正确地处理,展示出程序员想要的效
果。
关键字详解:
• abstract:表明类或类中的方法是抽象的;
• assert:声明断言;
• boolean:基本数据类型之一,布尔类型;
• break:提前跳出一个块;
• byte:基本数据类型之一,字节类型;
• case:在 switch 语句中,表明其中的一个分支;
• catch:用于处理例外情况,用来捕捉异常;
• char:基本数据类型之一,字符类型;
• class:类;
• continue:回到一个块的开始处;
• default:用在 switch 语句中,表明一个默认的分支;
• do:用在"do while"循环结构中;
• double:基本数据类型之一,双精度浮点数类型;
• else:在条件语句中,表明当条件不成立时的分支;
• extends:用来表明一个类是另一个类的子类;
• final:用来表明一个类不能派生出子类,或类中的方法不能被覆盖,或声明一个变量是常量;
• finally:用于处理异常情况,用来声明一个肯定会被执行到的块;
• float:基本数据类型之一,单精度浮点数类型;
• for:一种循环结构的引导词;
• if:条件语句的引导词;
• implements:表明一个类实现了给定的接口;
• import:表明要访问指定的类或包;
• instanceof:用来测试一个对象是否是一个指定类的实例;
• int:基本数据类型之一,整数类型;
• interface:接口;
• long:基本数据类型之一,长整数类型;
• native:用来声明一个方法是由与机器相关的语言(如 C/C++/FORTRAN 语言)实现的;
• new:用来申请新对象;
• package:包;
• private:一种访问方式:私有模式;
• protected:一种访问方式:保护模式;
• public:一种访问方式:公共模式;
• return:从方法中返回值;
• short:基本数据类型之一,短整数类型;
• static:表明域或方法是静态的,即该域或方法是属于类的;
• strictfp:用来声明 FP-strict(双精度或单精度浮点数)表达式,参见 IEEE 754 算术规范;
• super:当前对象的父类对象的引用;
• switch:分支结构的引导词;
• synchronized:表明一段代码的执行需要同步;
• this:当前对象的引用;
• throw:抛出一个异常;
• throws:声明方法中抛出的所有异常;
• transient:声明不用序列化的域;
• try:尝试一个可能抛出异常的程序块
• void:表明方法不返回值;
• volatile:表明两个或多个变量必须同步地发生变化;
• while:用在循环结构中;
• enum:声明枚举类型;
1. 这些关键字的具体含义和使用方法,会在后面使用的时候详细讲述。
2. Java 的关键字也是随新的版本发布在不断变动中的,不是一成不变的。
3. 所有关键字都是小写的;
在 Java 编程语言中,标识符是标识变量、类或方法的有效字符序列。简单地说标识符就是一个名字。
命名规则如下:
(1)首字母只能以字母、下划线、$开头,其后可以跟字母、下划线、$和数字。示例:$abc 、 _ab 、ab123 等都是有效的。
(2)标识符不能是关键字。
(3)标识符区分大小写 (事实上整个 Java 编程里面都是区分大小写的)。Girl 和 girl 是两个不同的标识符。
(4)标识符长度没有限制,但不宜过长。
(5)如果标识符由多个单词构成,那么从第二个单词开始,首字母大写。示例:getUser、setModel、EmployeeModel 等。
(6)标识符尽量命名的有意义,让人能够望文知意。
(7)尽量少用带$符号的标识符,主要是习惯问题,大家都不是很习惯使用带$符号的标识符;还有内部类中,$具有特殊的含义。
(8)虽然 Java 语言使用 16-bit 双字节字符编码标准(Unicode 字符集),最多可以识别 65536 个字符(0-65535)。建议标识符中最好使用 ASCII 字母。虽然中文标识符也能够正常编译和运行,却不建议使用。
数据类型简单的说就是对数据的分类,对数据各自的特点进行类别的划分,划分的每种数据
类型都具有区别于其它类型的特征,每一类数据都有相应的特点和操作功能。例如数字类型的就
能够进行加减乘除的操作。
Java 里面的数据类型从大的方面分为两类,一是基本数据类型,一是引用类型。基本的JAVA 数据类型层次图如下:
布尔值包含 true和false,在其他语法中也存在非0即真的说法,但是Java中没有这种规定;
一个0或1为1位,8位为一个字节,位用bit表示,字节用byte表示
char类型表示的一个字符,一个char表示一个Unicode码,代表两个字节;一个char字符必须包含在单引号中;
类型 | 说明 | 大小 |
byte | 字节型 | 1个字节 |
short | 短整型 | 2个字节 |
int | 整型 | 4个字节 |
long | 长整型 | 8个字节 |
浮点型的值,如果没有特别指,默认是 double 型的。定义 float 型的时候,一定要指明是 float 型的,可以通过在数字后面添加“F”或者“f”来表示。
定义 double 型的时候,可以不用指明,默认就是 double 型的,也可以通过在数字后面添加“D”或者“d”来表示。
类型 | 说明 | 大小 |
float | 单精度浮点数 | 4个字节 |
double | 双精度浮点数 | 8个字节 |
字符型只能表示一个字符,那么多个字符怎么表示呢?
注意:
(1)String不是原始的数据类型,而是一个类(class)。
(2)String 包含的字符数量是任意多个,而字符类型只能是一个。要特别注意:"a"表示的是字符串,而'a'表示的是字符类型,它们的意义和功能都不同。
(3)String 的默认值是 null。
变量是Java程序的一个基本存储单元,它可以 用来引用另一个存储单元 。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。变量的值是可以改变的,可以通过操作变量来操作变量所对应的内存区域或值块的值。
赋值就是为一个声明的变量或者常量赋予具体的值,也就是赋予值的意思。使用一个等号 “= ”来表示。
变量的定义规则:
(1)遵从所有标识符的规则。
(2)所有变量都可大小写混用,但首字符应小写。
(3)尽量不要使用下划线和$符号。
(4)可以 先声明再赋值,如:
int i;
i=9;也可以声明的同时进行赋值:
int i=9;
这句话的意思就是,声明一个类型为 int 的变量 i,并将它赋值为 9。
(5)没有赋值的变量是不可以使用的。如:int i;System.out.println(i);//这句代码是错误的。
常量是变量中的一个特例,用final关键字修饰,常量是值是不可以改变的,也就是说常量引用的存储单元中的数据是不可更改的。
对常量命名的定义规则:建议大家尽量全部大写,并用下划线将词分隔。
如:JAVAKC_CLASS、PI、FILE_PATH
注:jdk1.7后类变量(静态变量)放进了堆中
什么是注释呢?就是标注解释的意思,主要用来对 Java 代码进行说明。Java 中有三种注释方式;
(1 )// 注释单行语句
- //定义一个值为 10 的 int 变量
- int a = 10;
(2 )/* */ 多行注释
- /*
- 这是一个注释,不会被 Java 用来运行 这是第二行注释,可以有任意多行
- */
(3 )/** */ 文档注释
紧放在变量、方法或类的声明之前的文档注释, 表示该注释应该被放在自动生成的文档中(由 javadoc 命令生成的 HTML 文件)以当作对声明项的描述。)
- /**
- * 这是一个文档注释的测试
- * 它会通过 javadoc 生成标准的 java 接口文档
- */
在 javadoc 注释中加入一个以“@”开头的标记,结合 javadoc 指令的参数,可以在生成的 API 文档中产生特定的标记
常用的 javadoc 标记:
@author:作者
@version:版本
@deprecated:不推荐使用的方法
@param:方法的参数类型
@return:方法的返回类型
@see:"参见",用于指定参考的内容
@exception:抛出的异常
@throws:抛出的异常,和 exception 同义
程序的基本功能是处理数据,任何编程语言都有自己的运算符。为实现逻辑和运算要求,编程语言设置了各种不同的运算符,且有优先级顺序,所以有的初学者使用复杂表达式的时候搞不清楚。
下面按优先顺序列出了各种运算符:
表达式是由常量、变量、对象、方法调用和操作符组成的式子。表达式必须符合一定的规范,才可被系统理解、编译和运行。表达式的值就是对表达式自身运算后得到的结果。
根据运算符的不同,表达式相应地分为以下几类:算术表达式、关系表达式、逻辑表达式、赋值表达式,这些都属于数值表达式。
需要注意的是 ++ 或 -- 操作:
++x 因为++在前,所以先加后用。
x++ 因为++在后,所以先用后加。
注意:
“+”还可以表示字符串相连;
"123"+"456" -> "123456"
如果+运算符中有一个自变量为 String 对象,则其它自变量将被转换成 String。所有对象都可被自动转换成 String,尽管这样做的结果可能是意义含糊的。不是字符串的对象是通过使用 toString()成员方法而转换成串的等价物的。
Java 具有完备的关系运算符,这些关系运算符同数学中的关系运算符是一致的。具体说明如下:
关系运算符用于比较两个数据之间的大小关系,产生的结果都是布尔型的值,一般情况下,在逻辑与控制中会经常使用关系运算符,用于选择控制的分支,实现逻辑要求。
instanceof 操作符用于判断一个引用类型所引用的对象是否是某个指定的类或子类的实例,如果是,返回真(true),否则返回假(false)。
操作符左边的操作元是一个引用类型,右边的操作元是一个类名或者接口,形式如下:
obj instanceof ClassName 或者 obj instanceof InterfaceName
需要注意的是:关系运算符中的"==" 和"!=" 既可以操作基本数据类型,也可以操作引用数
据类型。操作引用数据类型时,比较的是引用的内存地址。所以在比较非基本数据类型时,应该
用 使用 equals
运算符!(定义为“非”)、&& (定义为“与”)、||(定义为“或”)执行布尔逻辑表达式。
在运用逻辑运算符进行相关的操作,就不得不说“短路”现象。代码如下:
if(1==1 && 1==2 && 1==3){ }
代码从左至右执行,执行第一个逻辑表达式后:true && 1==2 && 1==3
执行第二个逻辑表达式后:true && false && 1==3
因为其中有一个表达式的值是false,可以判定整个表达式的值是false,就没有必要执行第三个表达式了,所以 Java 虚拟机不执行 1==3 代码,就好像被短路掉了。
逻辑或也存在“短路”现象,当执行到有一个表达式的值为 true 时,整个表达式的值就为true,后面的代码就不执行了。
三目运算符(?:)相当于条件判断,表达式 x?y:z 用于判断 x 是否为真,如果为真,表达式的值为 y,否则表达式的值为 z
基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。一开始可能会以为它是“等于”,其实不是的。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们现在是用变量作左值,以后还可以看到,指针和引用也可
以作左值。例如:
- int a, b, c;
- a = 3;
- b = 4;
- c = (a + b) * (2 * a - b); // 得出 14
if-else 语句的基本句法是:
if(布尔表达式){
语句块 1;
}else{
语句块 2;
}
说明:
(1) 布尔表达式返回值为true或false。
(2) 如果为true,则执行语句或块 1,执行完毕跳出if-else语句。
(3) 如果为false,则跳过语句或块 1,然后执行else下的语句或块 2
注意:
1:if 块和 else 块可以包含任意的 java 代码,自然也就可以包含新的 if-else,也就是说:if-else 是可以嵌套的,嵌套的规则是不可以交叉,必须完全包含。
2:else 部分是选择性的,并且当测试条件为假时如不需做任何事,else 部分可被省略。也就是说 if 块可以独立存在,但是 else 块不能独立存在,必须要有 if 块才能有 else块。
3:如果 if 块和 else 块的语句只有一句时,可以省略{}
- if (a1 > a2)
- System.out.println("这是 if块");
- else
- System.out.println("这是 else 块");
4:还可以把 else 和 if 组合使用,就是使用 else if,表达“否则如果”的意思,示例如下:
- if (score >= 90) {
- grade = "very good";
- } else if (score >= 70) {
- grade = "good";
- } else if (score >= 60) {
- grade = "pass";
- } else {
- grade = "No pass";
- }
switch 表示选择分支的情况,switch 语句的句法是:
- switch (表达式 1){
- case 表达式 2:
- 语句块 2;
- break;
- case 表达式 3:
- 语句块 3;
- break;
- default:
- 语句块 4;
- break;
- }
说明:
(1)表达式 1 的类型,可以是 byte、short、int 、char、字符串。
(2)case 分支是要执行的程序语句。
(3)表达式 2、3、4 是可能出现的值。
(4)不同的 case 分支对应着不同的语句或块序列。
(5)break 表示跳出这一分支。
(6)当变量或表达式的值不能与任何 case 值相匹配时,可选缺省符(defauit)指出了
应该执行的程序代码。
如果没有 break 语句作为某一个 case 代码段的结束句,则程序的执行将继续到下一个 case,而不检查 case 表达式的值。
- import java.awt.Color;
- public class Test {
- public static void main(String[] args) {
- int colorNum = 0;
- switch (colorNum) {
- case 0:
- System.out.println("红色");
- case 1:
- System.out.println("绿色");
- default:
- System.out.println("黑色");
- break;
- }
- }
- }
运行结果:
红色
绿色
黑色
循环语句使语句或块的执行得以重复进行。Java 编程语言支持三种循环构造类型:for,while 和 do 循环。for 和 while 循环是在执行循环体之前测试循环条件,而 do 循环是在执行完循环体之后测试循环条件。这就意味着for和 while循环可能连一次循环体都未执行,而do循环将至少执行一次循环体。
- for 循环的句法是:
- for (初值表达式; 测试表达式; 改变量表达式/步长){
- 语句块
- }
其执行顺序如下:
(1) 首先运行初值表达式。
(2) 然后计算测试表达式,如果表达式为true,执行语句或块;如果表达式为false,退出for循环。
(3) 最后执行步长,第一次循环结束。
(4) 第二次循环开始:首先判断测试表达式,转到第 2 步继续运行。
- while 循环的句法是:
- while (布尔表达式) {
- 语句块
- }
说明:当布尔表达式为 true 时,执行语句或块,否则跳出 while 循环。
- do-while 循环的句法是:
- do {
- 语句块;
- }while (测试值表达式);
说明:
先执行语句或块,然后再判断布尔表达式。与 while 语句不同,当布尔表达式一次都不为true 时, while 语句一开始判断就跳出循环,一次都不执行语句或块,而在 do 语句中则要执行一次。
- 下列语句可被用在更深层次的控制循环语句中:
- break [label];
- continue[label];
- label: 语句;//这里必须是任意的合法的语句
1:break 语句被用来从 switch 语句、循环语句和预先给定了 label 的块中退出,跳出离break 最近的循环。
- public class Test {
- public static void main(String[] args) {
- for (int i = 0; i < 10; i++) {
- if (i == 5) {
- break;
- }
- System.out.println("i==" + i);
- }
- }
- }
- //运行的结果:i==0 一直到 i==4。因为当 i==5 的时候,执行 break,跳出 for 循环
2:continue 语句被用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。
- public class Test {
- public static void main(String[] args) {
- for (int i = 0; i < 5; i++) {
- if (i == 3) {
- continue;
- }
- System.out.println("i==" + i);
- }
- }
- }
- //运行的结果:i==0 一直到 i==4,就是不包括 i==3。因为当 i==3 的时候,执行
- //continue,终止本次循环,继续下一次循环。
label 可标识控制需要转换到的任何有效语句,它被用来标识循环构造的复合语句。当嵌套在几层循环中想退出循环时,正常的 break 只退出一重循环,你可以用标号标出你想退出哪一个语句。它类似以前被人诟病的“goto”语句,我们应该尽量避免使用。
1. 如果两个或两个以上的 for 嵌套使用,则执行循环次数多的放最里面,即执行次数由内到外布局,这样可以提高执行速度。
2. 变量的定义等应当尽量放在 for 外面,而不是放里面。
3. 知道循环次数时使用 for 循环,不知道循环次数时使用 while 循环。
4. 尽量使用 for 而不是 while:因为 for 初值,结束条件,循环增量都放在一起,看起来方便。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。