黑马程序员-关键字

来源:互联网 发布:mysise php爬虫 编辑:程序博客网 时间:2024/06/08 10:24
-------android培训java培训、期待与您交流! ----------


关键字
关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。


Java关键字表(共50个)

abstract
assert
boolean
break
byte
case
catch
char
class
constcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnstrictfpshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile

java关键字描述列表
abstract //抽象方法,抽象类的修饰符
assert //断言条件是否满足
boolean //布尔数据类型
break //跳出循环或者label代码段
byte //8-bit 有符号数据类型
case //switch语句的一个条件
catch //和try搭配扑捉异常信息
char //16-bit Unicode字符数据类型
class //定义类
const //未使用
continue //不执行循环体剩余部分
default //switch语句中的默认分支
do //循环语句,循环体至少会执行一次
double //64-bit双精度浮点数
else //if条件不成立时执行的分支
enum //枚举类型
extends //表示一个类是另一个类的子类
final //表示一个值在初始化之后就不能再改变了
//表示方法不能被重写,或者一个类不能有子类
finally //try 语句不管是否发生异常都要执行的语句块
float //32-bit单精度浮点数
for //for循环语句
goto //未使用
if //条件语句
implements //表示一个类实现了接口
import //导入类
instanceof //测试一个对象是否是某个类的实例
int //32位整型数
interface //接口,一种抽象的类型,仅有方法和常量的定义
long //64位整型数
native //表示方法用非java代码实现
new //分配新的类实例
package //一系列相关类组成一个包
private //表示私有字段,或者方法等,只能从类内部访问
protected //表示字段只能通过类或者其子类访问
//子类或者在同一个包内的其他类
public //表示共有属性或者方法
return //方法返回值
short //16位数字
static //表示在类级别定义,所有实例共享的
strictfp //浮点数比较使用严格的规则
super //表示基类
switch //选择语句
synchronized //表示同一时间只能由一个线程访问的代码块
this //表示调用当前实例
//或者调用另一个构造函数
throw //抛出异常
throws //定义方法可能抛出的异常
transient //修饰不要序列化的字段
try //表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void //标记方法不返回任何值
volatile //标记字段可能会被多个线程同时访问,而不做同步
while //while循环


  • 访问范围

private 私有地,Private 语句 在模块级别中使用,用于声明私有变量及分配存储空间。
默认访问控制(package ),如果在成员变量和方法前不加任何访问权限修饰符,则称为默认访问控制,也称为包访问控制。这意味着同一包内的其他所有类都能访问该成员,但对包外的所有类就不能访问。
protected 表明被它修饰的成员变量为保护类型,在同一个包里和 public 类型是一样的,也是能够访问到的。但是如果在不同包里的 protected 类型的成员变量就只能通过子类来访问,这个修饰符是区别于其他的修饰符的。
public 公共的,他表示某个变量或者函数是全局函数,例如:publicint a 表示a这个整型变量是全局变量。
类的实例

new该子句创建一个新的对象实例。New 子句必须指定一个可以用来创建实例的已定义类。可以在声明语句或赋值语句中使用 New。执行该语句时,它将调用指定类的构造函数,传递提供的所有参数。
this引用属性,当方法中的参数和某个属性有相同的名字时,这是局部变量优先,属性被隐藏。然而,有时为了能够在方法中以用隐藏的属性,就可以用this区分,由this引用的就是属性,没有this引用的则是局部变量或者是参数。
super被继承的类称为超类,继承的类称为子类。

  • 流程控制

break中断switch语句的执行,在循环语句中,同样也是结束循环语句的执行。
continue 只跳出本次循环,还要继续执行下一次的循环。break完全跳出所在或者是所标记的循环。
do 和while连用,
格式为:
do{
循环体;
}while(循环条件);//不要忘记分号;
for
格式为:
for(表达式1;表达式2;表达式3){
循环体;}
final如果不希望某个类被其他的类继承,在这种情况下需要使用修饰符final来说明一个类是终极的,不能够做父类。
if
格式为:
if(条件表达式)
{功能代码块1}
else
{功能代码块}//条件表达式返回值为真,则执行功能块,否则执行else功能块。
return
switch
格式为:
switch(表达式){
case 值1:
功能代码1;
[break;]
case 值2:
功能代码2;
[break;];
……
case 值n:
功能代码n;
[break;]
default:功能代码others;}
while
格式为:
while(循环条件)
{循环体;}

  • 其它

