文档库 最新最全的文档下载
当前位置:文档库 › java中的关键字的含义及介绍

java中的关键字的含义及介绍

java中的关键字的含义及介绍
java中的关键字的含义及介绍

Java中的键字?

才发现Java中的好多关键字都不知道什么意思,特转一遍过来。

Java保留关键字

Java语言有51个关键字,其中const和goto虽然被保留但未使用。你不能使用保留关键字来命名类、方法或变量。

一、保留关键字

1、数据类型:

Boolean int long short byte float double char class interface

2、流程控制:

if else do while for switch case default break continue return try catch finally

3、修饰符:

public protected private final void static strictfp abstract transient

synchronized volatile native

4、动作:

package import throw throws extends implements this Super instanceof new

5、保留字:

true false null goto const

二、访问修饰符:

访问修饰符:public , protected , private

* 只能应用于类的成员变量。(局部变量只能在函数的范围内可见,不能使用访问修饰符)

* 能够用来修饰类本身。(protected , private 不能用于顶级类,只能用于内部类)

* 能够应用于成员方法和构造函数。

下面是一个例子:

package Examples;

public class HelloWorld02{

//以下定义了三个了类成员变量

public String str1="Hello"; //可被你程序中的任何其他代码访问

protected String str2="World!"; //程序中同一包的成员和不同包中的该类子类可以访问

private String str3=" "; //仅该类中的成员可以访问

String str=str1+str3+str2; //不使用修饰符的话,变量的访问控制在所在包内为public,

// 不能被所在包外的代码存取

//以下定义了三个使用不同修饰符和不同参数的构造方法。

public HelloWorld(){

System.out.println(str);

}

protected HelloWorld(long l){

System.out.print("Use \"protected\" constructor! And l is ["+l+"] ");

System.out.println(str);

}

private HelloWorld(float f){

System.out.print("Use \"private\" constructor! And f is ["+f+"] ");

System.out.println(str);

}

//声明构造方法为void类型是合法的.不过因为没有返回值,所以不能用来创建新对象.

public void HelloWorld(){

System.out.println(str +" Use the void constructor!");

}

public static void main(String[] args){

HelloWorld hw1=new HelloWorld(); //使用无参数的构造方法

HelloWorld hw2=new HelloWorld(5); // 虽然5是int类型,但会自动提升成long类型

HelloWorld hw3=new HelloWorld(5L);

HelloWorld hw5=new HelloWorld(3.14f); // 但float类型则必须指明,否则会出错

hw5.HelloWorld(); // 无返回值的构造方法只能这样调用

(new HelloWorld()).HelloWorld(); //这里创建了一个匿名类对象并调用无返回值的构造方法

}

}

总结:

请认真思考一下:

(1)public、protected、private 可用来修饰哪些成员?

使用这些修饰符的成员的访问控制是怎样的?

没有指定访问修饰符的成员的访问控制是怎样的?

* public、protected和private可以用来修饰类成员变量、方法、构造方法和内部类;

public可以用来修饰顶级类,但protected和private则不行。

注意事项:

* 每一个java文件中可以包含多个类,但只能存在一个public顶级类,如果声明了两个顶级类的话,则会出现编译错误。

二、部分其他修饰符

this:

Java中定义了this关键字来访问当前对象实例内的成员。当局部变量和类实例内的类变量同

名时,在这个局部变量所作用区域内类变量就被隐藏了,必须使用this来指明。

static:

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它所在类使用,而不必引用所在类的实例。将类中的成员声明为static就能实现这样的效果。声明为static的变量实质就是全局变量。当声明一个对象(某个类的实例)时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。

声明为static的方法有以下三条限制:

* 它们只能访问static数据

* 它们仅能调用其他的static方法

* 它们不能以任何方式引用this或super

实例分析:

package Examples;

public class StaticDemo{

public static void main(String[] args){

System.out.println(MyStaticClass.str); //不用创建MyStaticClass的实例就能访问它的str变量

// System.out.println(MyStaticClass.str2); 这句是错误的。

MyStaticClass msc=new MyStaticClass(); //这里创建MyStaticClass的一个实例

System.out.println("After create instance:");

msc.printString();

}

}

class MyStaticClass{

static String str="Hello World!";

String str2;

void setString(String s){

str2=s;

}

static void setNewString(String s){

str=s;

}

static void printString(){

//setString(str); 在static方法中调用非static方法是错误的

//System.out.println(str2); 也不能访问非static变量

//Java中是先检测static变量再检测static方法的

System.out.println(str); // 可以正常访问static变量

setNewString("Static method is OK!"); //正常调用static方法

System.out.println(str);

}

}

