日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中如何直接使用方法返回的值_java基础-2-方法、面向对象

發(fā)布時間:2024/9/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中如何直接使用方法返回的值_java基础-2-方法、面向对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、方法

1.1、定義:方法可以認為我們寫程序中所要實現(xiàn)的某一個功能,方法中會包含很多條語句、流程控制、循環(huán)等,這些內(nèi)容組合起來去處理一件事情。

1.2、方法的聲明:

方法的聲明位置必須寫在類中,并且方法的內(nèi)部不能再去聲明另一個方法,一個類的方法與方法之間只能是并列關(guān)系,不能嵌套。

1.3、方法聲明的格式:

修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,......){ 執(zhí)行語句 ……… return 返回值; }

1.4、修飾符:

方法的修飾符比較多,有對訪問權(quán)限進行限定的,有靜態(tài)修飾符static,還有最終修飾符final等。

1.5、返回值類型:

用于限定方法返回值的數(shù)據(jù)類型,可以是我們學過的所有類型,包括基本類型和引用類型,但是有一個返回值只能作為方法的返回值類型就是void,如果一個方法沒有返回值要寫成void。

1.6、方法名:

按照標識符的規(guī)則和規(guī)范即可,我們可以自行定義。

1.7、參數(shù)類型:

用于限定調(diào)用方法時傳入?yún)?shù)的數(shù)據(jù)類型,可以是基本類型和引用類型。

1.7、參數(shù)名稱:

用于是一個變量,用于接收調(diào)用方法時傳入的數(shù)據(jù),是我們自己定義的,如果多個參數(shù)需要使用”,”進行分隔,一個方法也可以沒有參數(shù),如果沒有,參數(shù)()中可以不寫任何東西,參數(shù)的作用域是當前方法。

1.8、{}:

其中的內(nèi)容叫做方法體,用來限定的方法區(qū)域。

1.9、return:

1. 有兩個作用:a. 表示結(jié)束方法、b. 返回該方法指定類型的值

2. 如果一個方法的返回值是void,在方法結(jié)束的時候可以不寫return,如果寫了return,就只代表方法結(jié)束,return后不能跟任何內(nèi)容格式為 return;

3. 如果一個方法的返回值類型不是void,在方法結(jié)束的時候必須要寫return,return后要寫對應

方法返回值類型的數(shù)據(jù)格式為 return 對應返回值類型的數(shù)據(jù)。

1.10、返回值:

被return語句返回的值,該值會返回給調(diào)用者,就代表執(zhí)行過本方法后的結(jié)果是什么。

1.11、方法的調(diào)用:

方法聲明過后,不會自動執(zhí)行,需要我們調(diào)用執(zhí)行,因為程序的入口是main,當執(zhí)行完main方法后程序就結(jié)束,所以方法的調(diào)用應該放在main方法中。

public static void main(String[] args) {//方法調(diào)用的格式是:方法名 (參數(shù)具體值)sum(100);sum(150);String st = getStr();System.out.println(st);System.out.println("結(jié)果是"+getAvg(1, 2,3));}
  • 方法調(diào)用的格式為 方法名(參數(shù)1,參數(shù)2....),調(diào)用的時候參數(shù)的值必須要和定義方法的時候參數(shù)的類型相同;
  • 在main方法中依次調(diào)用上述的4個方法;
  • 注意返回值的使用;

1.12、方法的重載

如果我們需要計算兩個數(shù)的和,我們可以計算兩個整數(shù),兩個小數(shù),一個整數(shù)一個小數(shù),按照上述方法我們需要定義三個求和方法,這就需要我們能夠分別記住三個方法名稱,這顯然不是很方便。

對于以上這種情況我們可以將這三個方法的方法名稱保持一致,只要保證參數(shù)類型、參數(shù)個數(shù)、參數(shù)順序這三者有一個不同,系統(tǒng)就不會將這三個方法當作同一個方法,這種形式叫做方法的重載。

  • 注意方法的重載跟修飾符、返回值、參數(shù)的名稱都沒有關(guān)系,只和方法名稱、參數(shù)類型、參數(shù)個數(shù)、參數(shù)順序有關(guān)系。
public static void main(String[] args) throws IOException { System.out.println(sum(1,1.2f)); //2 System.out.println(sum(1,2)); //3 System.out.println(sum(1,2,3)); //6 } public static int sum(int a, float b) { return (int)(a+b); } public static int sum(int a, int b){ return a+b; } public static int sum(int a, int b,int c){ return a+b+c; }

1.13、方法調(diào)用參數(shù)傳遞的內(nèi)存原理

舉例1

public static void main(String[] args) {int a = 100;testMethod(a);System.out.println(a);}public static void testMethod(int a){a = 101;}
  • 在main中定義的變量a的值是100調(diào)用testMethod(a);
  • 此時在內(nèi)存中testMethod壓棧執(zhí)行,并且將a的值作為參數(shù)賦值給方法參數(shù);
  • 在testMethod中修改參數(shù)a的值,此時的參數(shù)僅僅和main中定義的變量a的值相同,所以修改參數(shù)的值,并不會修改main中a的值。

舉例2

public static void main(String[] args) {int [] arr2 = {1,2,3};testMethod(arr2);System.out.println(arr2[0]); //100}public static void testMethod(int [] arr){arr[0] = 100;//arr = new int []{100,100};}
  • 在main中定義的引用類型arr2,初始化內(nèi)容是1,2,3;
  • 調(diào)用testMethod(int [] arr),此時在內(nèi)存中testMethod壓棧執(zhí)行,并且將arr2的引用的堆中的地址賦值給參數(shù)arr;
  • arr和arr2兩者只是對同一塊堆中的地址有引用;
  • 在testMethod中將引用類型arr[0] = 100,實質(zhì)是修改了堆中那個對象的內(nèi)容,所以arr2引用的那個堆中的內(nèi)容就發(fā)生了改變;
  • 如果讓arr引用新的堆中的內(nèi)存,并不會影響arr2的引用。

二、面向?qū)ο缶幊?/h1>
  • 面向?qū)ο蟪绦蛟O(shè)計(OOP Object OrientedProgramming)是當前主流的程序設(shè)計架構(gòu),使我們編程過程更符合人們的日常生活習慣;
  • 面向過程程序設(shè)計,簡稱opp,c語言就是面向過程的編程語言;
  • 面向過程思維方式中更多的體現(xiàn)的是執(zhí)行者(自己做事情),面向?qū)ο笾懈嗟捏w現(xiàn)是指揮者(指揮對象做事情)。

