最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中一些關(guān)鍵字的使用技巧總結(jié)

 更新時(shí)間:2015年09月10日 09:30:53   作者:leizhimin  
這篇文章主要介紹了Java中一些關(guān)鍵字的使用技巧總結(jié),其中重點(diǎn)講述了this和super兩個(gè)關(guān)鍵字的用法,需要的朋友可以參考下

final——

final用于類表示該類不能派生子類。

final用于方法表示該方法不能被子類重寫。

final用于變量時(shí)表示常量,類似于C/C++的const關(guān)鍵字。

final用于成員變量表示該成員變量為常量,不能被修改,必須在變量定義時(shí)賦值。

final用于局部變量表示該局部變量為常量,不能被修改,可以在變量定義時(shí)賦值,也可以先定義變量后賦值。

static——

static用于成員變量表示該變量只有一份,也就是說靜態(tài)成員變量屬于類而不屬于某個(gè)具體的類實(shí)例對象,所有的類實(shí)例對象共享這個(gè)靜態(tài)成員變量,訪問靜態(tài)成員變量時(shí)通過對應(yīng)的類名完成。靜態(tài)成員變量在定義時(shí)可初始化賦值,也可不賦值,不賦值時(shí)會(huì)被自動(dòng)初始化,切記局部變量不可以是靜態(tài)的。

static用于方法,使得不需要實(shí)例化類就可以通過類名來調(diào)用靜態(tài)方法,需要注意的是在靜態(tài)方法內(nèi)不可以使用this關(guān)鍵字,不可以調(diào)用非靜態(tài)方法,也不可以引用非靜態(tài)成員變量。

static用于類,這里指的是內(nèi)部類,那么在別的地方就可以通過外部類名來引用這個(gè)靜態(tài)的內(nèi)部類。

static還可以用于類的代碼塊,叫做靜態(tài)代碼塊,是在類中獨(dú)立于類成員的static語句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們在類中出現(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。

類的訪問權(quán)限(Y/N)

|| 關(guān)鍵字 || 類 || 包 || 子類 || 其它包 ||
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| default | Y | Y | N | N |
| private | Y | N | N | N |

public、protected和private三個(gè)關(guān)鍵字,可以用于類(內(nèi)部類)、成員變量和成員函數(shù),默認(rèn)的訪問權(quán)限是包內(nèi)有效,當(dāng)類訪問權(quán)限與成員變量或成員函數(shù)的訪問權(quán)限不同時(shí),選擇最低訪問權(quán)限。

interface/implements/extends/class——

interface用于聲明接口,接口中的方法只有聲明,沒有實(shí)現(xiàn),訪問權(quán)限可以是public或者默認(rèn)權(quán)限,還可以指定為abstract。

implements用于實(shí)現(xiàn)接口,需要實(shí)現(xiàn)接口中的所有方法,可以同時(shí)實(shí)現(xiàn)多個(gè)接口。

extends用于繼承父類或父接口,繼承父類時(shí)只能是單繼承,與C++的多繼承不同,接口繼承支持多繼承。

class用于聲明類,訪問權(quán)限可以是public或者默認(rèn)權(quán)限,還可以指定為abstract、final,訪問權(quán)限對于頂層類和內(nèi)部類的限制是不同的。


abstract——

abstract用于類表示這個(gè)類為抽象類,不能實(shí)例化。

abstract用于方法表示這個(gè)方法為抽象方法,只需聲明,不用實(shí)現(xiàn),由子類實(shí)現(xiàn),抽象方法不能用private和static關(guān)鍵字。

下面來著重講一下this和super的使用:

this
        Java關(guān)鍵字this只能用于方法方法體內(nèi)。當(dāng)一個(gè)對象創(chuàng)建后,Java虛擬機(jī)(JVM)就會(huì)給這個(gè)對象分配一個(gè)引用自身的指針,這個(gè)指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this,這在“Java關(guān)鍵字static、final使用總結(jié)”一文中給出了明確解釋。并且this只和特定的對象關(guān)聯(lián),而不和類關(guān)聯(lián),同一個(gè)類的不同對象有不同的this。下面給出一個(gè)使用this的綜合實(shí)例,以便說明問題:
 

package org.leizhimin;
public class Test6 {
 private int number;
 private String username;
 private String password;
 private int x = 100;
 public Test6(int n) {
 number = n; // 這個(gè)還可以寫為: this.number=n;
 }
 public Test6(int i, String username, String password) {
 // 成員變量和參數(shù)同名,成員變量被屏蔽,用"this.成員變量"的方式訪問成員變量.
 this.username = username;
 this.password = password;
 }
 // 默認(rèn)不帶參數(shù)的構(gòu)造方法
 public Test6() {
 this(0, "未知", "空"); // 通過this調(diào)用另一個(gè)構(gòu)造方法
 }
 public Test6(String name) {
 this(1, name, "空"); // 通過this調(diào)用另一個(gè)構(gòu)造方法
 }
 public static void main(String args[]) {
 Test6 t1 = new Test6();
 Test6 t2 = new Test6("游客");
 t1.outinfo(t1);
 t2.outinfo(t2);
 }
 private void outinfo(Test6 t) {
 System.out.println("-----------");
 System.out.println(t.number);
 System.out.println(t.username);
 System.out.println(t.password);
 f(); // 這個(gè)可以寫為: this.f();
 }
 private void f() {
 // 局部變量與成員變量同名,成員變量被屏蔽,用"this.成員變量"的方式訪問成員變量.
 int x;
 x = this.x++;
 System.out.println(x);
 System.out.println(this.x);
 }
 
 //返回當(dāng)前實(shí)例的引用
 private Test6 getSelf() {
 return this; 
 }
}

 
運(yùn)行結(jié)果如下:

-----------
0
未知
空
100
101
-----------
0
游客
空
100
101

 
        看著上面的例子,說明在什么情況下需要用到this:
        第一、通過this調(diào)用另一個(gè)構(gòu)造方法,用發(fā)是this(參數(shù)列表),這個(gè)僅僅在類的構(gòu)造方法中,別的地方不能這么用。
        第二、函數(shù)參數(shù)或者函數(shù)中的局部變量和成員變量同名的情況下,成員變量被屏蔽,此時(shí)要訪問成員變量則需要用“this.成員變量名”的方式來引用成員變量。當(dāng)然,在沒有同名的情況下,可以直接用成員變量的名字,而不用this,用了也不為錯(cuò),呵呵。
        第三、在函數(shù)中,需要引用該函所屬類的當(dāng)前對象時(shí)候,直接用this。
        其實(shí)這些用法總結(jié)都是從對“this是指向?qū)ο蟊旧淼囊粋€(gè)指針”這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯(cuò),要理解!
 
