第一篇:總結(jié)Java中return語(yǔ)句的用法(范文模版)
總結(jié)Java中return語(yǔ)句的用法
Java中的return語(yǔ)句總是和方法有密切關(guān)系,return語(yǔ)句總是用在方法中,有兩個(gè)作用,一個(gè)是返回方法指定類型的值(這個(gè)值總是確定的),一個(gè)是結(jié)束方法的執(zhí)行(僅僅一個(gè)return語(yǔ)句)。
在return語(yǔ)句的各類文章中,大多僅僅介紹了return語(yǔ)句用于有返回值(非void返回值)的方法中。而很少或沒(méi)有介紹return語(yǔ)句在vodi返回值方法中的運(yùn)用。
return語(yǔ)句用在非void返回值類型的方法中,不但能返回基本類型,還可以返回(包括用戶自定義類的)對(duì)象。
下面通過(guò)一個(gè)簡(jiǎn)單例子說(shuō)明一下:
/**
* Created by IntelliJ IDEA.* User: leizhimin
* Date: 2007-12-3
* Time: 8:54:28
* Java中的return語(yǔ)句使用總結(jié)
*/
public class TestReturn {
public static void main(String args[]){
TestReturn t = new TestReturn();
t.test1();
t.test2();
}
/**
* 無(wú)返回值類型的return語(yǔ)句測(cè)試
*/
public void test1(){
System.out.println(“---------無(wú)返回值類型的return語(yǔ)句測(cè)試--------”);
for(int i = 1;;i++){
if(i == 4)return;
System.out.println(“i = ” + i);
}
}
/**
* 有返回值類型的return語(yǔ)句測(cè)試
* @return String
*/
public String test2(){
System.out.println(“---------有返回值類型的return語(yǔ)句測(cè)試--------”);
return “返回一個(gè)字符串”;
}
}
運(yùn)行結(jié)果:
---------無(wú)返回值類型的return語(yǔ)句測(cè)試--------
i = 1
i = 2
i = 3
---------有返回值類型的return語(yǔ)句測(cè)試--------
Process finished with exit code 0
第二篇:SQL中forXML語(yǔ)句用法總結(jié)
-------raw模式:raw模式將查詢結(jié)果集中的每一行轉(zhuǎn)換為帶有通用標(biāo)識(shí)符row或可能提供元素名稱的xml元素。(將查詢結(jié)果集中的每一行轉(zhuǎn)換為row元素的屬性或row元素的子無(wú)素)-------------行集中非Null的每列值都將映射為row元素的一個(gè)屬性--------------------------
select top 10 *
from mixtureMeasureMonitor
for xml raw
---將elements指令添加到for xml子句,則行集中非null的每列值都將映射為row元素的一個(gè)子元素
-----------
select top 10 *
from mixtureMeasureMonitor
for xml raw,elements
----在指定elements指令的同時(shí)指定xsinil選項(xiàng),則將行集中為null的每例值映射為具有屬性xsi:nil=“true”的一個(gè)元素
---------------------------
select top 10 *
from mixtureMeasureMonitor
for xml raw,elements XSINIL
-Auto模式根據(jù)查詢確定返回的xml的形式--------------
select pmm.id,pmm.ppId,pp.MixPropNo,pmm.criterion
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml auto
select
pmm.id,pp.MixPropNo,pmm.ppId,pmm.criterion,pmm.temperatureMark,pmm.remark
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml auto,elements xsinil
-----------------explicit模式:使用RAW和AUTO模式不能很好地控制從查詢結(jié)果生成的XML的形狀。但是,對(duì)于要從查詢結(jié)果生成的XML,EXPLICIT模式會(huì)提供非常好的靈活性-----------------------
select
pp.MixPropNo,pmm.id,pmm.ppId,pmm.criterion,pmm.temperatureMark,pmm.remark
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml explicit
-------------------------OPENXML語(yǔ)句,對(duì)XML文件進(jìn)行查詢,然后返回指定的XML中的結(jié)果集數(shù)據(jù)---------------------------
/*openxml(idoc int [in],rowpattern nvarchar[in],[flags byte [in]])
[WITH(SchemaDeclaration|TableName)]
Idoc:XML文檔的內(nèi)部表示形式的文檔句柄
RowPattern:XPath模式,用來(lái)標(biāo)識(shí)要作為行處理的節(jié)點(diǎn)
Flags:指示應(yīng)在XML數(shù)據(jù)和關(guān)系行集間使用映射,以及應(yīng)如何填充溢出列
SchemaDeclaration:窗體的架構(gòu)定義
TableName:如果具有所需架構(gòu)的表已經(jīng)存在且不要求列模式,則為給定的表名*/ DECLARE @idoc int
declare @doc varchar(2000)
set @doc='
'
EXEC sp_xml_preparedocument @idoc output,@doc
select *
from openxml(@idoc,'/ROOT/Customer',1)
with(CustomerID varchar(10),ContactName varchar(20))/*path()括號(hào)內(nèi)的參數(shù)是控制節(jié)點(diǎn)名稱的,不指定括號(hào)時(shí)控制節(jié)點(diǎn)默認(rèn)是row。rooot選項(xiàng)來(lái)添加單個(gè)頂級(jí)元素*/
------------------path選項(xiàng)不帶()時(shí),默認(rèn)控制節(jié)點(diǎn)是row,其他字段元素都是row元素的子元素----------
select ID ,name
from MtrlBaseName
for xml path
--------------------------ID,name是product標(biāo)簽的子標(biāo)簽---------------select ID ,name
from MtrlBaseName
for xml path('Product'),root('ProductExport')
------------------ID是Product標(biāo)簽的屬性,name是Product標(biāo)簽的內(nèi)容-----------------------------
select ID [@ID],name as [*]
from MtrlBaseName
for xml path('Product'),root('ProductExport')
------------------ID,name是Product標(biāo)簽的屬性
----
select ID [@ID],name as [@name]
from MtrlBaseName
for xml path('Product'),root('ProductExport')
第三篇:JAVA的輸入語(yǔ)句總結(jié)
java的輸入語(yǔ)句小結(jié))
1.使用Scanner
使用時(shí)需要引入包import java.util.Scanner;首先定義Scanner對(duì)象 Scanner sc = new Scanner(System.in);如果要輸入整數(shù),則 int n = sc.nextInt();String類型的,則String temp = sc.next();比如:
import java.util.Scanner;
public class Test {
public static void main(String[] args){ Scanner scanner = new Scanner(System.in);
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int month =-1;
while(true){
try {
System.out.print(“請(qǐng)輸入月份:”);month = scanner.nextInt();if(month >= 1 && month <= 12){ break;}
System.out.println(“** 請(qǐng)輸入正確的月份 **”);} catch(Exception e){
System.out.println(“** 格式錯(cuò)誤!請(qǐng)輸入數(shù)字 **”);scanner.next();} }
System.out.println(month + “ 月份有:” + days[month-1] + “ 天”);} }
2.使用BufferedReader
用前需要引入 import java.io.Reader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String input = br.readLine();比如:
import java.io.*;
public class importtext {
public static void main(String[] args){
String st;
int num;
float fnum;
try{
System.out.print(“輸入:”);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
st = br.readLine();
System.out.print(“輸入一個(gè)數(shù):”);
num = Integer.parseInt(br.readLine());
System.out.print(“輸入一個(gè)浮點(diǎn)數(shù):”);
fnum = Float.parseFloat(br.readLine());
System.out.print(“輸出:”+st+'n');
System.out.print(“輸出:”+num+'n');
System.out.print(“輸出:”+fnum+'n');
}catch(IOException e){}
}
}
package com.s2;import java.io.*;public class Input { public static void main(String[] args)throws IOException { while(true){ BufferedReader buf;String str;buf =new BufferedReader(new InputStreamReader(System.in));System.out.println(“Input a string:”);str=buf.readLine();System.out.println(“String=”+str);} } } ======
應(yīng)該注意的是:Java把從鍵盤(pán)輸入的數(shù)據(jù)一律看作是字符串,因此若要從鍵盤(pán)輸入并讓系統(tǒng)認(rèn)可是數(shù)值型數(shù)據(jù),必須經(jīng)過(guò)轉(zhuǎn)換。比如:
package com.s2;import java.io.*;public class Input { public static void main(String[] args)throws IOException { while(true){ int num;BufferedReader buf;String str;buf =new BufferedReader(new InputStreamReader(System.in));System.out.println(“Input an integer:”);str=buf.readLine();num=Integer.parseInt(str);System.out.println(“String=”+str);System.out.println(“Integer=”+str);} } }
第四篇:java中this&super的用法小結(jié)
This : this關(guān)鍵字必須放在非靜態(tài)方法里面
this關(guān)鍵字代表自身,在程序中主要的使用用途有以下幾個(gè)方面: 1.使用this關(guān)鍵字引用成員變量
在一個(gè)類的方法或構(gòu)造方法內(nèi)部,可以使用“this.成員變量名”這樣的格式來(lái)引用成員變量名,有些時(shí)候可以省略,有些時(shí)候不能省略。
eg1.public class ReferenceVariable {
} private int a;
public ReferenceVariable(int a){ this.a = a;}
public int getA(){ return a;}
public void setA(int a){ this.a = a;}
按照J(rèn)ava語(yǔ)言的變量作用范圍規(guī)定,參數(shù)a的作用范圍為構(gòu)造方法或方法內(nèi)部,成員變量a的作用范圍是類的內(nèi)部,這樣在構(gòu)造方法和setA方法內(nèi)部就存在了變量a的沖突,Java語(yǔ)言規(guī)定當(dāng)變量作用范圍重疊時(shí),作用域小的變量覆蓋作用域大的變量。所以在構(gòu)造方法和setA方法內(nèi)部,參數(shù)a起作用。
這樣需要訪問(wèn)成員變量a則必須使用this進(jìn)行引用。當(dāng)然,如果變量名不發(fā)生重疊,則this可以省略。
但是為了增強(qiáng)代碼的可讀性,一般將參數(shù)的名稱和成員變量的名稱保持一致,所以this的使用頻率在規(guī)范的代碼內(nèi)部應(yīng)該很多。2.使用this關(guān)鍵字在自身構(gòu)造方法內(nèi)部引用其它構(gòu)造方法, this語(yǔ)句是是構(gòu)造函數(shù)的第一個(gè)語(yǔ)句,它的形式是this(參數(shù)表)
在一個(gè)類的構(gòu)造方法內(nèi)部,也可以使用this關(guān)鍵字引用其它的構(gòu)造方法,這樣可以降低代碼的重復(fù),也可以使所有的構(gòu)造方法保持統(tǒng)一,這樣方便以后的代碼修改和維護(hù),也方便代碼的閱讀。
public class ReferenceConstructor { int a;public ReferenceConstructor(){ this(0);//調(diào)用了另一個(gè)構(gòu)造方法
} public ReferenceConstructor(int a){
this.a = a;} }
這里在不帶參數(shù)的構(gòu)造方法內(nèi)部,使用this調(diào)用了另外一個(gè)構(gòu)造方法,其中0是根據(jù)需要傳遞的參數(shù)的值,當(dāng)一個(gè)類內(nèi)部的構(gòu)造方法比較多時(shí),可以只書(shū)寫(xiě)一個(gè)構(gòu)造方法的內(nèi)部功能代碼,然后其它的構(gòu)造方法都通過(guò)調(diào)用該構(gòu)造方法實(shí)現(xiàn),這樣既保證了所有的構(gòu)造是統(tǒng)一的,也降低了代碼的重復(fù)。
在實(shí)際使用時(shí),需要注意的是,在構(gòu)造方法內(nèi)部使用this關(guān)鍵字調(diào)用其它的構(gòu)造方法時(shí),調(diào)用的代碼只能出現(xiàn)在構(gòu)造方法內(nèi)部的第一行可執(zhí)行代碼。這樣,在構(gòu)造方法內(nèi)部使用this關(guān)鍵字調(diào)用構(gòu)造方法最多會(huì)出現(xiàn)一次。
3.使用this關(guān)鍵字代表自身類的對(duì)象
在一個(gè)類的內(nèi)部,也可以使用this代表自身類的對(duì)象,或者換句話說(shuō),每個(gè)類內(nèi)部都有一個(gè)隱含的成員變量,該成員變量的類型是該類的類型,該成員變量的名稱是this。eg1.public class ReferenceObject { ReferenceObject instance;public ReferenceObject(){
instance = this;} public void test(){
System.out.println(this);} }
在構(gòu)造方法內(nèi)部,將對(duì)象this的值賦值給instance,在test方法內(nèi)部,輸出對(duì)象this的內(nèi)容,這里的this都代表自身類型的對(duì)象。
4.使用this關(guān)鍵字引用成員方法
在一個(gè)類的內(nèi)部,成員方法之間的互相調(diào)用時(shí)也可以使用“this.方法名(參數(shù))”來(lái)進(jìn)行引用,只是所有這樣的引用中this都可以省略。
Super
1.在子類構(gòu)造方法中要調(diào)用父類的構(gòu)造方法,用“super(參數(shù)列表)”的方式調(diào)用,參數(shù)不是必須的。同時(shí)還要注意的一點(diǎn)是:“super(參數(shù)列表)”這條語(yǔ)句只能用在子類構(gòu)造方法體中的第一行。
2.當(dāng)子類方法中的局部變量或者子類的成員變量與父類成員變量同名時(shí),也就是子類局部變量覆蓋父類成員變量時(shí),用“super.成員變量名”來(lái)引用父類成員變量。當(dāng)然,如果父類的成員變量沒(méi)有被覆蓋,也可以用“super.成員變量名”來(lái)引用父類成員變量,不過(guò)這是不必要的。
3.當(dāng)子類的成員方法覆蓋(重寫(xiě))了父類的成員方法時(shí),也就是子類和父類有完全相同的方法定義(但方法體可以不同),此時(shí),用“super.方法名(參數(shù)列表)”的方式訪問(wèn)父類的方法。eg1.class Country{
String name;
void value()
{ name=“China”;}
} class City extends Country{
String name;
void value()
{
name=“Beijing”;
super.value();
System.out.print(name);//父類的成員變量被覆蓋
System.out.print(super.name);//輸出父類成員變量
} //輸出的結(jié)果為 Beijing China Static 1.在一個(gè)類中定義一個(gè)方法為static,那就是說(shuō),無(wú)需本類的對(duì)象即可調(diào)用此方法。
class Simple { static void go(){ System.out.println(“Go...”);} } public class Cal { public static void main(String[] args){ Simple.go();} } //輸出為Go...,調(diào)用一個(gè)靜態(tài)方法就是“類名.方法名”
2.靜態(tài)變量與靜態(tài)方法類似。所有此類實(shí)例共享此靜態(tài)變量,也就是說(shuō)在類裝載時(shí),只分配一塊存儲(chǔ)空間,所有此類的對(duì)象都可以操控此塊存儲(chǔ)空間。eg1.class Value { static int c=0;static void inc(){ c++;} }
class Count { public static void prt(String s){ System.out.println(s);} public static void main(String[] args){ Value v1,v2;v1 = new Value();v2=new Value();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1.inc();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);} } //結(jié)果:v1.c=0 v2.c=0 v1.c=1 v2.c=1 //都顯示為1,但是只調(diào)用了v1.inc(),可以證明它們共享一塊存儲(chǔ)區(qū)
eg2.class Value { static int c=0;Value(){ c=15;} Value(int i){ c=i;} static void inc(){ c++;} } class Count { public static void prt(String s){ System.out.println(s);}
//static定義的變量會(huì)優(yōu)先于任何其它非static變量,雖然v出現(xiàn)在v1和v2的前面,但是結(jié)果卻是v1和v2的初始化在v的前面
Value v=new Value(10);static Value v1,v2;
//在static{后面跟著一段代碼,這是用來(lái)進(jìn)行顯式的靜態(tài)變量初始化,這段代碼只會(huì)初始化一//次,且在類被第一次裝載時(shí)。Static { prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1=new Value(27);prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v2=new Value(15);prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);} public static void main(String[] args){ Count ct=new Count();prt(“ct.c=”+ct.v.c);//這句? prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1.inc();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);prt(“ct.c=”+ct.v.c);} }
//運(yùn)行結(jié)果 v1.c=0 v2.c=0 v1.c=27 v2.c=27 v1.c=15 v2.c=15 ct.c=10 v1.c=10 v2.c=10 v1.c=11 v2.c=11 ct.c=11
3.通常一個(gè)普通類不允許聲明為靜態(tài)的,只有一個(gè)內(nèi)部類才可以。這時(shí)這個(gè)聲明為靜態(tài)的內(nèi)部類可以直接作為一個(gè)普通類來(lái)使用,而不需實(shí)例一個(gè)外部類.eg1.public class StaticCls{ public static void main(String[] args){ //注意此處用法,創(chuàng)建一個(gè)類的內(nèi)部類對(duì)象
OuterCls.InnerCls oi=new OuterCls.InnerCls();} } class OuterCls{ public static class InnerCls{ InnerCls(){ System.out.println(“InnerCls”);} } //結(jié)果:InnerCls
Final Final成員: 1.在類中定義變量加上final關(guān)鍵字,那便是說(shuō),這個(gè)變量一旦被初始化便不可改變(對(duì)基本類型來(lái)說(shuō)是其值不可變,而對(duì)于對(duì)象變量來(lái)說(shuō)其引用不可再變)。其初始化可以在兩個(gè)地方,一是其定義處,二是在構(gòu)造函數(shù)中。這兩個(gè)地方只能選其一。
2.方法中的內(nèi)部類在用到方法中的參變量時(shí),此參變也必須聲明為final才可使用
eg.public class INClass{ void innerClass(final String str){ class IClass{ IClass(){ System.out.println(str);} } IClass ic=new IClass();} public static void main(String[] args){ INClass inc=new INClass();inc.innerClass(“Hello”);} } Final方法:
1.final方法不需要進(jìn)行擴(kuò)展,并且也不允許任何從此類繼承的類來(lái)覆寫(xiě)這個(gè)方法,但是繼承仍然可以繼承這個(gè)方法(即可以直接使用)。
2.inline的機(jī)制,它會(huì)使你在調(diào)用final方法時(shí),直接將方法主體插入到調(diào)用處,而不是進(jìn)行例行的方法調(diào)用
Final類:
一個(gè)final類是無(wú)法被任何人繼承。對(duì)于final類中的成員,你可以定義其為final,也可以不是final。而對(duì)于方法,由于所屬類為final的關(guān)系,自然也就成了final型的。
常量的定義:final static 定義時(shí)候:多次引用的字符串和數(shù)字等需要定義常量。
定義地點(diǎn):根據(jù)引用的范圍(同一個(gè)類、不同類):類中、單獨(dú)的常量類或者接口。如何定義:常量的定義處需要詳細(xì)的注釋。
第五篇:java中常用關(guān)鍵字總結(jié)
Java中的關(guān)鍵字總結(jié)
final 關(guān)鍵字
1、用final修飾的類不能被繼承,沒(méi)有子類;
2、用final修飾的方法,方法不能被重寫(xiě);
3、用final修飾變量,變量的值不能被修改,表示常量,(書(shū)寫(xiě)規(guī)范:全部字母都要大寫(xiě);多個(gè)單詞,可以使用下劃線(_)分開(kāi);)注意:如果被final修飾的變量是一個(gè)引用類型的數(shù)據(jù),那么通過(guò)這個(gè)引用改變堆空間中的數(shù)據(jù),不會(huì)報(bào)錯(cuò);如果被final修飾的變量是一個(gè)引用類型的數(shù)據(jù),那么通過(guò)這個(gè)引用改變堆空間中的數(shù)據(jù),不會(huì)報(bào)錯(cuò);
4、final用于成員變量表示該成員變量為常量,不能被修改,必須在變量定義時(shí)賦值。
5、final用于局部變量表示該局部變量為常量,不能被修改,可以在變量定義時(shí)賦值,也可以先定義變量后賦值。什么時(shí)候用final關(guān)鍵字? 有的時(shí)候不想別人重寫(xiě)我的方法就使用final關(guān)鍵字修飾該方法;
static關(guān)鍵字
1、static用于成員變量表示該變量只有一份,也就是說(shuō)靜態(tài)成員變量屬于類而不屬于某個(gè)具體的類實(shí)例對(duì)象,所有的類實(shí)例對(duì)象共享這個(gè)靜態(tài)成員變量; 靜態(tài)函數(shù)是不需要對(duì)象的,直接可以使用類名來(lái)調(diào)用;
2、非靜態(tài)函數(shù)可以調(diào)用靜態(tài)函數(shù);靜態(tài)函數(shù)不能調(diào)用非靜態(tài)函數(shù)(非靜態(tài)函數(shù)都是通過(guò)對(duì)象調(diào)用的);靜態(tài)函數(shù)不能使用非靜態(tài)成員變量,但可以使用靜態(tài)成員變量;
3、靜態(tài)函數(shù)調(diào)用時(shí)不需要對(duì)象的,所以不能使用和對(duì)象有關(guān)的關(guān)鍵字;(this;super;)
4、構(gòu)造函數(shù)不能使用static修飾(構(gòu)造函數(shù)是創(chuàng)建對(duì)象,開(kāi)辟空間,給所有成員變量賦默認(rèn)值之后,有JVM調(diào)用進(jìn)棧,用來(lái)給對(duì)象的成員變量賦初始值的)static用于類,這里指的是內(nèi)部類,那么在別的地方就可以通過(guò)外部類名來(lái)引用這個(gè)靜態(tài)的內(nèi)部類。
5、static還可以用于類的代碼塊,叫做靜態(tài)代碼塊,靜態(tài)代碼塊在類加載的時(shí)候就執(zhí)行完畢,而類只加載一次;是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們?cè)陬愔谐霈F(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。什么時(shí)候用static關(guān)鍵字? 不想建立對(duì)象時(shí);對(duì)于公用的成員變量必須使用static關(guān)鍵字修飾才能保證共享;
private關(guān)鍵字
1、java中的訪問(wèn)權(quán)限修飾符(作用是控制被修飾的成員的訪問(wèn)權(quán)限);被private修飾的成員,只能在本類中使用;所以被私有的成員需要在外界訪問(wèn),還需要提供一個(gè)公共的方法;
設(shè)值:set + 變量名(變量名的首字母大寫(xiě)); 取值:get + 變量名(變量名的首字母大寫(xiě));
2、構(gòu)造函數(shù)私有化,就只能在被類中使用,別的地方調(diào)用不了;單例設(shè)計(jì)模式時(shí)會(huì)用到;
在開(kāi)發(fā)中,一般類的成員變量都要私有化,然后提供get和set方法;
interface關(guān)鍵字
1、interface接口不是一個(gè)類,使用interface聲明;接口沒(méi)有構(gòu)造函數(shù);接口是用來(lái)描述不屬于繼承體系的擴(kuò)展功能的;還可以定義規(guī)則;接口和類之間是實(shí)現(xiàn)關(guān)系,一個(gè)實(shí)現(xiàn)類可以實(shí)現(xiàn)多個(gè)接口;接口和接口之間是繼承關(guān)系,可以多繼承和多重繼承;
2、接口中可以書(shū)寫(xiě)的內(nèi)容:
成員變量:只能使用一下修飾符:public static final;也就是說(shuō),接口中的成員變量,都是常量;
成員函數(shù): 只能使用修飾符:public abstract;也就是說(shuō),接口中的方法,都是公共和抽象的;一般函數(shù)前面的修飾符,推薦public不要省略;
什么時(shí)候用interface關(guān)鍵字? 對(duì)于繼承體系之外的擴(kuò)展功能需要使用接口來(lái)描述;
implements關(guān)鍵字
implements用于實(shí)現(xiàn)接口,需要實(shí)現(xiàn)接口中的所有方法,可以同時(shí)實(shí)現(xiàn)多個(gè)接口。extends關(guān)鍵字
extends用于繼承父類或父接口,繼承父類時(shí)只能是單繼承。
class關(guān)鍵字
class用于聲明類,訪問(wèn)權(quán)限可以是public或者默認(rèn)權(quán)限,還可以指定為abstract、final,訪問(wèn)權(quán)限對(duì)于頂層類和內(nèi)部類的限制是不同的。
instanceof關(guān)鍵字
1、比較運(yùn)算符,運(yùn)算符左邊是一個(gè)指向一個(gè)對(duì)象的引用(左邊就是一個(gè)變量名),右邊是一個(gè)類名,運(yùn)算符表示的意思就是:判斷左邊的對(duì)象的類型是不是右邊的類;
2、使用instanceof關(guān)鍵字,可以實(shí)時(shí)判斷一個(gè)對(duì)象的類型,就可以避免強(qiáng)制類型轉(zhuǎn)換中容易出現(xiàn)的類型轉(zhuǎn)換異常。
abstract關(guān)鍵字
1、abstract用于類表示這個(gè)類為抽象類,不能實(shí)例化。
2、抽象類,必須由子類去繼承,繼承的子類必須實(shí)現(xiàn)父類中所有的抽象方法,否則子類也是抽象的;
3、抽象函數(shù)必須放在抽象類中;抽象類中除了抽象函數(shù),還可以定義所有一般類中可以定義的成員;
4、抽象類中可以不書(shū)寫(xiě)抽象方法;抽象類中必須有構(gòu)造方法;抽象類一定是父類;
5、抽象類是父類,用來(lái)描述所有子類的共性信息的,只是描述的有些功能是不具體的;
6、abstract用于方法表示這個(gè)方法為抽象方法,只需聲明,不用實(shí)現(xiàn),由子類實(shí)現(xiàn),抽象方法不能用private和static關(guān)鍵字。什么時(shí)候用abstract關(guān)鍵字? 當(dāng)事物的功能描述不清,只能表示有這個(gè)功能時(shí),就應(yīng)該使用抽象修飾該功能,這個(gè)功能就是抽象的功能;如果一個(gè)類中有抽象的功能,那么這個(gè)類也是抽象的類;不想實(shí)例化這個(gè)類(包括自己也不行),但是允許別人繼承,也可以使用抽象類。
this關(guān)鍵字
1、表示自身所屬對(duì)象的引用;哪個(gè)對(duì)象調(diào)用this,this就指向哪個(gè)對(duì)象;
2、Java關(guān)鍵字this只能用于方法方法體內(nèi)。當(dāng)一個(gè)對(duì)象創(chuàng)建后,Java虛擬機(jī)(JVM)就會(huì)給這個(gè)對(duì)象分配一個(gè)引用自身的指針,這個(gè)指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對(duì)不能出現(xiàn)this.什么時(shí)候用this關(guān)鍵字?
1、通過(guò)this調(diào)用另一個(gè)構(gòu)造方法,用法:this(參數(shù)列表),這個(gè)僅僅在類的構(gòu)造方法中,別的地方不能這么用。如果一個(gè)構(gòu)造函數(shù)中有this()語(yǔ)句,就沒(méi)有隱式三步,隱式三步在this語(yǔ)句調(diào)用的那個(gè)構(gòu)造函數(shù)中,且this語(yǔ)句必須在第一行的位置;
2、函數(shù)參數(shù)或者函數(shù)中的局部變量和成員變量同名的情況下,成員變量被私有化,此時(shí)要訪問(wèn)成員變量則需要用“this.成員變量名”的方式來(lái)引用成員變量。(用來(lái)區(qū)分成員變量和局部變量)
3、在函數(shù)中,需要引用該函所屬類的當(dāng)前對(duì)象時(shí)候,直接用this。
super關(guān)鍵字
1、表示父類;可以在子類中調(diào)用父類的非私有成員和構(gòu)造函數(shù);
2、調(diào)用方法:
調(diào)用父類構(gòu)造函數(shù):super(參數(shù));(父類中沒(méi)有無(wú)參構(gòu)造函數(shù)在父類中添
加一個(gè)無(wú)參構(gòu)造;在子類中手動(dòng)調(diào)用有參構(gòu)造函數(shù))調(diào)用父類成員變量:super.變量名; 調(diào)用父類成員函數(shù):super.函數(shù)名(參數(shù));
3、super關(guān)鍵和this作用類似,是被私有的成員變量或者成員方法變?yōu)榭梢?jiàn),或者說(shuō)用來(lái)引用被私有的成員變量和成員方法,不過(guò)super是用在子類中,目的是訪問(wèn)直接父類中被屏蔽的成員.什么時(shí)候用super關(guān)鍵字?
如果父類中沒(méi)有無(wú)參構(gòu)造函數(shù)是,需要在子類中用super調(diào)用有參構(gòu)造函數(shù);