亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇文章帶你深入了解Java基礎(chǔ)(3)

 更新時(shí)間:2021年08月02日 11:49:15   作者:zsr6135  
這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、方法的基本定義

限制條件:本次所講解的方法指的是在主類(lèi)中定義,并且由主方法由主方法直接調(diào)用。

方法是指就是一段可以被重復(fù)調(diào)用的代碼塊。 在java里面如果想要進(jìn)行方法的定義,則可以使用如下的方法進(jìn)行完成。

public static 方法返回值 方法名稱(chēng)([參數(shù)類(lèi)型 變量,....]){
    方法體代碼 ; 
     return [返回值];
}

在定義方法的時(shí)候?qū)τ诜椒ǖ姆祷刂涤梢韵聝深?lèi):void沒(méi)用返回值和數(shù)據(jù)類(lèi)型(基本類(lèi)型、引用類(lèi)型)。

public class TestDemo{
   public static void main(String args[]){
   //如果要在主方法里面調(diào)用該方法,該方法一定要用static進(jìn)行修飾
   	print();	//主方法里面直接調(diào)用
   	print();	//主方法里面直接調(diào)用
   	print();	//主方法里面直接調(diào)用
   }
   public static void print(){
   	System.out.println("Hello,World!");
   }
}

但是有一點(diǎn)要特別的注意就是當(dāng)返回值為void類(lèi)型的時(shí)候,那么該方法當(dāng)中可以直接使用return來(lái)直接結(jié)束調(diào)用。在一般情況下和if判斷使用。

public class TestDemo{
	public static void main(String args[]){
	//如果要在主方法里面調(diào)用該方法,該方法一定要用static進(jìn)行修飾
		print1(10);	//主方法里面直接調(diào)用
		print1(20);	//主方法里面直接調(diào)用
		print1(30);	//主方法里面直接調(diào)用
	}
	public static void print(){
		System.out.println("Hello,World!");
	}
	public static void print1(int x){
		if(x == 20){	//表示方法結(jié)束的判斷
			return ;	//此語(yǔ)句之后的代碼不在執(zhí)行
		}
		System.out.println("x = " + x);
	}
}

image-20210726155126462

image-20210726155831793

2、方法重載

方法的重載是指:方法名稱(chēng)相同,參數(shù)的類(lèi)型或個(gè)數(shù)不同。

public class TestDemo2{
	public static void main(String args[]){
	//如果要在主方法里面調(diào)用該方法,該方法一定要用static進(jìn)行修飾
		System.out.println(add(10,20));	//主方法里面直接調(diào)用
		System.out.println(add(10,20,30));	//主方法里面直接調(diào)用
		System.out.println(add(10.1,20.1));	//主方法里面直接調(diào)用
	}
	public static int add(int a,int b){
		return  a + b;
	}
	public static int add(int a,int b,int c){
		return a + b + c;
	}
	public static double add(double a, double b){
		return a + b;
	}
}

image-20210726160923526

在方法重載的時(shí)候有一個(gè)重要的原則就是要求方法的返回值類(lèi)型一定要相同。

通過(guò)用System.out.println()輸出發(fā)現(xiàn)所有的類(lèi)型都可以進(jìn)行輸出,由此我們可以發(fā)現(xiàn)這個(gè)方法是一個(gè)重載的方法。

3、方法的遞歸調(diào)用

方法的遞歸調(diào)用指的是一個(gè)方法調(diào)用自己的形式。如果要進(jìn)行方法的遞歸操作往往都具備以下特點(diǎn)

  • 方法必須有一個(gè)遞歸的結(jié)束條件
  • 方法在每次遞歸處理的時(shí)候一定要做出一些變更

image-20210726164358510

計(jì)算60!

public class TestDemo4{
	public static void main(String args[]){
		System.out.println(mul(60));	
	}
	public static double mul(double num){
		if (num == 1){
			return 1;
		}
		return num * mul(num - 1);
	}
}

計(jì)算結(jié)果:8.320987112741392E81

其實(shí)我們?cè)谑褂脀hile的循環(huán)操作大部分都可以使用遞歸,而使用遞歸是因?yàn)橹饕粋€(gè)方法可以執(zhí)行的操作很多,而且結(jié)構(gòu)簡(jiǎn)單、好。