super
 
        super關(guān)鍵和this作用類似,是被屏蔽的成員變量或者成員方法或變?yōu)榭梢?,或者說用來引用被屏蔽的成員變量和成員成員方法。
不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(就是類之上最近的超類)。下面是一個(gè)綜合運(yùn)用super的例子,有兩個(gè)類:一個(gè)Father類,一個(gè)Father類的子類Son,通過這兩個(gè)類完全演示了super的用法,一下是代碼:
 

package org.leizhimin;
public class Father {
 public String v="Father";
 public String x="輸出了Father類的public成員變量x!!!";
 
 public Father() {
 System.out.println("Father構(gòu)造方法被調(diào)用!");
 }
 
 public Father(String v){
 this.v="Father類的帶參數(shù)構(gòu)造方法!運(yùn)行了.";
 }
 public void outinfo(){
 System.out.println("Father的outinfo方法被調(diào)用");
 } 
 public static void main(String[] args) {
 // TODO 自動(dòng)生成方法存根
 }
}
 
package org.leizhimin;
public class Son extends Father{
 public String v="Son";
 
 public Son() {
 super();   //調(diào)用超類的構(gòu)造方法,只能放到第一行.
 System.out.println("Son無參數(shù)構(gòu)造方法被調(diào)用!");
 //super();   //錯(cuò)誤的,必須放到構(gòu)造方法體的最前面.
 } 
 
 public Son(String str){
 super(str);
 System.out.println("Son帶參數(shù)構(gòu)造方法被調(diào)用!");
 }
 //覆蓋了超類成員方法outinfo()
 public void outinfo(){ 
 System.out.println("Son的outinfo()方法被調(diào)用");
 } 
 
 public void test(){
 
 String v="哈哈哈哈!";  //局部變量v覆蓋了成員變量v和超類變量v
 
 System.out.println("------1-----");
 System.out.println(v);  //輸出局部變量v
 System.out.println(this.v); //輸出(子類)成員變量v
 System.out.println(super.v); //輸出超類成員變量v 
 
 System.out.println("------2-----");
 System.out.println(x);  //輸出超類成員變量v,子類繼承而來
 System.out.println(super.x); //輸出超類成員變量v
 
 System.out.println("------3-----");
 outinfo();  //調(diào)用子類的outinfo()方法
 this.outinfo(); //調(diào)用子類的outinfo()方法
 super.outinfo(); //調(diào)用父類的outinfo()方法
 } 
 