final:

一个变量可以被声明为final,这样做的目的是阻止它的内容被修改。这意味着在声明final变量的时候,你必须初始化它。一个final变量实质上是一个常数,为final 变量的所有字母选择大写是一个普遍的编码约定。声明为final的变量在实例中不占用内存。

声明成final的方法不能被重载。通常,Java在运行时动态的调用方法,这叫做后期绑定(late binding);由于被声明为final的方法不能被重载,那么对final方法的调用可以在编译时解决,这叫做早期绑定(early bingding)。

声明为final的类不能被其他类继承。声明一个final类含蓄的宣告了它的所有方法也都是final的。所以,声明一个既是abstract的,又是final的类是不合法的,因为抽象类本身是不完整的,它依靠它的子类提供完整的实现。

strictfp:

Java2向Java语言增加了一个新的关键字strictfp。与Java2同时产生的浮点运算计算模型很轻松的使某些处理器可以以较快速度进行浮点运算(例如奔腾处理器)。这个浮点运算计算模型在计算过程中,不需要切断某些中介值。如果用strictfp来修饰类或方法,可以确保浮点运算(以及所有切断)正如它们在早期Java版本中那样准确(即使用原始的浮点运算模型)。切断只影响某些操作的指数。当一个类被strictfp修饰,所有该类的方法都自动被strictfp修饰。坦白说,很多程序员从未用过strictfp,因为它只对非常少的问题有影响。

native:

有时你希望调用不是用Java语言写的子程序,或者你希望调用一个专用的第三方的库,例如统计学包。虽然这种情况比较少,但Java提供了native关键字,该关键字用来声明本机代码方法。

为声明一个本机方法,在该方法之前用native修饰符,但是不要定义任何方法体。例如:

public native int meth();

声明本机方法后,必须编写本机方法并要执行一系列复杂的步骤使它与Java代码链接。很多本机方法是用C写的。把C代码结合到Java程序中的机制是调用Java Native Interface(JNI)。

transient:

如果用transient声明一个实例变量,当对象储存时,它的值不需要维持。例如:

class T{

transient int a; // will not persist

int b; // will persist

}

这里,如果T类的一个对象被写入一个持久的存储区域,a的内容不被保存,但b将被保存。

volatile:

volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。一种这样的情形是多线程程序。在多线程程序里,有时两个或更多的线程共享一个相同的实例变量。考虑效率的问题,每个线程可以自己保存该共享变量的私有拷贝。实际的(或主要的)变量副本在不同的时候更新,例如当进入synchronized方法时。当这种方法运行良好时,它在时间上会是低效的。在某些情况下,真正要紧的是变量主副本的值会体现当前的状态。为保证这点,仅需把变量定义成volatile型,它告诉编译器它必须总是使用volatile 变量的主副本(或者至少总是保持一些私有的最新的主副本的拷贝,反之亦然),同时,对主变量的获取必须以简洁次序执行,就像执行私有拷贝一样。

java关键字

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 默认 错误处理 catch 处理异常 finally 有没有异常都执行 throw 抛出一个异常对象throws 声明一个异常可能被抛出try 捕获异常 包相关 import 引入 package 包

基本类型 boolean 布尔型 byte 字节型 char 字符型 double 双精度, float 浮点 int 整型 long 长整型 short 短整型 null 空 true 真 false 假 变量引用 super 父类,超类 this 本类 void 无返回值 java关键字 关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现break 一个Java的关键字,用来改变程序执行流程,立刻从当前语句的下一句开始执行从。如果后面跟有一个标签,则从标签对应的地方开始执行case Java语言的关键字,用来定义一组分支选择,如果某个值和switch中给出的值一样,就会从该分支开始执行。catch :Java的一个关键字,用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。char :Java语言的一个关键字,用来定义一个字符类型 abstract boolean break byte case catch char class continue default do double else extends final finally float for if implements import instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try void volatile while 详细介绍

this关键字的作用

