Java关键字大全
- 格式:doc
- 大小:87.50 KB
- 文档页数:20
Java中instanceof关键字的⽤法总结instanceof是Java的⼀个⼆元操作符,和==,>,<是同⼀类东东。
由于它是由字母组成的,所以也是Java的保留关键字。
它的作⽤是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据java 中的instanceof 运算符是⽤来在运⾏时指出对象是否是特定类的⼀个实例。
instanceof通过返回⼀个布尔值来指出,这个对象是否是这个特定类或者是它的⼦类的⼀个实例。
⽤法:result = object instanceof class参数:Result:布尔类型。
Object:必选项。
任意对象表达式。
Class:必选项。
任意已定义的对象类。
说明:如果 object 是 class 的⼀个实例,则 instanceof 运算符返回 true。
如果 object 不是指定类的⼀个实例,或者 object 是 null,则返回 false。
例⼦如下:复制代码代码如下:package com.instanceoftest;interface A{}class B implements A{}class C extends B {}class instanceoftest {public static void main(String[] args){A a=null;B b=null;boolean res;System.out.println("instanceoftest test case 1: ------------------");res = a instanceof A;System.out.println("a instanceof A: " + res);res = b instanceof B;System.out.println("b instanceof B: " + res);System.out.println("\ninstanceoftest test case 2: ------------------");a=new B();b=new B();res = a instanceof A;System.out.println("a instanceof A: " + res);res = a instanceof B;System.out.println("a instanceof B: " + res);res = b instanceof A;System.out.println("b instanceof A: " + res);res = b instanceof B;System.out.println("b instanceof B: " + res);System.out.println("\ninstanceoftest test case 3: ------------------");B b2=(C)new C();res = b2 instanceof A;System.out.println("b2 instanceof A: " + res);res = b2 instanceof B;System.out.println("b2 instanceof B: " + res);res = b2 instanceof C;System.out.println("b2 instanceof C: " + res);}}/*result:instanceoftest test case 1: ------------------a instanceof A: falseb instanceof B: falseinstanceoftest test case 2: ------------------a instanceof A: truea instanceof B: trueb instanceof A: trueb instanceof B: trueinstanceoftest test case 3: ------------------b2 instanceof A: trueb2 instanceof B: trueb2 instanceof C: trueinstanceof 通常⽤于根据不同的实例调⽤不同的⽅法:⼀、在有继承关系的类中我们可以通过多态来调⽤不同实例中的不同⽅法:例1:有三个类,类名以及它们之间的关系如下Animal (Superclass) Dog(Subclass) Cat(Subclass)则可得出如下对象Animal animal =new Animal (); ====》animal instanceof Animal 返回 trueDog dog=new Dog();====》dog instanceof Dog 返回 trueCat cat=new Cat();====》cat instanceof Cat 返回 trueAnimal dog=new Dog();====》dog instanceof Animal 返回 trueAnimal cat=new Cat();====》cat instanceof Animal 返回 true12 Animal dog=new Dog();3 Animal cat=new Cat();45 List list = new ArrayList();67 list.add(dog);8 list.add(cat);910 Iterator it = list.iterator();11while (it.hasNext()) {12 it.next().animalDo();1314 }在这⾥我们可以在Dog与Cat类中重写Animal中的animalDo⽅法,通过调⽤animalDo⽅法,然后会⾃动根据不同的实例调⽤不同类中的⽅法.⼆、在没有继承关系的类中,我们可以通过instanceof来判断当前实例,然后很据不同实例调⽤不同⽅法:例2:1 Station s = new Station();2 Cell c = new Cell();345 List list = new ArrayList();67 list.add(s);8 list.add(c);91011 Iterator it = list.iterator();12while (it.hasNext()) {13 Object obj = it.next();14if (obj instanceof Station ) {15 Station s1 = (Station ) obj;16 s1.stationDo();17 }18if (obj instanceof Cell ) {19 Cell c1 = (Cell ) obj;20 c1.cellDo();21 }22 }在这⾥我们可以通过instanceof 判断结果,执⾏不同类中的相应动作⽅法(stationDo()、cellDo())。
java关键字及其作用一、关键字总览:关键字含义abstract 表明类或者成员方法具有抽象属性assert 用来进行程序调试boolean 基本数据类型之一,布尔类型break 提前跳出一个块byte 基本数据类型之一,字节类型case 用在switch语句之中,表示其中的一个分支catch 用在异常处理中,用来捕捉异常char 基本数据类型之一,字符类型class 类const 保留关键字,没有具体含义continue 回到一个块的开始处default 默认,例如,用在switch语句中,表明一个默认的分支do 用在do-while循环结构中double 基本数据类型之一,双精度浮点数类型else 用在条件语句中,表明当条件不成立时的分支enum 枚举extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块float 基本数据类型之一,单精度浮点数类型for 一种循环结构的引导词goto 保留关键字,没有具体含义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 用在循环结构中二、详细解释1. 访问控制1) private 私有的private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。
abstract (关键字) 抽象['.bstr.kt]access vt.访问,存取['.kses]'(n.入口,使用权)algorithm n.算法['.lg.riem]Annotation [java]代码注释[.n.u'tei..n]anonymous adj.匿名的[.'n.nim.s]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli])apply v.应用,适用[.'plai]application n.应用,应用程序[,.pli'kei..n]' (application crash 程序崩溃) arbitrary a.任意的['ɑ:bitr.ri]argument n.参数;争论,论据['ɑ:gjum.nt]'(缩写args)assert (关键字) 断言[.'s.:t] ' (java 1.4 之后成为关键字)associate n.关联(同伴,伙伴) [.'s.u.ieit]attribute n.属性(品质,特征) [.'tribju:t]boolean (关键字) 逻辑的, 布尔型call n.v.调用; 呼叫; [k.:l]circumstance n.事件(环境,状况) ['s.:k.mst.ns]crash n.崩溃,破碎[kr..]cohesion内聚,黏聚,结合[k.u'hi:..n](a class is designed with a single, well-focoused purpose. 应该不止这点) command n. 命令,指令[k.'mɑ:nd](指挥, 控制) (command-line 命令行)Comments [java]文本注释['k.ments]compile [java] v.编译[k.m'pail]' Compilation n.编辑[,k.mpi'lei..n] const (保留字)constant n. 常量, 常数, 恒量['k.nst.nt]continue (关键字)coupling耦合,联结['k.pli.]making sure that classes know about other classes only through their APIs. declare [java]声明[di'kl..]default (关键字) 默认值; 缺省值[di'f.:lt]delimiter定义符; 定界符Encapsulation[java]封装(hiding implementation details)Exception [java]例外; 异常[ik'sep..n]entry n.登录项, 输入项, 条目['entri]enum (关键字)execute vt.执行['eksikju:t]exhibit v.显示, 陈列[ig'zibit]exist存在, 发生[ig'zist] '(SQL关键字exists)extends (关键字) 继承、扩展[ik'stend]false (关键字)final (关键字) finally (关键字)fragments段落; 代码块['fr.gm.nt]FrameWork [java]结构,框架['freimw.:k]Generic [java]泛型[d.i'nerik]goto (保留字) 跳转heap n.堆[hi:p]implements (关键字) 实现['implim.nt]import (关键字) 引入(进口,输入)Info n.信息(information [,inf.'mei..n] )Inheritance [java]继承[in'herit.ns] (遗传,遗产)initialize预置初始化[i'iz]instanceof (关键字) 运算符,用于引用变量,以检查这个对象是否是某种类型。
Java中的关键字有哪些?1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
1.访问修饰符的关键字(3个)public(公有的):可跨包protected (受保护的):当前包内可⽤private (私有的):当前类可⽤2.定义类、接⼝、抽象类和实现接⼝、继承类的关键字、实例化对象(6个)class (类):public class A(){}花括号⾥是已实现的⽅法体,类名需要与⽂件名相同interface (接⼝):public interface B(){}花括号⾥有⽅法体,但没有实现,⽅法体句⼦后⾯是英⽂分号“;”结尾 abstract (声明抽象):public abstract class C(){}介于类与接⼝中间,可以有,也可以没有已经实现的⽅法体implements (实现):⽤于类或接⼝,实现接⼝public class A interface B(){} extends (继承):⽤于类继承类public class A extends D(){}new (创建新对象):A a=new A();A表⽰⼀个类3.包的关键字(2个)import (引⼊包的关键字):当使⽤某个包的⼀些类时,仅需要类名,即可⾃动插⼊类所在的包package (定义包的关键字):将所有相关的类放在⼀个包类以便查找修改等4.数据类型的关键字(9个)byte (字节型):8bitchar (字节型):16bitboolean (布尔型):--short (短整型):16bitint (整型):32bitfloat (浮点型):32bitlong (长整型):64bitdouble (双精度):64bitvoid (⽆返回):public void A(){}其他需要反回的经常与return连⽤5.条件循环(流程控制)(12个)if (如果) :if(条件语句{执⾏代码}如果条件语句成⽴,就开始执⾏{}⾥⾯的内容else (否则,或者) :常与if连⽤,⽤法相同:if(...){...}else{...}while (当什么时候):while(条件语句){执⾏代码}for(满⾜三个条件时):for(初始化循环变量;判断条件;循环变量值{}switch (选择结构):switch(表达式){case常量表达式1:语句1;...case常量表达式2;语句2;default:语句;}default就是如果没有匹配的case就执⾏它,default并不是必须的。
Java中的两个关键字——super、thisJava中的两个关键字——super、this ⼀、supersuper 是java中⽅的⼀个关键字,⽤它可以引⽤⽗类中的成员:super可⽤于访问⽗类中定义的属性super可⽤于调⽤⽗类中定义的成员⽅法super可⽤于在⼦类构造器中调⽤⽗类的构造器使⽤super关键字注意事项:1、当⼦类和⽗类都有同名的属性时,在⼦类中如果要使⽤⽗类的属性 super . 属性2、 super只能应⽤在成员⽅法和构造⽅法中,不能⽤在静态⽅法中(和this是⼀样的)3、如果在构造⽅法中使⽤必须放在第⼀⾏4、在构造⽅法中this()和super()不能同时出现super没有什么需要解释的地⽅,我们⽤代码来看看super具体的⼀些强⼤功能吧⽰例⼀、使⽤super调⽤基类的属性:public class Father { int num=20;}public class Child extends Father{ int num; public void print(){ num=10; super.num=30; System.out.println("num="+num); System.out.println("="+super.num); }}public class Test { public static void main(String[] args) { Child xm=new Child(); xm.print(); }}运⾏结果:⽰例⼆、使⽤super调⽤基类中的构造⽅法:public class Father { int num; public Father() { System.out.println("⽗类中的⽆参构造⽅法---"); } public Father(int num){ System.out.println("⽗类中的有参的构造⽅法----"+num); }}public class Child extends Father{ int num; public Child() { super(30); System.out.println("⼦类⽆参构造⽅法---"); } public Child(int num) { this.num = num; System.out.println("⼦类中的有参的构造⽅法---"+num); }}解释⼀下上⾯的这段代码:在Child类中的第⼀个构造函数⾥⾯,super(30);它会去调⽤⽗类中嗲有⼀个int型参数的构造⽅法。
关键字作用访问控制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声明一个异常可能被抛出包相关import引入package包基本类型boolean布尔型byte字节型char字符型double双精度float浮点int整型long长整型short短整型null空TRUE真FALSE假变量引用super父类,超类this本类void无返回值保留字goto跳转const静态native本地详细说明private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。
只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。
在类的外部protected 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
可以在声明 protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无public 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
可能只会在其他任何类或包中引用 public 类、方法或字段。
所有类成员的默认访问范围都是abstract关键字可以修改类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法不在声明它的类中实现,但必须在某个子类中重写。
最最常用的关键词及音标数据类型:boolean、byte、short、int、long、double、char、float、double.包引入和包声明:import、package.用于类和接口的声明:class、extends、implements、interface。
流程控制:if、else、switch、do、while、case、break、continue、return、default、while、for。
异常处理:try、catch、finally、throw、throws。
修饰符:abstract、final、native、private、protected、public、static、synchronized、transient、volatile。
其他:new、instanceof、this、super、void、assert、const*、enum、goto*、strictfp。
Java基础常见英语词汇(共70个)['ɔbdʒekt] [’ɔ:rientid]导向的['prəʊɡræmɪŋ]编程OO:object-oriented ,面向对象OOP: object-oriented programming,面向对象编程[dɪ’veləpmənt][kɪt]工具箱['vɜːtjʊəl]虚拟的JDK:Java development kit,java开发工具包JVM:java virtual machine ,java虚拟机['dʒɑːvə] [mə’ʃiːn]机器[kəm’paɪl]Compile:编绎Run:运行[’veərɪəb(ə)l][ɒpə'reɪʃ(ə)n][pə’ræmɪtə]variable:变量operation:操作,运算parameter:参数[’fʌŋ(k)ʃ(ə)n]function:函数member—variable:成员变量member-function:成员函数[dɪ’fɔːlt][’ækses]['pækɪdʒ][ɪm'pɔːt]['stætɪk]default:默认access:访问package:包import:导入static:静态的[vɔid] ['peər(ə)nt][beɪs][’sjuːpə]void:无(返回类型)parent class:父类base class:基类super class:超类[tʃaɪld][di’raivd][əʊvə’raɪd][əʊvə'ləʊd] child class:子类derived class:派生类override:重写,覆盖overload:重载['faɪn(ə)l]['ɪmplɪm(ə)nts]final:最终的,不能改变的implements:实现[rʌn'taim] [æriθ'metik] [ik'sepʃən]Runtime:运行时ArithmeticException:算术异常[ə'rei] ['indeks][baundz][ik’sepʃən][nʌl][’pɔintə]指针ArrayIndexOutOfBoundsException:数组下标越界异常Null Pointer Exception:空引用异常ClassNotFoundException:类没有发现异常[’nʌmbə]['fɔ:mæt]NumberFormatException:数字格式异常(字符串不能转化为数字)[θrəuz]Throws:(投掷)表示强制异常处理Throwable:(可抛出的)表示所有异常类的祖先类[læŋ]['læŋɡwidʒ][ju’til][,dis’plei][ə’rei] [list]Lang:language,语言Util:工具Display:显示ArrayList:(数组列表)表示动态数组[hæʃ][mæp]HashMap: 散列表,哈希表[swiŋ] ['æbstrækt] [’wi ndəu] ['tu:lkit]Swing:轻巧的Awt:abstract window toolkit:抽象窗口工具包[freim] [’pænl][’leiaut][skrəul]['və:tikəl] Frame:窗体Panel:面板Layout:布局Scroll:滚动Vertical:垂直[’hɔri'zɔntəl] ['leibl][tekst][’fi:ld]Horizontal:水平Label:标签TextField:文本框['εəriə] ['bʌtən] [tʃek] [bɔks]TextArea:文本域Button:按钮Checkbox:复选框[’reidiəu] [’kɔmbəu]['lisənə]Radiobutton:单选按钮Combobox:复选框Listener:监听[’bɔ:də] [fləu][ɡrid] [’menju:][bɑ:]Border:边界Flow:流Grid:网格MenuBar:菜单栏[’menju:][’aitəm] [’pɔpʌp]Menu:菜单MenuItem:菜单项PopupMenu:弹出菜单['daiəlɔɡ] [’mesidʒ] ['aikɔn] [nəud]Dialog:对话框Message:消息Icon:图标Node:节点['dʒa:və]['deitəbeis][,kɔnek'tivəti]Jdbc:java database connectivity :java数据库连接[draivə]['mænidʒə] [kə'nekʃən] [’steitmənt]DriverManager:驱动管理器Connection:连接Statement:表示执行对象[pri’peəd] [ri’zʌlt]Preparedstatement:表示预执行对象Resultset:结果集['eksikju:t]['kwiəri]executeQuery:执行查询334157810 这群每日java技术免费分享定期java资料更新Jbuilder中常用英文(共33个)[kləuz] [ik’sept][peinz]Close all except…:除了。
Java 48个关键字总结珍藏版1.abstract Java 关键字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 类不能有子类。
2.boolean 变量的值可以是true 或false。
示例boolean valid = true;if (valid){<statement>}注释boolean 变量只能以true 或false 作为值。
boolean 不能与数字类型相互转换。
包含boolean 操作数的表达式只能包含boolean 操作数。
Boolean 类是boolean 原始类型的包装对象类3.break 关键字用于提前退出for、while 或do 循环,或者在switch 语句中用来结束case 块。
示例for (i=0; i<max; i++){if (<loop finished early>){break;}}int type = <some value>;switch (type){case 1:<statement>break;case 2:<statement>break;default:<statement>}注释break 总是退出最深层的while、for、do 或switch 语句。
JAVA 词汇大全A B C D E F H I J L M O P R S T U V W ________________________________________ A______________________________________________________________________________ Abstract Window Toolkit(AWT)抽象窗口工具集抽象窗口工具集一个用本地图形组件实现的图形接口。
这些组件提供了大部分的本地组件。
这个接口正逐步被Swing 组件所替代,参见Swing Set. Abstract 抽象的一个Java 语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。
被其它类继承。
一个抽象类可以使用抽象方法,一个抽象类可以使用抽象方法,一个抽象类可以使用抽象方法,抽象方法不需要实现,抽象方法不需要实现,但是需要在子类中被实现abstract class 抽象类含有一个或多个抽象方法的类,不能被实例化。
定义抽象类的目的是使其他类能够从它继承,并且通过实现抽象方法使这个类具体化abstract method 抽象方法没有实现的方法access control 访问控制控制用户或程序访问资源的权限,保证资源的一致性的方法API 应用程序接口Applica on Programming Interface 的缩写。
指导应用程序开发人员访问类方法和类状态的说明applet 小应用程序通常在Web 浏览器中执行的一个Java 组件,同样可以在其他的支持applet 模型的应用程序或设备中执行Applet container applet 容器一个支持applet 的容器argument 参数在函数调用中使用的数据项。
一个参数可以是常量、变量或表达式array 数组相同类型的数据的集合,每一个数据项通过一个整数唯一标识ASCII American Standard Code for Informa on Interchange 的缩写。
Javathis关键字详解(3种⽤法)Java this关键字详解(3种⽤法)this 关键字是常⽤的关键字,可⽤于任何实例⽅法内指向当前对象,也可指向对其调⽤当前⽅法的对象,或者在需要当前类型对象引⽤时使⽤。
下⾯我们根据⽰例分别讲解 this 关键字的作⽤。
this.属性名⼤部分时候,普通⽅法访问其他⽅法、成员变量时⽆须使⽤ this 前缀,但如果⽅法⾥有个局部变量和成员变量同名,但程序⼜需要在该⽅法⾥访问这个被覆盖的成员变量,则必须使⽤ this 前缀。
例 1假设有⼀个教师类 Teacher 的定义如下:1. public class Teacher {2. private String name; // 教师名称3. private double salary; // ⼯资4. private int age; // 年龄5. }在上述代码中 name、salary 和 age 的作⽤域是 private,因此在类外部⽆法对它们的值进⾏设置。
为了解决这个问题,可以为 Teacher 类添加⼀个构造⽅法,然后在构造⽅法中传递参数进⾏修改。
代码如下:1. // 创建构造⽅法,为上⾯的3个属性赋初始值2. public Teacher(String name,double salary,int age) {3. = name; // 设置教师名称4. this.salary = salary; // 设置教师⼯资5. this.age = age; // 设置教师年龄6. }在 Teacher 类的构造⽅法中使⽤了 this 关键字对属性 name、salary 和 age 赋值,this 表⽰当前对象。
=name语句表⽰⼀个赋值语句,等号左边的 是指当前对象具有的变量 name,等号右边的 name 表⽰参数传递过来的数值。
创建⼀个 main() ⽅法对 Teacher 类进⾏测试,代码如下:1. public static void main(String[] args) {2. Teacher teacher = new Teacher("王刚",5000.0,45);3. System.out.println("教师信息如下:");4. System.out.println("教师名称:"++"\n教师⼯资:"+teacher.salary+"\n教师年龄:"+teacher.age);5. }运⾏该程序,输出的结果如下所⽰。
Java关键字(keywords)abstract default if private thisboolean do implements otected throwbreak double import public throwsbyte else instanceof return transientcase extends int short trycatch final interface static voidchar finally long strictfp volatileclass float native super whileconst for new switchcontinue goto package synchronized以上是java specifications中定义的keywords,一共48个,其中常见的三个看似是关键字的true, false, null,都不是关键字,而是作为一个单独标识类型。
其中,不常用到的关键字有:const,goto,native,strictfp,transient,volatile。
const和goto为java中的保留字。
1. nativenative是方法修饰符。
Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。
因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。
Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
Example:Java代码1.public interface TestInterface {2. void doMethod();3.}4.public class Test implements TestInterface {5. public native void doMethod();6. private native int doMethodB();7.public native synchronized String doMethodC();8.static native void doMethodD();9.}为什么需要使用native method?请参考:/topic/72543 java Native Method初涉2. strictfp修饰类和方法,意思是FP-strict,精确浮点,符合IEEE-754规范的。
(1)除了在(2)中表述的有关继承方面的区别之外,在某个类中定义的protected 方法和属性(注意是定义的,不是继承而来的,对于继承而来的情况在(2)中有表述)和默认权限方法和属性是一样的。
比如,某类的protected 方法和属性在包外是不能通过该类对象进行访问的(你能在包外访问一个类的默认权限的方法和属性吗?当然不能),这就是为什么在某对象所在的包的以外的任何地方,你不可以通过该类的对象引用来调用它的protected 方法和属性,哪怕是在该类的子类中也不可以这样做。
在该类包外的子类中能“看到“的只是子类自己继承来的protected 方法和属性,它是不能“看到“它的父类对象的protected方法和属性的。
(2)protected 修饰的方法和属性和默认权限方法和属性的区别在于:在包外的子类可以继承protected 方法和属性,而且被继承的protected 方法和属性,在子类中仍然是protected(如果方法没有被override),但是要注意的是,我这里说它们仍然是protected,是从它们可以由该子类的包外的子类继续继承的递归性角度来说的,实际上它们的可见范围和该子类中新定义的protected 方法和属性是有区别的。
不同之处在于在该子类中新定义的protected 方法和属性对该子类所在的包是可见的。
而从父类中继承的protected 方法和属性在该子类所在的包中仅仅对该子类是可见的,同时另外它们还享有被继承前的可见范围(即被被继承前的可见范围仍然保持。
这让人想起oop中的一个原则,方法和属性被继承后,其可见的范围只能扩大,不能缩小)。
比如某类中定义某个protected方法,那么在该类所在的包中是可以访问该类的包外的子类的通过继承得到的该protected方法的(尽管该子类是在包外)。
同时不可以在该类(代号A)的包外定义的某个类B中调用类A的子类SA的继承该类得到的该protected 方法(类B可以是A子类也可以不是A子类,类SA可以是在任何一个包中,但是B和SA是不同的两个类)。
Java关键字(keyword)和保留字(reserved word)的用法在java中有48个关键字和2个保留字。
经过学习,借助了谷歌的力量我将这些关键字和保留字整理如下。
一.访问限定。
1.public关键字: public的意思是公有的,public作为关键字可以放在类前,表示这个类可以被其他包中的类的对象所访问。
Public限定的类在文件中只允许有一个,且类名必须与文件名相同。
如果public用来修饰方法,表示方法可以被其他包中的类调用。
如果public用来修饰属性,则可直接通过对象名.属性来访问对象的属性。
2.private关键字: private的意思是私有的,其可调用性范围最小。
在方法的前面加上private,则方法只能由内部的方法或者构造器调用,通常,属性都是用private限定的,而一般的类前,都不加private限定。
在类继承时,父类中的private方法将不能被子类继承。
当我们给某个构造器加上private修饰符时,则不能创建某个类的对象。
3.protected关键字:protected限定符界于public和private之间。
被protected限定的方法,子类可以继承,在同一个包内可以访问,在不同的包内不可以访问。
这些关键字的用法如上所述,但为了更好的理解一些细节的问题,大家可以看一下我对下面这些问题的总结。
那么,一个类中是否可以定义两个或者两个以上的public类?我们可以在eclipse 中运行一下,结果如下:由上可见,在一个类中,Public限定的类在文件中只允许有一个,且类名必须与文件名相同。
若在类里面还要创建一个类的话,那就只能是默认的,不可以加其他访问修饰符,或者,可以在已有的类的内部,再创建一个类,但名字必须不同与文件名。
若属性使用public进行修饰,就可以直接通过对象·属性来访问对象的属性。
输出结果是name=向聘。
这里就是直接通过创建的对象来访问st对象的name属性的。
java中不常见的关键字:strictfp1.strictfp, 即 strict float point (精确浮点)。
strictfp 关键字可应⽤于类、接⼝或⽅法。
使⽤ strictfp 关键字声明⼀个⽅法时,该⽅法中所有的float和double表达式都严格遵守FP-strict 的限制,符合IEEE-754规范。
当对⼀个类或接⼝使⽤ strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进⾏计算。
严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表⽰。
如果你想让你的浮点运算更加精确,⽽且不会因为不同的硬件平台所执⾏的结果不⼀致的话,可以⽤关键字strictfp.例⼦如下:不使⽤strictfp的例⼦:1public class TestNoStrictfp {2private static double aDouble = 0.0555500333333212d;3private static float aFloat = 0333000000222f;45public static void main(String[] args) {67double cDouble = aDouble / aFloat;89 System.out.println("aDouble:" + aDouble);10 System.out.println("aFloat:" + aFloat);11 System.out.println("cDouble:" + cDouble);12 }1314 }使⽤strictfp的例⼦:1public strictfp class TestStrictfp {2private static double aDouble = 0.0555500333333212d;3private static float aFloat = 0.0333000000222f;45public static void main(String[] args) {67double cDouble = aDouble / aFloat;89 System.out.println("aDouble:" + aDouble);10 System.out.println("aFloat:" + aFloat);11 System.out.println("cDouble:" + cDouble);12 }1314 }运⾏结果:不使⽤strictfp的例⼦运⾏结果:aDouble:0.0555500333333212aFloat:3.33000016E11cDouble:1.6681690896577544E-13使⽤strictfp的例⼦运⾏结果:aDouble:0.0555500333333212aFloat:0.0333cDouble:1.668169110346482。
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.abstractabstract 关键字可以修改类或方法。
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 类不能有子类。
2.boolean变量的值可以是true 或false。
-示例-boolean valid = true;if (valid){<statement>}-注释-boolean 变量只能以true 或false 作为值。
boolean 不能与数字类型相互转换。
包含boolean 操作数的表达式只能包含boolean 操作数。
Boolean 类是boolean 原始类型的包装对象类。
3.break用于提前退出for、while 或do 循环,或者在switch 语句中用来结束case 块。
-示例-for (i=0; i<max; i++){if (<loop finished early>){break;}}int type = <some value>;switch (type){case 1:<statement>break;case 2:<statement>break;default:<statement>}-注释-break 总是退出最深层的while、for、do 或switch 语句。
4.bytebyte 是Java 原始类型。
byte 可存储在[-128, 127] 范围以内的整数值。
-示例-byte b = 124;-注释-Byte 类是byte 原始类型的包装对象类。
它定义代表此类型的值的范围的MIN_VALUE 和MAX_VALUE 常量。
Java 中的所有整数值都是32 位的int 值,除非值后面有l 或L(如235L),这表示该值应解释为long。
5.case用来标记switch 语句中的每个分支。
-示例-int arg = <some value>;switch (arg){case 1:<statements>break;case 2:<statements>break;default:<statements>break;}-注释-case 块没有隐式结束点。
break 语句通常在每个case 块末尾使用,用于退出switch 语句。
如果没有break 语句,执行流将进入所有后面的case 和/或default 块。
6.catchcatch 关键字用来在try-catch 或try-catch-finally 语句中定义异常处理块。
-示例-try{<可能引发异常的块>}catch (<ng.Exception 或子类> e){<处理异常e 的代码>}try{<可能引发其他异常的块>}catch (FooException e){<处理FooException e 的代码>}catch (BarException e){<处理BarException e 的代码>}try{<可能引发异常的块>}catch (<ng.Exception 或子类> e){<处理异常e 的代码>}finally{<有异常或无异常情况下都执行的语句>}-注释-开始和结束标记{ 和} 是catch 子句语法的一部分,即使该子句只包含一个语句,也不能省略这两个标记。
每个try 块都必须至少有一个catch 或finally 子句。
如果某个特定异常类未被任何catch 子句处理,该异常将沿着调用栈递归地传播到下一个封闭try 块。
如果任何封闭try 块都未捕获到异常,Java 解释器将退出,并显示错误消息和堆栈跟踪信息。
7.charchar 是Java 原始类型。
char 变量可以存储一个Unicode 字符。
-示例-char delimiter = ';';-注释-可以使用下列char 常量:\b - 空格\f - 换页\n - 换行\r - 回车\t - 水平制表符\' - 单引号\" - 双引号\" - 反斜杠\xxx - 采用xxx 编码的Latin-1 字符。
\x 和\xx 均为合法形式,但可能引起混淆。
\uxxxx - 采用十六进制编码xxxx 的Unicode 字符。
Character 类包含一些可用来处理char 变量的static 方法,这些方法包括isDigit()、isLetter()、isWhitespace() 和toUpperCase()。
char 值没有符号。
8.classclass 关键字用来声明新的Java 类,该类是相关变量和/或方法的集合。
类是面向对象的程序设计方法的基本构造单位。
类通常代表某种实际实体,如几何形状或人。
类是对象的模板。
每个对象都是类的一个实例。
要使用类,通常使用new 操作符将类的对象实例化,然后调用类的方法来访问类的功能。
-示例-public class Rectangle{float width;float height;public Rectangle(float w, float h){width = w;height = h;}public float getWidth(){return width;}public float getHeight(){return height;}}9.continuecontinue 关键字用来跳转到for、while 或do 循环的下一个迭代。
-示例-for (i=0; i<max; i++){<statements>if (<done with this iteration>){continue;}<statements>}-注释-continue 总是跳到最深层while、for 或do 语句的下一个迭代。
10.defaultdefault 关键字用来标记switch 语句中的默认分支。
-示例-int arg = <some value>;switch (arg){case 1:<statements>break;case 2:<statements>break;default:<statements>break;}-注释-default 块没有隐式结束点。
break 语句通常在每个case 或default 块的末尾使用,以便在完成块时退出switch 语句。
如果没有default 语句,其参数与任何case 块都不匹配的switch 语句将不执行任何操作。
11.dodo 关键字用于指定一个在每次迭代结束时检查其条件的循环。
-示例-do{<statements>}while (!found);-注释-do 循环体至少执行一次。
条件表达式后面必须有分号。
12.doubledouble 是Java 原始类型。
double 变量可以存储双精度浮点值。
-示例-double ratio = .01;double diameter = 6.15;double height = 1.35E03; // 1.35 * 103 或1350.0double height = 1e-2; // 1.0 * 10-2 或0.01-注释-由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java 浮点数值可代表无穷大和NaN(非数值)。
Double 包装对象类用来定义常量MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和NaN。
13.elseelse 关键字总是在if-else 语句中与if 关键字结合使用。
else 子句是可选的,如果if 条件为false,则执行该子句。
-示例-if (condition){<statements>}else{<statements>}14.extendsextends 关键字用在class 或interface 声明中,用于指示所声明的类或接口是其名称后跟有extends 关键字的类或接口的子类。