 public static void main(String[] args) {
 new Son().test();
 
 }
}

 
子類Son運(yùn)行結(jié)果:
 

Father構(gòu)造方法被調(diào)用!
Son無參數(shù)構(gòu)造方法被調(diào)用!
------1-----
哈哈哈哈!
Son
Father
------2-----
輸出了Father類的public成員變量x!!!
輸出了Father類的public成員變量x!!!
------3-----
Son的outinfo()方法被調(diào)用
Son的outinfo()方法被調(diào)用
Father的outinfo方法被調(diào)用

相關(guān)文章

  • java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能

    java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能

    本篇文章主要介紹了java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • java程序員必須要學(xué)會(huì)的linux命令總結(jié)(推薦)

    java程序員必須要學(xué)會(huì)的linux命令總結(jié)(推薦)

    下面小編就為大家分享一篇java程序員必須要學(xué)會(huì)的linux命令總結(jié)(推薦)。具有很好的參考價(jià)值。希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • struts2的國際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼

    struts2的國際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼

    本篇文章主要介紹了struts2的國際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java-lambda表達(dá)式入門看這一篇就夠了

    Java-lambda表達(dá)式入門看這一篇就夠了

    lambda表達(dá)式最簡單的作用就是用于簡化創(chuàng)建匿名內(nèi)部類對象,Lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在以后執(zhí)行一次或多次,下面通過本文給大家介紹Java-lambda表達(dá)式入門教程,感興趣的朋友一起看看吧
    2021-05-05
  • Spring中的EventListenerMethodProcessor組件詳解

    Spring中的EventListenerMethodProcessor組件詳解

    這篇文章主要介紹了Spring中的EventListenerMethodProcessor組件詳解,EventListenerMethodProcessor 是 Spring 事件機(jī)制中非常重要的一個(gè)組件,它管理了一組EventListenerFactory組件,用來將應(yīng)用中每個(gè)使用@EventListener注解定義的事件監(jiān)聽,需要的朋友可以參考下
    2023-12-12
  • SpringBoot優(yōu)化接口響應(yīng)時(shí)間的九個(gè)技巧

    SpringBoot優(yōu)化接口響應(yīng)時(shí)間的九個(gè)技巧

    在實(shí)際開發(fā)中,提升接口響應(yīng)速度是一件挺重要的事,特別是在面臨大量用戶請求的時(shí)候,本文為大家整理了9個(gè)SpringBoot優(yōu)化接口響應(yīng)時(shí)間的技巧,希望對大家有所幫助
    2024-01-01
  • 通過Spring Boot整合Mybatis分析自動(dòng)配置詳解

    通過Spring Boot整合Mybatis分析自動(dòng)配置詳解

    這篇文章主要給大家介紹了關(guān)于如何通過Spring Boot整合Mybatis分析自動(dòng)配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 淺談Spring Data JPA與MyBatisPlus的比較

    淺談Spring Data JPA與MyBatisPlus的比較

    本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較
    2024-08-08
  • 分析JVM的組成結(jié)構(gòu)

    分析JVM的組成結(jié)構(gòu)

    JVM(虛擬機(jī)):指以軟件的方式模擬具有完整硬件系統(tǒng)功能、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng) ,是物理機(jī)的軟件實(shí)現(xiàn)。JVM和VMware,Virtual Box等虛擬機(jī)一樣,都是運(yùn)行在操作系統(tǒng)之上的計(jì)算機(jī)系統(tǒng)
    2021-06-06
  • JAVA中Collections工具類sort()排序方法

    JAVA中Collections工具類sort()排序方法

    這篇文章主要介紹了JAVA中Collections工具類sort()排序方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-11-11

最新評論

曲周县| 承德市| 日喀则市| 疏勒县| 嘉黎县| 昂仁县| 马关县| 马鞍山市| 苍梧县| 丰都县| 安国市| 泽库县| 衡阳市| 大同市| 买车| 瓦房店市| 如东县| 青阳县| 屯门区| 青神县| 澄城县| 竹北市| 临城县| 安化县| 三门峡市| 乌拉特前旗| 温州市| 察雅县| 蓝山县| 梁平县| 黎城县| 高邮市| 新干县| 云林县| 苏尼特左旗| 襄汾县| 吉木萨尔县| 大连市| 崇州市| 宁都县| 安化县|