this关键字的作用 this关键字的用法 1. this是指当前对象自己。 当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中: public class Hello { String s = "Hello"; public Hello(String s) { System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s; System.out.println("2 -> this.s = " + this.s); } public static void main(String[] args) { Hello x="new" Hello("HelloWorld!"); } } 运行结果: s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld! 在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果;第二行是对成员变量s的打印;第三行是先对成员变量s赋传过来的参数s值后再打印,所以结果是HelloWorld! 2. 把this作为参数传递 当你要把自己作为参数传递给别的对象时,也可以用this。如: public class A { public A() {

java中常用关键字总结

Java中的关键字总结 final 关键字 1、用final修饰的类不能被继承,没有子类; 2、用final修饰的方法,方法不能被重写; 3、用final修饰变量,变量的值不能被修改,表示常量,(书写规范:全部字母都要大写;多个单词,可以使用下划线(_)分开;) 注意:如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错; 4、final用于成员变量表示该成员变量为常量,不能被修改,必须在变量定义时赋值。 5、final用于局部变量表示该局部变量为常量,不能被修改,可以在变量定义时赋值,也可以先定义变量后赋值。 什么时候用final关键字? 有的时候不想别人重写我的方法就使用final关键字修饰该方法; static关键字 1、static用于成员变量表示该变量只有一份,也就是说静态成员变量属于类而不属于某个具体的类实例对象,所有的类实例对象共享这个静态成员变量;静态函数是不需要对象的,直接可以使用类名来调用; 2、非静态函数可以调用静态函数;静态函数不能调用非静态函数(非静态函数都是通过对象调用的);静态函数不能使用非静态成员变量,但可以使用静态成员变量; 3、静态函数调用时不需要对象的,所以不能使用和对象有关的关键字;(this;super;) 4、构造函数不能使用static修饰(构造函数是创建对象,开辟空间,给所有成员变量赋默认值之后,有JVM调用进栈,用来给对象的成员变量赋初始值的) static用于类,这里指的是内部类,那么在别的地方就可以通过外部类名来引用这个静态的内部类。 5、static还可以用于类的代码块,叫做静态代码块,静态代码块在类加载的时候就执行完毕,而类只加载一次;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先

Java中this、super用法

通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量。但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。 好了,现在开始讨论this&super这两个关键字的意义和用法。 在Java中,this通常指当前对象,super则指父类的。当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。如果你想引用父类的某种东西,则非super莫属。由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论,希望能帮助你区分和掌握它们两个。 在一般方法中 最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法: public class DemoThis{ private String name; private int age; DemoThis(String name,int age){ setName(name); //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的 setAge(age); this.print(); br> } public void setName(String name){ https://www.wendangku.net/doc/2617824475.html,=name;//此处必须指明你要引用成员变量 } public void etAge(int age){ this.age=age; } public void print(){ System.out.println("Name="+name+" ge="+age); //在此行中并不需要用this,因为没有会导致混淆的东西 } public static void main(String[] args){ DemoThis dt=new DemoThis("Kevin","22"); 这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(), 你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super 的用法。 class Person{ public int c; private String name; private int age;

C# this关键字详解

在向大家详细介绍C# this关键字之前,首先让大家了解下类与对象的区分,然后全面介绍C# this 关键字。 类与对象的区分对我们把握OO编程至关重要。我们说类是对其成员的一种封装,但类的封装设计仅仅是我们编程的第一步,对类进行对象实例化,并在其数据成员上实施操作才是我们完成现实任务的根本。实例化对象采用MyClass myObject=new MyClass()语法,这里的new语义将调用相应的构建器。C#所有的对象都将创建在托管堆上。实例化后的类型我们称之为对象,其核心特征便是拥有了一份自己特有的数据成员拷贝。这些为特有的对象所持有的数据成员我们称之为实例成员。相反那些不为特有的对象所持有的数据成员我们称之为静态成员,在类中用static修饰符声明。仅对静态数据成员实施操作的称为静态函数成员。C#中静态数据成员和函数成员只能通过类名引用获取,看下面的代码: https://www.wendangku.net/doc/2617824475.html,ing System; 2.class A 3.{ 4.public int count; 5.public void F() 6.{ 7.Console.WriteLine(this.count); 8.} 9. 10.public static string name; 11.public static void G() 12.{ 13.Console.WriteLine(name); 14.} 15.} 16.class Test 17.{ 18.public static void Main() 19.{ 20.A a1=new A(); 21.A a2=new A(); 22.a1.F(); 23.a1.count=1; 24.a2.F(); 25.a2.count=2; 26. https://www.wendangku.net/doc/2617824475.html,="CCW"; 28.A.G(); 29.} 30.}

Java中super的几种用法并与this的区别

4.super和this的异同: 1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) 3)super:它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名super.成员函数据名(实参) 4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名) 5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。 6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。 7)super()和this()均需放在构造方法内第一行。 8)尽管可以用this调用一个构造器,但却不能调用两个。 9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。 10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static 变量,static方法,static语句块。 11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。1.静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法声明为static的方法有以下几条限制: 1)它们仅能调用其他的static 方法。 2)它们只能访问static数据。 3)它们不能以任何方式引用this 或super。 class Simple { static void Go() { System.out.println("Welcome"); } } public class Cal { public static void main(String[] args) { Simple.go(); } } 调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。 2. 静态变量 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例

