中如何直接使用方法返回的值_java基础-2-方法、面向对象
一、方法
1.1、定義:方法可以認為我們寫程序中所要實現的某一個功能,方法中會包含很多條語句、流程控制、循環等,這些內容組合起來去處理一件事情。
1.2、方法的聲明:
方法的聲明位置必須寫在類中,并且方法的內部不能再去聲明另一個方法,一個類的方法與方法之間只能是并列關系,不能嵌套。
1.3、方法聲明的格式:
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2,......){ 執行語句 ……… return 返回值; }1.4、修飾符:
方法的修飾符比較多,有對訪問權限進行限定的,有靜態修飾符static,還有最終修飾符final等。
1.5、返回值類型:
用于限定方法返回值的數據類型,可以是我們學過的所有類型,包括基本類型和引用類型,但是有一個返回值只能作為方法的返回值類型就是void,如果一個方法沒有返回值要寫成void。
1.6、方法名:
按照標識符的規則和規范即可,我們可以自行定義。
1.7、參數類型:
用于限定調用方法時傳入參數的數據類型,可以是基本類型和引用類型。
1.7、參數名稱:
用于是一個變量,用于接收調用方法時傳入的數據,是我們自己定義的,如果多個參數需要使用”,”進行分隔,一個方法也可以沒有參數,如果沒有,參數()中可以不寫任何東西,參數的作用域是當前方法。
1.8、{}:
其中的內容叫做方法體,用來限定的方法區域。
1.9、return:
1. 有兩個作用:a. 表示結束方法、b. 返回該方法指定類型的值
2. 如果一個方法的返回值是void,在方法結束的時候可以不寫return,如果寫了return,就只代表方法結束,return后不能跟任何內容格式為 return;
3. 如果一個方法的返回值類型不是void,在方法結束的時候必須要寫return,return后要寫對應
方法返回值類型的數據格式為 return 對應返回值類型的數據。
1.10、返回值:
被return語句返回的值,該值會返回給調用者,就代表執行過本方法后的結果是什么。
1.11、方法的調用:
方法聲明過后,不會自動執行,需要我們調用執行,因為程序的入口是main,當執行完main方法后程序就結束,所以方法的調用應該放在main方法中。
public static void main(String[] args) {//方法調用的格式是:方法名 (參數具體值)sum(100);sum(150);String st = getStr();System.out.println(st);System.out.println("結果是"+getAvg(1, 2,3));}- 方法調用的格式為 方法名(參數1,參數2....),調用的時候參數的值必須要和定義方法的時候參數的類型相同;
- 在main方法中依次調用上述的4個方法;
- 注意返回值的使用;
1.12、方法的重載
如果我們需要計算兩個數的和,我們可以計算兩個整數,兩個小數,一個整數一個小數,按照上述方法我們需要定義三個求和方法,這就需要我們能夠分別記住三個方法名稱,這顯然不是很方便。
對于以上這種情況我們可以將這三個方法的方法名稱保持一致,只要保證參數類型、參數個數、參數順序這三者有一個不同,系統就不會將這三個方法當作同一個方法,這種形式叫做方法的重載。
- 注意方法的重載跟修飾符、返回值、參數的名稱都沒有關系,只和方法名稱、參數類型、參數個數、參數順序有關系。
1.13、方法調用參數傳遞的內存原理
舉例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調用testMethod(a);
- 此時在內存中testMethod壓棧執行,并且將a的值作為參數賦值給方法參數;
- 在testMethod中修改參數a的值,此時的參數僅僅和main中定義的變量a的值相同,所以修改參數的值,并不會修改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,初始化內容是1,2,3;
- 調用testMethod(int [] arr),此時在內存中testMethod壓棧執行,并且將arr2的引用的堆中的地址賦值給參數arr;
- arr和arr2兩者只是對同一塊堆中的地址有引用;
- 在testMethod中將引用類型arr[0] = 100,實質是修改了堆中那個對象的內容,所以arr2引用的那個堆中的內容就發生了改變;
- 如果讓arr引用新的堆中的內存,并不會影響arr2的引用。
二、面向對象編程
- 面向對象程序設計(OOP Object OrientedProgramming)是當前主流的程序設計架構,使我們編程過程更符合人們的日常生活習慣;
- 面向過程程序設計,簡稱opp,c語言就是面向過程的編程語言;
- 面向過程思維方式中更多的體現的是執行者(自己做事情),面向對象中更多的體現是指揮者(指揮對象做事情)。
2.1、面向對象的三大特性
封裝
- 之前學習的方法,就是將某個功能寫成方法,編寫類的過程也是一種封裝;
- 提高了代碼的復用性,便于調用者的使用,提高了安全性。
繼承(后續講)
多態(后續講)
2.2、類和對象
類
對某一類有相同特征的事物的抽象,例如建造房子時設計的模型;
對象
表示現實中該類事物的個體,就是類的具體實現,例如已經建造成的一個房子;
屬性
該類事物的共有的特征,實際就是我們之前所學習的變量,只不過和之前學過的變量稍有區別;
方法
該類事物共有的功能;
聲明類的格式
public class 類名 {//一個類可以有多個成員變量//數據類型 變量名稱;//數據類型 變量名稱;//一個類可以有多個方法 修飾符 返回值類型 方法名(參數類型 參數名稱....){ 執行語句; }}- 創建對象的格式:類名 對象名 = new 類名();
- 調用成員變量格式:對象名.成員變量,如果在當前類中可以直接寫成員變量名稱;
- 調用方法的格式:對象名.方法名(具體的參數),如果在當前類中可以直接寫方法名;
- 新建一個類,寫main方法。
三、成員變量和局部變量的分別
四、練習
4.1、問題
- 聲明一個類是People,兩個屬性一個是姓名,一個是年齡,有一個方法叫做eat,沒有參數,方法輸出”吃飽就開心”
- 思考如何調用?
注意:我們程序的入口仍然是main,所以要想對成員變量賦值,以及調用方法,需要在main中寫具體的賦值和調用的代碼。
public class People {//修飾符是private的話,就只能在當前類中進行使用//定義屬性private int age;private double height;private double weight;private String name;//設置set方法public void setAge(int age){if(age < 0){return;} //this表示當前對象,誰調用的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("吃飽了很開心");//在非靜態方法中可以使用成員變量,因為方法需要對象調用,//而對象在創建愛你的時候就已經將成員變量初始化//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) { //創建對象,在堆中分配內存并且給成員變量賦值默認值,基本類型為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、調用過程的內存分析
調用過程的內存分析
- 注意每次new對象,都會從堆內存中創建新的對象
總結
以上是生活随笔為你收集整理的中如何直接使用方法返回的值_java基础-2-方法、面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu python3.6_在 U
- 下一篇: 判断变量是空_关于“情境中的随机变量”的