91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解JAVA中的內存結構與重載

發布時間:2021-03-15 15:23:02 來源:億速云 閱讀:203 作者:Leah 欄目:開發技術

詳解JAVA中的內存結構與重載?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一.對象在JVM的內存結構

JAVA內存管理由JVM來管理。
1)堆,所有new出來的對象(包括成員變量)
2)棧,所有局部變量(包括方法的參數)
3)方法區,class字節碼文件(包括方法,靜態數據)

1.引用變量指向null時,會發生空指針異常

public class student {
	int age;
	String name;
	public student(int age,String name){
		this.age=age;
		this.name=name;
	}
	public static void main(String[] args) {
		//(類)引用類型 引用變量	創建對象(new出來的類中的構造方法)
		student s= new student(18,"劉永超");
		s=null;
		System.out.println(s);
		System.out.println(s.age);//發生異常,因為引用變量指向null
	}
}

結果:java.lang.NullPointerException 2.引用類型劃等號和基本類型劃等號的區別: 一.引用類型劃等號:

1…指向同一個對象

2.通過一個引用的修改對象中的數據會影響另一個對象中的數據

二.基本類型劃等號:

1.賦值。

2.對一個變量的修改不會影響到另一個變量(例如int類型)

引用變量畫“”和基本類型畫”“區別:

引用類型畫”==“:

1.判斷兩個引用變量(引用地址)是否指向同一對象

2.基本類型畫等號:判斷兩邊的值是否相等

代碼演示:

public class student2 {
	int age;
	String name;
	public student2(int a,String s){
		age=a;
		name=s;
	}
	
	public static void main(String[] args) {
		student2 s=new student2(17,"liu");
		student2 ss=s;
		s.age=20;
		ss.age=28;
		System.out.println(s.age);
		//s=ss 判斷兩個引用對象(引用變量)是否指指向同一對象
		System.out.println(s==ss);
	}
}

結果為 s.age=28 true;

成員變量與局部變量的生命周期:

  • 成員變量:創建對象開始到被GC垃圾回收器處理掉為止。

  • 局部變量從調用方法到方法就結束。

 二.方法的重載

1).發生在同一類,方法名相同,參數列表類型和數量不同
2).方法的重載,和返回值沒有關系
3).編譯器在在編譯時根據方法的簽名自動綁定調用的方法

注:方法的簽名:方法名+參數列表

代碼的實現:

public class overloadDemo {
	public void test(){
		System.out.println("lala");
	}
	
	public void test(int a){
		System.out.println("heihei");
	}

	public void test(String s){
		System.out.println("xixi");
	}

	public void test(int a,String s){
		System.out.println("caocao");
	}

//	public int test(){不是方法的重載,和返回值沒有關系
//		return 1;
//	}
	
	//構造方法
	public overloadDemo (){
		System.out.println("無參構造");
	}
	
	public overloadDemo(int a){
		System.out.println("有參構造");
	}
	
	public static void main(String[] args) {
		overloadDemo load=new overloadDemo();
		load.test(5);
		load.test(8, "liu");
		
	}
}

如上代碼,load.test(5)將調用public void test(int a){};

load.test(8,“liu”)將調用public void test(int a,String s){}。

三.this的使用:

1.this關鍵字在方法中,用于指向調用該方法的當前對象,簡單的說,那個對象調用方法,this指的就是那個對象,嚴格來講,在方法中需要通過this關鍵字指明當前對象。
2.在構造方法中,用來初始化成員變量的參數一般和成員變量取相同的名字,這樣有利于代碼的可讀性,但次數必須通過this關鍵字來區別成員變量和參數(在這里不能省略this)
3.this就是指當前對象。

this的用法:

1.this.成員變量—訪問當前對象成員變量
2.this.方法名—訪問當前對象的方法(一般不用)
3.this()---------調用構造方法(必須寫在此構造方法中的第一行)

代碼演示:

public class thisDemo {
	int age;
	public void test(){
		System.out.println(this.age);//此處可以省略this關鍵字
	}
	