Java关键字final使用总结

Java关键字final使用总结 一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。 注意:父类的private成员方法是不能被子类方法覆盖的,因此private 类型的方法默认是final类型的。 1、final类 final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。 2、final方法 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final 方法。 使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。 例如:

3、final变量(常量) 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。 另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final 数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

java中的关键字的含义及介绍

Java中的键字? 才发现Java中的好多关键字都不知道什么意思,特转一遍过来。 Java保留关键字 Java语言有51个关键字,其中const和goto虽然被保留但未使用。你不能使用保留关键字来命名类、方法或变量。 一、保留关键字 1、数据类型: Boolean int long short byte float double char class interface 2、流程控制: if else do while for switch case default break continue return try catch finally 3、修饰符: public protected private final void static strictfp abstract transient synchronized volatile native 4、动作: package import throw throws extends implements this Super instanceof new 5、保留字: true false null goto const 二、访问修饰符: 访问修饰符:public , protected , private * 只能应用于类的成员变量。(局部变量只能在函数的范围内可见,不能使用访问修饰符) * 能够用来修饰类本身。(protected , private 不能用于顶级类,只能用于内部类) * 能够应用于成员方法和构造函数。 下面是一个例子: package Examples; public class HelloWorld02{ //以下定义了三个了类成员变量 public String str1="Hello"; //可被你程序中的任何其他代码访问 protected String str2="World!"; //程序中同一包的成员和不同包中的该类子类可以访问 private String str3=" "; //仅该类中的成员可以访问 String str=str1+str3+str2; //不使用修饰符的话,变量的访问控制在所在包内为public, // 不能被所在包外的代码存取 //以下定义了三个使用不同修饰符和不同参数的构造方法。

JAVA关键字大全(方便版)

abstract boolean break -byte case catch char class continue default do double else extends false final finally float for if implements import instanceof -int - interface long - native new null package private protected public return short static super switch synchronized this throw throws transient try true void volatile while JAVA关键字单词记忆表 1.abstract 解释:抽象,抽象的 用法:类修饰符的一种,可以用来修饰类,方法,被修饰的类不能够实例化(即

不能用new关键字得到对象),被修饰的方法不能够实现。一个抽象类中不一定要有抽象方法,但是一个类里面有抽象方法就一定是抽象类。如果由类要继承抽象类的话,必须要实现里面的抽象方法。构造方法和静态方法不可以修饰为抽象。 abstract 关键字可以修改类或方法。 abstract 类可以扩展(增加子类),但不能直接实例化。 abstract 方法不在声明它的类中实现,但必须在某个子类中重写。 -示例- public abstract class MyClass{ } public abstract String myMethod(); -注释- 采用 abstract 方法的类本来就是抽象类,并且必须声明为 abstract。 abstract 类不能实例化。 仅当 abstract 类的子类实现其超类的所有 abstract 方法时,才能实例化abstract 类的子类。这种类称为具体类,以区别于 abstract 类。 如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类。 abstract 关键字不能应用于 static、private 或 final 方法,因为这些方法不能被重写,因此,不能在子类中实现。 final 类的方法都不能是 abstract,因为 final 类不能有子类。 1> abstract抽象用在类的声明中来指明一个类是不能被实例化的,但是可以被其他类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现。它的用途是向子类提供通用的信息。抽象类可以包含正常的类包含的任何东西,也就是说,类和实例变量,以及带有任何修饰词的方法。只有抽象类可能有抽象方法。如果一个不是抽象的类包含一个抽象方法,那么将会出现编译错误。 例子:如果下列的一个成立,那么一个有抽象方法: a.它显式的声明了一个abstract方法。 b.它从它的直接父类继承了一个抽象方法。 c.一个直接的类的父借口声明或继承了它的一个方法(这因此必须是abstract)

static和this的理解和用法总结

static和this的理解和用法小结 关键字static和this是初学者比较头疼的知识点,自己也一直比较模糊.现在整理一下,既可以加深自己的印象也可以便于以后查询. 其实在think in java里关于为什么要使用static写的比较详细,不明白的多读几遍会有很大的收获.一般在两钟情形下需要使用static关键字:一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起.所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象.有这样的一个类,其中定义一个静态数据: class Test { Static int i = 47; } Test st1 = new StaticTest();Test st2 = new StaticTest();即使们new了两个Test对象,但它们仍然只占据Test.i的一个存储空间。这两个对象都共享同样的i。对方法来说,static一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法. 静态变量)一个静态对象属于一个类,但它不属于实例对象,也不是实例对象状态的一部分.每一个静态变量只存在一份.静态变量通常称为类变量(class variable).在实际中,经常需要这样的一个变量,它被一个类的所有实例对象所共享,如果它同时又是公有的,那么它就可以被这个类的任意访问者所使用.静态变量存在于类的作用域之内.通常声明为private.java中许多时候会用到public static final 这样的变量。静态变量可以被位于同一个作用域内的任意方或静态方法访问,访问时使用变量名称即可。如果在类作用域以外访问类,则要使用一个含有类名的表达式访问静态变量,例如: Integer.MAX_VALUE, 其中MAX_VALUE是在类库中声明过的。 静态方法)静态方法或类方法属于一个而不是属于某个实例对象实现的一部分。可以直接通过类来调用这种方法,而并不是只能由某个特定的实例对象调用。静态的方法不能用abstract声明,而且无论是否明确地指定实际上都是final型的。静态方法的声明格式: modifiers static typeName methodName (parameterList){ statementSequence } modifiers(可以从public,protect,private中选择一个),后面可以加上 final,nativc,synchronized中的一个或几个的组合。 static main是静态方法的一个特殊用法,用static main 方法来建立程序的初始状态,创建一组初始对象,并进行合理的方法调用,使得程序能够继续执行下去,static main方法使用String数组型参数包含了用户在运行时给出的任意命令行参数。