1、catch捕获错误的语句。
2、finally为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
3、native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于接口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
4、strictfp修饰类和方法,意思是FP-strict,精确浮点,符合IEEE-754规范的。当一个class或interface用strictfp声明,内部所有的float和double表达式都会成为strictfp的。Interface method不能被声明为strictfp的,class的可以。
5、try 当try子句中的某行代码发生异常,会终止程序的运行,跳转到catch子句来执行。
6、transient 变量修饰符。标记为transient的变量,在对象存储时,这些变量状态不会被持久化。当对象序列化的保存在存储器上时,不希望有些字段数据被保存,为了保证安全性,可以把这些字段声明为transient。
7、volatilevolatile修饰变量。在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
8、goto java中关键字表中虽然有goto关键字但是在声明变量时是不可以使用该单词的因为goto 是 Java 中一个没有使用的关键字,如果想叫做保留字也可以。
一般结构化程序,都不需要使用 Goto 语句的,在有分支和循环以及递归调用之后,goto 完全可以不使用了。为了程序代码更简捷,对于循环结构,还有 break 和 continue 用于跳转。而且,break 和 continue 都可以带标签,更增加了它们的灵活性。


重要关键字:

  • static关键字
    • 用法:是一个修饰符,用于修饰成员(成员变量和成员函数)。修饰后的成员称为静态成员。当成员被static修饰后,就多了一个调用方式,不仅可以被对象调用,还可以直接被类调用。格式:类名.成员名称。
    • 特点:
      1)随着类的加载而加载。也就是说,静态成员随着类的消失而消失,它的生命周期最长。
      2)优先于对象存在。先有类,而后才可以创建对象。类加载时,静态成员已经存在了。
      3)被所有对象共享。静态数据是属于类的,该类的对象共享这些静态数据。
      4)可以直接被类名调用。
    • 使用时的注意事项:
      1)静态方法只能访问静态成员。非静态成员是随着对象的存在而存在,当静态方法初始化后,对象还没有创建,因此不能访问非静态成员。
      2)静态方法中不可以定义this、super关键字。

  • this:Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
    • 在类的方法定义中使用的this关键字代表使用该方法的对象的引用;
    • 当必须指出当前使用方法的对象是谁时要使用this;
    • 有时使用this可以处理的方法中成员变量和参数重名的情况;
    • this可以看作是一个变量,它的值是当前对象的引用。
    • public class ThisTest {private int i=0;//第一个构造器:有一个int型形参ThisTest(int i){this.i=i+1;//此时this表示引用成员变量i,而非函数参数iSystem.out.println("Int constructor i——this.i: "+i+"——"+this.i);System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));//从两个输出结果充分证明了i和this.i是不一样的!}// 第二个构造器:有一个String型形参ThisTest(String s){System.out.println("String constructor: "+s);}// 第三个构造器:有一个int型形参和一个String型形参ThisTest(int i,String s){this(s);//this调用第二个构造器//this(i);this.i=i++;//this以引用该类的成员变量System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);}public ThisTest increment(){this.i++;return this;//返回的是当前的对象,该对象属于(ThisTest)}public static void main(String[] args){ThisTest tt0=new ThisTest(10);ThisTest tt1=new ThisTest("ok");ThisTest tt2=new ThisTest(20,"ok again!");System.out.println(tt0.increment().increment().increment().i);//tt0.increment()返回一个在tt0基础上i++的ThisTest对象,//接着又返回在上面返回的对象基础上i++的ThisTest对象!}}

  • 什么情况下需要用到this:
    1、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
    2、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
    3、在函数中,需要引用该函所属类的当前对象时候,直接用this。

  • super:super关键字的用法和this关键字的用法几乎一致。
    this关键字代表的是本类对象的引用;super关键字代表的是父类对象的引用。
    当子父类出现同名成员时,可以用super进行区分。
    子类要调用父类构造函数时,可以使用super();语句。
    在对子类对象进行初始化时,父类的构造函数也会运行。那是因为子类的构造函数默认第一行有一句隐式的语句:super();,这条语句会访问父类中空参数的构造函数。而且,子类中所有的构造函数默认第一行都是super();
    为什么会有一条隐式的语句呢?这是因为父类中的数据子类可以直接获取。在创建子类对象时,需要先到父类中查看一下是如何对这些数据进行初始化的。
    如果想要访问父类中指定的构造函数,可以通过手动定义super语句来指定。

  • final
    1、final可以修饰类,方法,变量。
    2、final修饰的类不可以被继承。因为final修饰的类是最终的类,被子类继承了,子类就可以复写它的方法,这样显然不合适。
    3、final修饰的方法不可以被覆盖。
    4、final修饰的变量是一个常量。只能被赋值一次。既可以修饰局部变量,也可以修饰成员变量。
    5、内部类只能访问被final修饰的局部变量。

注:参照了网上的一些内容。
0 0
原创粉丝点击