真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java靜態(tài)代碼塊關(guān)鍵字 java類靜態(tài)代碼 構(gòu)造代碼執(zhí)行時間

java中關(guān)鍵字 this 和super的作用及用法

Java關(guān)鍵字this、super使用總結(jié)

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)習(xí)水,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

一、this

Java關(guān)鍵字this只能用于方法方法體內(nèi)。當(dāng)一個對象創(chuàng)建后,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是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),同一個類的不同對象有不同的this。下面給出一個使用this的綜合實例,以便說明問題:

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; // 這個還可以寫為: this.number=n;

}

public Test6(int i, String username, String password) {

// 成員變量和參數(shù)同名,成員變量被屏蔽,用"this.成員變量"的方式訪問成員變量.

this.username = username;

this.password = password;

}

// 默認不帶參數(shù)的構(gòu)造方法

public Test6() {

this(0, "未知", "空"); // 通過this調(diào)用另一個構(gòu)造方法

}

public Test6(String name) {

this(1, name, "空"); // 通過this調(diào)用另一個構(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(); // 這個可以寫為: this.f();

}

private void f() {

// 局部變量與成員變量同名,成員變量被屏蔽,用"this.成員變量"的方式訪問成員變量.

int x;

x = this.x++;

System.out.println(x);

System.out.println(this.x);

}

//返回當(dāng)前實例的引用

private Test6 getSelf() {

return this;

}

}

運行結(jié)果如下:

-----------

未知

100

101

-----------

游客

100

101

通過上面的例子,說明在什么情況下需要用到this:

第一、通過this調(diào)用另一個構(gòu)造方法,用發(fā)是this(參數(shù)列表),這個僅僅在類的構(gòu)造方法中,別的地方不能這么用。

第二、函數(shù)參數(shù)或者函數(shù)中的局部變量和成員變量同名的情況下,成員變量被屏蔽,此時要訪問成員變量則需要用“this.成員變量名”的方式來引用成員變量。當(dāng)然,在沒有同名的情況下,可以直接用成員變量的名字,而不用this,用了也不為錯,呵呵。

第三、在函數(shù)中,需要引用該函所屬類的當(dāng)前對象時候,直接用this。

其實這些用法總結(jié)都是從對“this是指向?qū)ο蟊旧淼囊粋€指針”這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解!

二、super

super關(guān)鍵和this作用類似,是被屏蔽的成員變量或者成員方法或變?yōu)榭梢?,或者說用來引用被屏蔽的成員變量和成員成員方法。

不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(就是類之上最近的超類)。下面是一個綜合運用super的例子,有兩個類:一個Father類,一個Father類的子類Son,通過這兩個類完全演示了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)造方法!運行了.";

}

public void outinfo(){

System.out.println("Father的outinfo方法被調(diào)用");

}

public static void main(String[] args) {

// TODO 自動生成方法存根

}

}

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(); //錯誤的,必須放到構(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運行結(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)用

說明:次例子僅僅為了說明super的用法,實際在設(shè)計類的時候一般都盡可能私有(private)化。

通過上面的例子,下面總結(jié)一下super的用法:

第一、在子類構(gòu)造方法中要調(diào)用父類的構(gòu)造方法,用“super(參數(shù)列表)”的方式調(diào)用,參數(shù)不是必須的。同時還要注意的一點是:“super(參數(shù)列表)”這條語句只能用在子類構(gòu)造方法體中的第一行。

第二、當(dāng)子類方法中的局部變量或者子類的成員變量與父類成員變量同名時,也就是子類局部變量覆蓋父類成員變量時,用“super.成員變量名”來引用父類成員變量。當(dāng)然,如果父類的成員變量沒有被覆蓋,也可以用“super.成員變量名”來引用父類成員變量,不過這是不必要的。

第三、當(dāng)子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有完全相同的方法定義(但方法體可以不同),此時,用“super.方法名(參數(shù)列表)”的方式訪問父類的方法。

Java代碼中,如何在靜態(tài)(由static關(guān)鍵字修飾)方法或靜態(tài)代碼塊中(static{})獲取當(dāng)前類的位置。。。

這是不可能的,static方法不隸屬于任何類/對象,所以無從獲取。static的內(nèi)容由JVM統(tǒng)一管理,甚至都不在堆上.

看了你的補充說明。如果是想知道本靜態(tài)方法在哪個類被實現(xiàn)真的不可行,你的程序設(shè)計有錯誤。如果你是想讀取工作目錄下的一個文件,你只能知道改工作目錄的磁盤路徑,而文件名(類名)必須手工寫明,無法自動獲取。

java 方法 中 { } 括起來的代碼 有什么特別?

一、普通代碼塊

直接在一個方法中出現(xiàn)的{}就稱為普通代碼塊,例子程序如下:

public class CodeDemo01{

public static void main(String[] args){

//普通代碼塊

{

int x = 10;

System.out.println("x=" + x);

}

int x = 100;

System.out.println("x=" + x);

}

}

二、構(gòu)造代碼塊

直接在類中定義的沒有加static關(guān)鍵字的代碼塊{}稱為構(gòu)造代碼塊,例子程序如下:

public class CodeDemo02{

public CodeDemo02(){

System.out.println("========這是構(gòu)造方法=========");

}

//這是構(gòu)造代碼塊,而且在new對象時,構(gòu)造代碼塊優(yōu)先構(gòu)造方法執(zhí)行

{

System.out.println("=========這是構(gòu)造塊!=========");

}

public static void main(String[] args){

new CodeDemo02();

new CodeDemo02();

}

}

三、靜態(tài)代碼塊

使用static關(guān)鍵字聲明的代碼塊稱為靜態(tài)代碼塊,靜態(tài)塊的主要目的是用來為靜態(tài)屬性初始化,例子程序如下:

public class CodeDemo03

{

static{

System.out.println("這是主類中的靜態(tài)代碼塊!");

}

public static void main(String[] args){

new Demo();

new Demo();

new Demo();

}

}

class Demo

{

static{

System.out.println("這是Demo類中的靜態(tài)代碼塊!");

}

{

System.out.println("這是Demo類中的構(gòu)造塊!");

}

public Demo(){

System.out.println("這是構(gòu)造方法!");

}

}

靜態(tài)塊優(yōu)先于主方法的執(zhí)行,靜態(tài)塊優(yōu)先于構(gòu)造方法的執(zhí)行,而且只執(zhí)行一次!

四、同步代碼塊

同步代碼塊主要出現(xiàn)在多線程中。


本文名稱:java靜態(tài)代碼塊關(guān)鍵字 java類靜態(tài)代碼 構(gòu)造代碼執(zhí)行時間
分享URL:http://weahome.cn/article/dddcohj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部