Java关键字大全

abstract - 1 - boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends - 6 - false - 7 - final - 7 - finally - 7 - float - 8 - for - 8 - if - 8 - implements - 9 - import - 9 - instanceof - 9 - int - 9 - interface - 10 - long - 10 - native - 10 - new - 11 - null - 11 - package - 11 - private - 11 - protected - 12 - public - 12 - return - 13 - short - 13 - static - 13 - super - 14 - switch - 14 - synchronized - 15 - this - 16 - throw - 16 - throws - 16 - transient - 17 - try - 17 - true - 18 - void - 18 - volatile - 18 - while - 18 - 1.abstract abstract 关键字可以修改类或方法。 abstract 类可以扩展(增加子类),但不能直接实例化。 abstract 方法不在声明它的类中实现,但必须在某个子类中重写。 -示例- public abstract class MyClass{ } public abstract String myMethod(); -注释- 采用abstract 方法的类本来就是抽象类,并且必须声明为abstract。 abstract 类不能实例化。 仅当abstract 类的子类实现其超类的所有abstract 方法时,才能实例化abstract 类的子类。这种类称为具体类,以区别于abstract 类。 如果abstract 类的子类没有实现其超类的所有abstract 方法,该子类也是abstract 类。 abstract 关键字不能应用于static、private 或final 方法,因为这些方法不能被重写,因此,不能在子类中实现。 final 类的方法都不能是abstract,因为final 类不能有子类。

深入浅出关键字---base和this