4、面向?qū)ο蟮那吧硎敲嫦蜻^(guò)程

兩者的區(qū)別:籠統(tǒng)的將最好的例子就是面向過(guò)程是解決問(wèn)題,面向?qū)ο笫悄K化設(shè)計(jì)。對(duì)于現(xiàn)在的程序就像是汽車(chē)組裝,不同的工廠生產(chǎn)不同零件,將這些零件組裝在一起可以形成一個(gè)汽車(chē),當(dāng)我們零件壞了的時(shí)候還可以進(jìn)行配裝。

面向?qū)ο笤趯?shí)際上還有很多的特點(diǎn)

  • 封裝性:內(nèi)部的操作對(duì)外部而言是不可見(jiàn)的。
  • 繼承性:在上一輩的基礎(chǔ)上繼續(xù)發(fā)展。
  • 多態(tài)性:這是我們最為重要的一個(gè)環(huán)節(jié),利用多態(tài)性才可以得到良好設(shè)計(jì)。

三個(gè)階段:OOA(面向?qū)ο蠓治?、OOD(面向?qū)ο笤O(shè)計(jì))、OOP(面向?qū)ο缶幊? 專(zhuān)業(yè)化術(shù)語(yǔ)

5、類(lèi)與對(duì)象

類(lèi)和對(duì)象是面向?qū)ο蠛诵乃?,也是所有概念的基礎(chǔ)。類(lèi)屬于我們的引用類(lèi)型,所以類(lèi)的使用會(huì)牽扯到我們的內(nèi)存分配問(wèn)題

所謂的類(lèi)就是一個(gè)共性的概念,而對(duì)象就是一個(gè)具體可以使用的事物。

類(lèi)的組成:方法(操作行為)、屬性(變量,描述每一個(gè)對(duì)象的具體特點(diǎn))。

類(lèi)的定義一般有class進(jìn)行聲明

class 類(lèi)名稱(chēng){
	屬性1;	//屬性可以是多個(gè)
    屬性2;
}

此時(shí)的方法不在由主類(lèi)進(jìn)行調(diào)用,而是要通過(guò)對(duì)象進(jìn)行調(diào)用。

聲明實(shí)例化對(duì)象

class Person{	//定義一個(gè)類(lèi)首先要將類(lèi)的名稱(chēng)每個(gè)首字母進(jìn)行大寫(xiě)
	public void info(){
		System.out.println("name = "+ name + "\nage = " + age);
	}
}
public class TestDemo5{
	public static void main(String args[]){
		//實(shí)例化對(duì)象第一種方式
		Person person = new Person();
		person.name = "張三";	//設(shè)置對(duì)象中的屬性值
		person.age = 13;	//設(shè)置對(duì)象中的屬性值
		person.info();
		//實(shí)例化對(duì)象第二種方式
		Person person1 = null;
		person1 = new Person();
		person1.info();
	}	
}

image-20210726175038491

image-20210727163822257

image-20210727161759502

image-20210727164325831

引用數(shù)據(jù)類(lèi)型最大的特征在于內(nèi)存的分配操作,只要出現(xiàn)關(guān)鍵字new那么只有一個(gè)解釋?zhuān)洪_(kāi)辟新的內(nèi)存(內(nèi)存是不可能無(wú)限開(kāi)辟的,所以這個(gè)時(shí)候所謂的性能調(diào)優(yōu)調(diào)整的就是內(nèi)存問(wèn)題)。

內(nèi)存分析

我們使用的內(nèi)存空間分為兩塊:堆內(nèi)存空間(保存真正的數(shù)據(jù),保存對(duì)象的屬性信息)和棧內(nèi)存空間(保存的堆內(nèi)存的地址,堆內(nèi)存操作權(quán),簡(jiǎn)單理解叫保存對(duì)象的名稱(chēng)),所有數(shù)據(jù)類(lèi)型必須在開(kāi)辟空間后才能使用。如果使用了未開(kāi)辟的數(shù)據(jù)類(lèi)型則會(huì)出現(xiàn)NullPointerException,只有引用數(shù)據(jù)類(lèi)型(數(shù)組、類(lèi)、接口)才會(huì)產(chǎn)生此類(lèi)異常,以后出現(xiàn)了根據(jù)錯(cuò)誤位置觀察其是否進(jìn)行實(shí)例化對(duì)象。