2.1、面向?qū)ο蟮娜筇匦?/strong>

封裝

  • 之前學習的方法,就是將某個功能寫成方法,編寫類的過程也是一種封裝;
  • 提高了代碼的復用性,便于調(diào)用者的使用,提高了安全性。

繼承(后續(xù)講)

多態(tài)(后續(xù)講)

2.2、類和對象

對某一類有相同特征的事物的抽象,例如建造房子時設(shè)計的模型;

對象

表示現(xiàn)實中該類事物的個體,就是類的具體實現(xiàn),例如已經(jīng)建造成的一個房子;

屬性

該類事物的共有的特征,實際就是我們之前所學習的變量,只不過和之前學過的變量稍有區(qū)別;

方法

該類事物共有的功能;

聲明類的格式

public class 類名 {//一個類可以有多個成員變量//數(shù)據(jù)類型 變量名稱;//數(shù)據(jù)類型 變量名稱;//一個類可以有多個方法 修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名稱....){ 執(zhí)行語句; }}
  • 創(chuàng)建對象的格式:類名 對象名 = new 類名();
  • 調(diào)用成員變量格式:對象名.成員變量,如果在當前類中可以直接寫成員變量名稱;
  • 調(diào)用方法的格式:對象名.方法名(具體的參數(shù)),如果在當前類中可以直接寫方法名;
  • 新建一個類,寫main方法。

三、成員變量和局部變量的分別

  • 定義的位置不同:成員變量定義在類中,局部變量定義在方法中
  • 內(nèi)存中存儲的位置不同:成員變量存儲在堆中,局部變量存儲在棧中
  • 生命周期不同:成員變量伴隨這對象的存在而存在,局部變量當方法出棧后就不能使用
  • 初始化不同:成員變量會隨著對象的創(chuàng)建進行默認初始化,局部變量如果不初始化就不能使用
  • 四、練習

    4.1、問題

    • 聲明一個類是People,兩個屬性一個是姓名,一個是年齡,有一個方法叫做eat,沒有參數(shù),方法輸出”吃飽就開心”
    • 思考如何調(diào)用?

    注意:我們程序的入口仍然是main,所以要想對成員變量賦值,以及調(diào)用方法,需要在main中寫具體的賦值和調(diào)用的代碼。

    public class People {//修飾符是private的話,就只能在當前類中進行使用//定義屬性private int age;private double height;private double weight;private String name;//設(shè)置set方法public void setAge(int age){if(age < 0){return;} //this表示當前對象,誰調(diào)用的setAge,this就是誰this.age = age;}public int getAge(){return age;}public void setHeight(double height){this.height = height;}public double getHeight(){return this.height;}public void setWeight(double weight){this.weight = weight;}public double getWeight(){return this.weight;}public void setName(String name){this.name = name;}public String getName(){return this.name;}//方法public void eat(){System.out.println("吃飽了很開心");//在非靜態(tài)方法中可以使用成員變量,因為方法需要對象調(diào)用,//而對象在創(chuàng)建愛你的時候就已經(jīng)將成員變量初始化//People pe = new People();//System.out.println(age);weight += 10;if (weight > 180){//做運動sport();}}public void sport(){weight -= 5;}}public class Test3 { public static void main(String[] args) { //創(chuàng)建對象,在堆中分配內(nèi)存并且給成員變量賦值默認值,基本類型為0,引用類型為null People pe = new People(); pe.setName("張三"); pe.setAge(-12); pe.setHeight(175); pe.setWeight(175); pe.eat(); System.out.println(pe.getAge()+"---"+pe.getHeight()+"----"+pe.getWeight()); People pe1 = new People(); pe1.setName("李四") ; pe1.eat(); }}

    4.2、調(diào)用過程的內(nèi)存分析

    調(diào)用過程的內(nèi)存分析

  • class被加載到內(nèi)存中的方法區(qū),所以在方法區(qū)中就有類的所有信息
  • main方法壓棧執(zhí)行
  • People對象在堆中創(chuàng)建,初始化成員變量age為0,height為0.0,weight為0.0
  • 棧中的pe引用堆中的People的內(nèi)存地址
  • 將堆中的People對象的age賦值為12,height賦值為175,weight為175
  • eat方法壓棧執(zhí)行,輸出”吃飽就開心”
  • eat方法出棧
  • main方法出棧,方法結(jié)束
    • 注意每次new對象,都會從堆內(nèi)存中創(chuàng)建新的對象

    總結(jié)

    以上是生活随笔為你收集整理的中如何直接使用方法返回的值_java基础-2-方法、面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。