本文将介绍以下内容: ?面向对象基本概念 ?base关键字深入浅出 ?this关键字深入浅出 1. 引言 new关键字引起了大家的不少关注,尤其感谢Anders Liu的补充,让我感觉博客园赋予的交流平台真的无所不在。所以,我们就有必要继续这个话题,把我认为最值得关注的关键字开展下去,本文的重点是访问关键字(Access Keywords):base和this。虽然访问关键字不是很难理解的话题,我们还是有可以深入讨论的地方来理清思路。还是老办法,我的问题先列出来,您是否做好了准备。 1.是否可以在静态方法中使用base和this,为什么? 2.base常用于哪些方面?this常用于哪些方面? 3.可以base访问基类的一切成员吗? 4.如果有三层或者更多继承,那么最下级派生类的base指向那一层呢?例 如.NET体系中,如果以base访问,则应该是直接父类实例呢,还是最高 层类实例呢? 5.以base和this应用于构造函数时,继承类对象实例化的执行顺序如何? 2. 基本概念 base和this在C#中被归于访问关键字,顾名思义,就是用于实现继承机制的访问操作,来满足对对象成员的访问,从而为多态机制提供更加灵活的处理方式。 2.1 base关键字 其用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数、实例方法和实例属性访问器中,MSDN中小结的具体功能包括:?调用基类上已被其他方法重写的方法。 ?指定创建派生类实例时应调用的基类构造函数。 2.2 this关键字 其用于引用类的当前实例,也包括继承而来的方法,通常可以隐藏this,MSDN 中的小结功能主要包括: ?限定被相似的名称隐藏的成员 ?将对象作为参数传递到其他方法 ?声明索引器

JAVA编程关键字和常用单词

Java基础常见英语词汇(共70个) OO: object-oriented ,面向对象 OOP: object-oriented programming,面向对象编程 JDK:Java development kit, java开发工具包 JVM:java virtual machine ,java虚拟机 Compile:编绎 Run:运行 Class:类 Object:对象 System:系统 out:输出 print:打印 line:行 variable:变量 type:类型 operation:操作,运算 array:数组 parameter:参数 method:方法 function:函数 member-variable:成员变量 member-function:成员函数 get:得到 set:设置 public:公有的 private:私有的 protected:受保护的 default:默认 access:访问 package:包 import:导入 static:静态的 void:无(返回类型) extends:继承 parent class:父类 base class:基类 super class:超类 child class:子类

derived class:派生类 override:重写,覆盖 overload:重载 final:最终的,不能改变的 abstract:抽象 interface:接口 implements:实现 exception:异常 Runtime:运行时 ArithmeticException:算术异常ArrayIndexOutOfBoundsException:数组下标越界异常NullPointerException:空引用异常ClassNotFoundException:类没有发现异常NumberFormatException:数字格式异常(字符串不能转化为数字) Catch:捕捉 Finally:最后 Throw:抛出 Throws: (投掷)表示强制异常处理 Throwable:(可抛出的)表示所有异常类的祖先类 Lang:language,语言 Util:工具 Display:显示 Random:随机 Collection:集合 ArrayList:(数组列表)表示动态数组 HashMap: 散列表,哈希表 Swing:轻巧的 Awt:abstract window toolkit:抽象窗口工具包 Frame:窗体 Size:尺寸 Title:标题 Add:添加 Panel:面板 Layout:布局 Scroll:滚动 Vertical:垂直 Horizonatal:水平 Label:标签 TextField:文本框 TextArea:文本域 Button:按钮

Java中的两个特殊变量this和super

Java中的两个特殊变量this和super 在Java中有两个非常特殊的变量:this和super,这两个变量在使用前都是不需要声明的。this变量使用在一个成员函数的内部,指向当前对象,当前对象指的是调用当前正在执行方法的那个对象。super变量是直接指向超类的构造函数,用来引用超类中的变量和方法。因此它们都是非常有用的变量,下面我想介绍一下this和super的使用方法。 1、this 让我们先看一段代码吧: class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String p_name,String p_gender,String p_nationality,String p_address,int p_age) { name=p_name; gender=p_gender; nationality=p_nationality; address=p_address; age=p_age; } } 你会发现,在PersonInformation()函数中这个对象的方法提示可以直接访问对象的成员变量的,而且在同一个范围中,定义两个相同的名字的局部变量是不允许的,如果确实想使类的成员变量和方法的参数或方法自己定义的局部变量同名的话就需要想一种方法使成员变量与更它同名的方法参数或局部变量区分开来,这就要使用到this变量。下面我想改写一