image-20210727164540802

引用傳遞

引用傳遞的本質(zhì)就在于別名,而這個(gè)別名只不過(guò)是放在我們棧內(nèi)存當(dāng)中,一塊堆內(nèi)存可以被多個(gè)棧內(nèi)存所指向。

class Person{	//定義一個(gè)類(lèi)首先要將類(lèi)的名稱(chēng)每個(gè)首字母進(jìn)行大寫(xiě)
	String name;
	int age;
	public void info(){
		System.out.println("name = "+ name + "\nage = " + age);
	}
}
public class TestDemo5{
	public static void main(String args[]){
		//實(shí)例化對(duì)象第一種方式
		Person per = new Person();
		per.name = "張三";	//設(shè)置對(duì)象中的屬性值
		per.age = 13;	//設(shè)置對(duì)象中的屬性值
		per.info();
		//實(shí)例化對(duì)象第二種方式
		Person per1 = null;
		per1 = new Person();
		per1.name = "小于子";
		per1.age = 30;
		per1.info();
		//此步驟就是引用傳遞的操作
		Person per2 = per1;
		per2.name = "狗剩";
		per1.info();
	}	
}

image-20210727170204489

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java自動(dòng)拆裝箱簡(jiǎn)單介紹

    Java自動(dòng)拆裝箱簡(jiǎn)單介紹

    這篇文章主要為大家詳細(xì)介紹了Java自動(dòng)拆裝箱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MyBatisPlus查詢(xún)投影與查詢(xún)條件詳細(xì)講解

    MyBatisPlus查詢(xún)投影與查詢(xún)條件詳細(xì)講解

    這篇文章主要介紹了MyBatisPlus DQL編程控制中的查詢(xún)投影、查詢(xún)條件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java并發(fā)編程之ThreadLocal詳解

    Java并發(fā)編程之ThreadLocal詳解

    今天給大家?guī)?lái)的是Java并發(fā)編程的相關(guān)知識(shí),文中對(duì)ThreadLocal做了非常詳細(xì)的分析及介紹,對(duì)小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Struts2之Validator驗(yàn)證框架的詳細(xì)介紹

    Struts2之Validator驗(yàn)證框架的詳細(xì)介紹

    Struts2中提供了數(shù)據(jù)校驗(yàn)驗(yàn)證數(shù)據(jù)例如驗(yàn)證郵件、數(shù)字等,本篇文章介紹了Struts2之Validator的詳細(xì)介紹,有興趣的可以了解一下。
    2017-03-03
  • Mybatis中BindingException異常的產(chǎn)生原因及解決過(guò)程

    Mybatis中BindingException異常的產(chǎn)生原因及解決過(guò)程

    BindingException異常是MyBatis框架中自定義的異常,顧名思義指的是綁定出現(xiàn)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MyBatis報(bào)錯(cuò)BindingException異常的產(chǎn)生原因及解決過(guò)程,需要的朋友可以參考下
    2023-06-06
  • 細(xì)談java同步之JMM(Java Memory Model)

    細(xì)談java同步之JMM(Java Memory Model)

    Java內(nèi)存模型是在硬件內(nèi)存模型上的更高層的抽象,它屏蔽了各種硬件和操作系統(tǒng)訪問(wèn)的差異性,保證了Java程序在各種平臺(tái)下對(duì)內(nèi)存的訪問(wèn)都能達(dá)到一致的效果。下面我們來(lái)一起學(xué)習(xí)下JMM
    2019-05-05
  • java中的i++和++i的區(qū)別詳解

    java中的i++和++i的區(qū)別詳解

    這篇文章主要介紹了java中的i++和++i的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能

    基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署

    詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署

    本篇文章主要介紹了詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • java-synchronized 嵌套使用代碼詳解

    java-synchronized 嵌套使用代碼詳解

    本文以synchronized 的同步造成了死鎖為例,介紹了java-synchronized 嵌套使用代碼詳解,同時(shí)對(duì)鎖和死鎖的概念進(jìn)行了說(shuō)明,需要的朋友可以了解下。
    2017-09-09

最新評(píng)論