	public void test(int age){
		System.out.println("這是帶有int類的test方法重載");
		this.test();//此處也可以省略this,編譯器會自己默認
	}
	
	public thisDemo(){
		//this(20);
		this(19,"liuyongcaho");//調用當前對象時int ,string類型的構造方法
		this.age=18;
		System.out.println("這是一個無參構造方法");
	}
	
	public thisDemo(int age){
		this();
		System.out.println(age);
	}
	
	public thisDemo(int age,String name){
		System.out.println(age+"   "+name);
	}
	
	
	public static void main(String[] args) {
		thisDemo pdd=new thisDemo();
		pdd.test(9);
	}
}

運行結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QA8e4G5v-1615567706657)(C:\Users\Thinkpad\AppData\Roaming\Typora\typora-user-images\image-20210312160858936.png)]

可以看出,在new對象時,會自行執行它的無參構造方法,執行完后再執行test(int a){}這個方法。

四:類的繼承

1.作用:代碼復用,減少代碼重復
2.通過extends來繼承
3.超類(父類),派生類(子類)共有的屬性和行為
4.派生類繼承超類后,派生類具有派生類+超類的共有屬性。
5.一個超累可以擁有多個派生類,一個派生類只能有一個超類。
6.繼承具有傳遞性
7.java中規定,在派生類的構造方法中必須先構造超類的構造方法(必須在派生類的第一行),在派生類中若沒有調用超類的方法,則編譯器默認提供super()來調用超類的無參構造方法,若超類自己寫了構造方法,在派生類中不在默認提供super();

super的含義及使用:

1.super指代當前對象的超類對象
2.super必須放在構造方法中的第一行
3.super.成員變量-----訪問超類成員變量
4.super()—調用的時超類構造方法。

代碼演示如下: 父類:

/*
 * 父類(超類)
 */
public class Person {
	int age;
	String name;
	String gender;
	
	public Person(int age,String name){
		this.age=age;
		this.name=name;
		System.out.println(this.age+"  "+this.name);
	}
	public void testperson(){
		System.out.println("我是父類");
	}
}

子類:

/*
 * 子類(派生類)
 * extends
 */
public class Teacher extends Person{
	String subject;
	public Teacher(){
		//super();這是父類的無參構造方法
		super(19,"劉德華");
		System.out.println(this.age+" "+this.name);
	}
	
	//方法的重寫
	public void testperson(){
		System.out.println("這是子類teacher的testperson方法");
	}
	
	public static void main(String[] args) {
		 Person y=new Teacher();//向上造型
		 y.testperson();
	}
}

運行結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zydw2DJx-1615567706663)(C:\Users\Thinkpad\AppData\Roaming\Typora\typora-user-images\image-20210312165717602.png)]

結果分析:

子類在創建對象時會執行子類的無參構造方法,而子類的構造方法中有父類的有參構造方法再執行子類中的testperson方法。

on方法");
}

public static void main(String[] args) {
	 Person y=new Teacher();//向上造型
	 y.testperson();
}

}

##### 運行結果:

[外鏈圖片轉存中...(img-zydw2DJx-1615567706663)]

##### 結果分析:

子類在創建對象時會執行子類的無參構造方法,而子類的構造方法中有父類的有參構造方法再執行子類中的testperson方法。

####

關于詳解JAVA中的內存結構與重載問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清徐县| 美姑县| 兰溪市| 巨鹿县| 芜湖市| 南召县| 宿松县| 吉安市| 买车| 馆陶县| 阳城县| 江川县| 阳西县| 阿拉善盟| 黔西| 肇庆市| 鸡东县| 湘潭市| 石景山区| 张家界市| 进贤县| 沙洋县| 察隅县| 通河县| 南川市| 郁南县| 格尔木市| 临漳县| 呼伦贝尔市| 城固县| 阆中市| 武功县| 崇左市| 清水河县| 正镶白旗| 星座| 富蕴县| 大冶市| 赣榆县| 措美县| 平潭县|