1, which of the following are keywords or reserved words in java?
a) if b)then c)goto d)while e)case f)sizeof
2, which of the following are java key words?
a)double b)Switch c)then d)instanceof
3, which of these are key words in java?
a) default b)NULL c)String d)throws e)long f)true
答案来了 1,acde 2,ad 3,adef 作对了吗^_^
解释来了 1,then和sizeof都不是java的关键字,熟悉c或者c++,写惯了asp的高手就要小心喽。
2,所有的关键字都是小写的,所以Switch不是关键字。instanceof看上去像方法名,但其实是关键字;
3,大写的NULL不是java语言的关键字。String是java语言的一个封装类的类名,也不是关键字。
正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
Java语言有51个保留关键字,所有的关键字都是小写,其中const和goto是java保留字,虽然被保留但未被使用。你不能使用保留关键字来命名类、方法或变量。
一、保留关键字
数据类型:
Boolean int long short byte float double char class interface
流程控制:
if else do while for switch case default break continue return try catch finally
修饰符:
public protected private final void static strictfp abstract transient
synchronized volatile native
动作:
package import throw throws extends implements this Super instanceof new
保留字:
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则不行。
*类成员访问控制可见下表:
|
Private成员
|
默认成员
|
Protected成员
|
Public成员
|
同一类中可见
|
是
|
是
|
是
|
是
|
同一包中对子类可见
|
否
|
是
|
是
|
是
|
同一包中对非子类可见
|
否
|
是
|
是
|
是
|
不同包中对子类可见
|
否
|
否
|
是
|
是
|
不同的包中对非子类可见
|
否
|
否
|
否
|
是
|
简单总结一下,(按它们的访问范围由大到小排列):
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中的保留关键字 在Java编程语言中,关键字与保留关键字是极其重要的组成部分,它们定义了语言的基本结构和语法规则。对于初学者来说,熟悉这些关键字对于理解和编写正确的Java程序至关重要。 #### 关键字...
在Java语言中,关键字是具有特殊含义的保留词汇,它们不能作为变量名或函数名等标识符使用。例如,`public`, `class`, `void`, `int`, `if`, `else`, `for`, `while`, `new`, `return`等都是Java的关键字。这个分析...
在Java编程语言中,保留字(Reserved Words)和关键字(Keywords)是两个非常重要的概念,它们构成了Java语法的基础。保留字是Java语言已经预定义并赋予特定含义的词汇,而关键字则是Java语法结构中不可或缺的部分。...
需要注意的是,虽然像`const`和`goto`这样的关键字在Java中并未使用,但在某些情况下仍被视为保留字。此外,诸如`true`、`false`和`null`虽然不是关键字,但在Java中有着特殊的意义,不应将它们用作标识符。
### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...
黑色为保留字(现阶段没有在 Java 程序当中使用,但是先预约保留下来,以备日后使用),保留字跟关键字具有同样的等级,不可被用来作为标识符。 常用的 Java 关键字包括: * 访问修饰符:public、private、...
### Java关键字分类解释 ...- **const/goto**: `const`和`goto`是保留关键字,在当前版本的Java中并未使用。 以上是Java关键字的主要分类及其简要介绍。熟练掌握这些关键字对于编写高质量的Java程序至关重要。
goto和const虽然从未使用,但也作被为Java关键字保留。Java关键字包括: * 原始数据类型:byte、short、int、long、float、double、char、boolean * 循环关键字:do、while、for、break、continue * 分支关键字:if...
Java中的关键字、保留字和标识符是程序设计的基本组成元素,它们具有特定的含义和用途。 **关键字**: 在Java中,关键字具有特殊的意义,它们是编程语言的保留字,用来指示编译器执行特定的操作。Java关键字是小写...
- **保留关键字**:`goto`是一个保留关键字,尽管当前Java并未使用它,但未来可能会启用。 - **错误提示**:如果尝试将关键字用作标识符,编译器会提示错误。 #### 二、标识符(Identifiers) **1. 什么是标识符** ...
在Java编程语言中,提取文章关键字是一项常见的自然语言处理任务,它涉及到文本挖掘和信息检索领域。这个任务的目的是从一篇文章中识别出最具代表性的词语或短语,这些词汇通常反映了文章的主题和核心内容。在Java中...
在Java中,关键字是被语言保留并赋予特殊含义的标识符,它们不能用作变量名、方法名或者类名。这篇文档《Java关键字详细解》将深入探讨Java中的关键字及其用途。 首先,我们来看看Java中的主要关键字。`public`、`...
Java的关键字,即保留字,是Java语言中具有特殊意义的标识符,它们预定义并保留用于语言本身的语法结构。理解这些关键字是学习Java的基础之一。本文将详细介绍Java中的50个常用关键字,并按照其功能类别进行分类。 ...
Java的关键字是预定义的保留字,在Java编程中具有特殊的含义和用途。本文将深入探讨Java中的关键字及其作用,帮助初学者更好地理解和应用这些基本概念。 #### 1. 关键字概述 Java的关键字是指那些被赋予了特殊意义...
Java中有goto关键字吗?...答案是有的,goto是java保留关键字,但是不能使用。 在哪里有应用? 在C语言中goto一般配合条件语句,可用来实现条件转移,形成循环,跳出循环等。 注:java的底层是C,goto是java的保留字
在 Java 中,关键字是不可用作变量名、类名或方法名的保留标识。以下是一些主要的 Java 关键字的详细解释: 1. `abstract`: `abstract` 关键字用于声明抽象类或抽象方法。抽象类不能直接实例化,但可以被其他类继承...
在Java编程语言中,关键字是具有特殊含义的保留词汇,它们是编程语法的重要组成部分。下面是对Java关键字的详细总结,按照给出的部分内容进行排列: 1. `abstract`: - `abstract` 关键字用于声明抽象类或抽象方法...
虽然Java语言规范定义了`goto`关键字,但它并未被使用,被视为保留关键字。 ##### private `private`访问修饰符限制成员变量或方法只能在其所属的类内部访问。 ```java class Example { private int num = 10; }...
特别地,`goto` 和 `const` 是Java中的保留关键字,尽管目前并未被使用,但保留它们以备未来可能的需求。 #### 标识符(Identifiers) 标识符用于命名变量、方法、类等。Java中的标识符应遵循以下规则: - 必须以...