第14天学习Java的笔记(成员变量和局部变量)
一個對象的內存圖
package Demo1302;/** 定義一個類,用來模擬“手機”事物。** 屬性:品牌、價格、顏色* 行為:打電話、發短信** 對應到類中:* 成員變量(屬性):* String brand;//品牌* double price;//價格* String color;//顏色* 成員方法(行為):* public void call(String who) {};//打電話* public void sendMsg() {};//群發短信* */public class Phone {String brand;double price;String color;public void call(String who) {System.out.println("給" + who + "打電話");}public void sendMsg() {System.out.println("群發短信");} } package Demo1302;public class Demo01PhoneOne {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//給我打電話phone.sendMsg();//群發短信phone.brand = "華為";phone.color = "黑色";System.out.println(phone.brand);} }[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QuIqP9bS-1607570668634)(F:\Java\Learn\day14\day14.assets\image-20201210090818413.png)]
兩個對象使用同一個方法的內存圖
package Demo1302;public class Demo02PhoneTwo {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//給我打電話phone.sendMsg();//群發短信phone.brand = "華為";phone.color = "黑色";System.out.println(phone.brand);System.out.println("=======");Phone Phone2 = new Phone();System.out.println(Phone2.brand);//nullSystem.out.println(Phone2.color);//nullSystem.out.println(Phone2.price);//0.0Phone2.call("他");//給我打電話Phone2.sendMsg();//群發短信Phone2.brand = "三星";Phone2.color = "紅色";System.out.println(Phone2.brand);} }[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WnrInfj8-1607570668636)(F:\Java\Learn\day14\day14.assets\image-20201210092353628.png)]
兩個引用指向同一對象的內存圖
package Demo1302;public class Demo03PhoneThree {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//給我打電話phone.sendMsg();//群發短信phone.brand = "華為";phone.color = "黑色";System.out.println(phone.brand);System.out.println("=======");//將one當中保存的對象地址賦值給twoPhone Phone2 = phone;System.out.println(Phone2.brand);//華為System.out.println(Phone2.color);//黑色System.out.println(Phone2.price);//0.0Phone2.call("他");//給我打電話Phone2.sendMsg();//群發短信Phone2.brand = "三星";Phone2.color = "紅色";System.out.println(Phone2.brand);} }[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5vrRor0b-1607570668638)(F:\Java\Learn\day14\day14.assets\image-20201210093911877.png)]
使用對象類型作為方法的參數
package Demo1302;//使用對象類型作為方法的參數public class Demo04PhoneParam {public static void main(String[] args) {Phone phone = new Phone();phone.brand = "蘋果";phone.price = 2222.0;phone.color = "黑色";method(phone);//傳遞進去的參數其實就是地址值}public static void method(Phone param) {System.out.println(param.brand);System.out.println(param.price);System.out.println(param.color);} }[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8bmdKYOx-1607570668642)(F:\Java\Learn\day14\day14.assets\image-20201210101003053.png)]
使用對象類型作為方法的返回值
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7uTNY4L2-1607570668645)(F:\Java\Learn\day14\day14.assets\image-20201210105101133.png)]
package Demo1302;//使用對象類型作為方法的返回值 public class Demo05PhoneReturn {public static void main(String[] args) {Phone one = method();//注意要進行賦值調用System.out.println(one.color);System.out.println(one.price);System.out.println(one.brand);}public static Phone method() {Phone phone = new Phone();phone.brand = "小米";phone.color = "黑色";phone.price = 666.6;return phone;} }成員變量和局部變量的區別
package Demo1401; //成員變量和局部變量的區別/* * 1.定義的位置不一樣【重點】 * 局部變量:在方法的內部 * 成員變量:在方法的外部,直接寫在類中 * * 2.作用范圍不一樣【重點】 * 局部變量:只有方法當中才可以使用,出了方法就不能再用 * 成員變量:整個類都可通用 * * 3.默認值不一樣【重點】 * 局部變量:沒有默認值,如果要想使用,必須手動進行賦值 * 成員變量:如果沒有賦值,會有默認值,規則和數組一樣 * * 4.內存的位置不一樣(了解) * 局部變量:位于棧內存,跟著方法走 * 成員變量:位于堆內存,因為需要new一個變量 * * 5.生命周期不一樣(了解) * 局部變量:隨著方法進棧而誕生,隨著方法出棧而消失 * 成員變量:隨著對象創建而誕生,隨著對象被垃圾回收而消失 * */ public class Demo01VariableDifference {String name = "h";//成員變量int num2;public void methodA(int param) {//方法的參數為局部變量//參數在方法調用的時候,必然會被賦值的,因此不會報錯System.out.println(param);//不報錯int num = 20;//局部變量System.out.println(num);System.out.println(name);int num1;//System.out.println(num1);//沒賦值不能用System.out.println(num2);}public void methodB() {//System.out.println(num);System.out.println(name);System.out.println(num2);}}總結
以上是生活随笔為你收集整理的第14天学习Java的笔记(成员变量和局部变量)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第13天学习Java的笔记(类定义)
- 下一篇: 第15天学习Java的笔记(封装性,th