下上面的代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量相同的名字,而成员变量的初值由参数给出。 class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String name,String gender,String nationality,String address,int age) { https://www.wendangku.net/doc/2617824475.html,=name; this.gender=gender; this.nationality=nationality; this.address=address; this.age=age; } } 由上一例中,我们可以看出,该构造函数中必须使用this,this在方法体重用来指向引用当前正在执行方法的那个对象实例,this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。 有时候会遇到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方法(它能够返回一个描述这个对象的字符串)如果把任何一个对象传递到System.out.println方法中,这个方法调用这个对象的toString方法,并打印出结果字符串,所以,我们可以用如下方法System.out.println(this),来打印出任何对方法固有参数的当前状态。 this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造

java关键字

JA V A的保留关键字 在java中保留关键字是被java本身定义使用的字母组合,具有特殊意义,所以不能用作变量名、方法名以及包名。Java共有51个关键字,中const和goto虽然被保留但未被使用。保留关键字分为8大类: 一、访问控制: 序号保留关键字定义或作用 1 private 私有的 2 protected 受保护的 3 public 公共的 二、类、方法、变量的修饰符: 序号保留关键字定义或作用 4 abstract 声明为抽象 5 class 类 6 extends 扩展、继承 7 final 终极、不可变 8 implements 实现 9 interface 接口 10 native 本地 11 new 新建、创建 12 static 静态 13 strictfp 严格精准 14 synchronized 同步 15 transient 短暂 16 volatile 易失 三、程序控制语句: 序号保留关键字定义或作用 17 break 中断、跳出循环 18 continue 继续 19 return 返回 20 do 运行 21 while 循环 22 if 如果 23 else 那么、反之 24 for 循环 25 instanceof 是否实例 26 switch 开关 27 case 返回开关的结果 28 deault 默认

四、异常处理 序号保留关键字定义或作用 29 catch 处理异常 30 finally 最终都执行 31 throw 抛出一个异常对象 32 throws 声明一个异常可能被抛出 33 try 捕获异常 五、包相关: 序号保留关键字定义或作用 34 import 引入 35 package 包 六、基本类型: 序号保留关键字定义或作用 36 boolean 布尔 37 byte 字节 38 char 字符 39 double 双精度 40 float 单精度 41 int 整型 42 long 长整型 43 short 短整型 44 null 对象的空 45 true 真 46 false 假 null “” 七、变量引用: 序号保留关键字定义或作用 47 super 父类、超类 48 this 本类 49 void 无返回值 八、访问控制保留字(未使用) 序号保留关键字定义或作用 50 const 常量 51 goto 跳转

this关键字的作用

this 关键字的作用 this 关键字的作用 this 关键字的用法 1.this 是指当前对象自己。当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this 引用。如下面这个例子中: 矚慫润厲钐瘗睞 枥庑赖賃軔朧。 public class Hello { String s = public Hello(String s) { System.out.println( System.out.println( this.s = s; System.out.println( } public static void main(String[] args) { Hello x= } } 运行结果: s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld! 在这个例子中, 构造函数Hello 中,参数s 与类Hello 的变量s 同名, 这时如果直接对s 进行操作则是对参数s 进行操作。若要对类Hello 的成员变量s 进行操作就应该用this 进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s 进行打印结果; 第二行是对成员变量s 的打印; 第三行是先对成员变量s 赋传过来的参数s 值后再打印,所以结果是HelloWorld! 聞創沟燴鐺險爱氇谴净祸測樅。 2.把this 作为参数传递当你要把自己作为参数传递给别的对象时,也可以用this 。如: public class A { public A() {

new B(this).print(); } public void print() { System.out.println( } } public class B { A a; public B(A a) { this.a = a; } public void print() { a.print(); System.out.println( } } 运行结果: Hello from A! Hello from B! 在这个例子中,对象 A 的构造函数中, 用new B(this) 把对象 A 自己作为参数传递给了对象 B 的构造函数。残骛楼諍锩瀨濟溆塹籟婭骒東。 3.注意匿名类和内部类中的中的this 。有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿? 嘀杏胻his 时,这个this 则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话, 则应该加上外部类的类名。如下面这个例子:酽锕极額閉镇桧猪訣锥顧荭钯。public class A { int i = 1; public A() { Thread thread = new Thread() { public void run() { for(;;) { A.this.run(); try {

java中super关键字的三种用法

1.子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base"); } } public class Checket extends Base { Checket() { super();//调用父类的构造方法,一定要放在方法的首个语句 System.out.println("Checket"); } public static void main(String argv[]) { Checket c = new Checket(); } } 如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super 之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。 2.在Java中,有时还会遇到子类中的成员变量或方法与父类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,就需要用到super. class Country { String name; void value() { name = "China"; } } class City extends Country { String name; void value() { name = "Hefei"; super.value();//不调用此方法时,https://www.wendangku.net/doc/2617824475.html,返回的是父类的成员变量的值null System.out.println(name);

相关文档