深入了解Java中成員變量與局部變量的使用與區(qū)別
一、成員變量和局部變量的區(qū)別
類中位置不同:成員變量(類中方法外)局部變量(方法內(nèi)部或方法聲明上)
內(nèi)存中位置不同:成員變量(堆內(nèi)存)局部變量(棧內(nèi)存)
生命周期不同:成員變量(隨著對象的存在而存在,隨著對象的消失而消失)局部變量(隨著方法的調(diào)用而存在,醉著方法的調(diào)用完畢而消失)
初始化值不同:成員變量(有默認(rèn)初始化值)局部變量(沒有默認(rèn)初始化值,必須先定義,賦值才能使用)
二、封裝
1.、封裝概述,是面向?qū)ο笕筇卣髦唬ǚ庋b,繼承,多態(tài)) 是面向?qū)ο缶幊陶Z言對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內(nèi)部的,外界是無法直接操作的
2.、封裝原則,將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問 成員變量private,提供對應(yīng)的getXxx()/setXxx()方法
3.、封裝好處,通過方法來控制成員變量的操作,提高了代碼的安全性把代碼用方法進行封裝,提高了代碼的復(fù)用性
private關(guān)鍵字
private是一個修飾符,可以用來修飾成員(成員變量,成員方法)
被private修飾的成員,只能在本類進行訪問,針對private修飾的成員變量,如果需要被其他類使用,提供相應(yīng)的操作
提供“get變量名()”方法,用于獲取成員變量的值,方法用public修飾
提供“set變量名(參數(shù))”方法,用于設(shè)置成員變量的值,方法用public修飾
示例代碼:
/* 學(xué)生類 */ class Student { //成員變量 String name; private int age; //提供get/set方法 public void setAge(int a) { if(a<0 || a>120) { System.out.println("你給的年齡有誤"); } else { age = a; } } public int getAge() { return age; } //成員方法 public void show() { System.out.println(name + "," + age); } } /* 學(xué)生測試類 */ public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); //給成員變量賦值 s.name = "小明"; s.setAge(22); //調(diào)用show方法 s.show(); } }
private的使用
需求:定義標(biāo)準(zhǔn)的學(xué)生類,要求name和age使用private修飾,并提供set和get方法以及便于顯示數(shù)據(jù)的show方法,測試類中創(chuàng)建對象并使用,要求控制臺輸出 小李,22
代碼:
/* 學(xué)生類 */ class Student { //成員變量 private String name; private int age; //get/set方法 public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } public void show() { System.out.println(name + "," + age); } } /* 學(xué)生測試類 */ public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); //使用set方法給成員變量賦值 s.setName("小李"); s.setAge(22); s.show(); //使用get方法獲取成員變量的值 System.out.println(s.getName() + "---" + s.getAge()); System.out.println(s.getName() + "," + s.getAge()); } }
this關(guān)鍵字
this修飾的變量用于指代成員變量,其主要作用是(區(qū)分局部變量和成員變量的重名問題)
方法的形參如果與成員變量同名,不帶this修飾的變量指的是形參,而不是成員變量
方法的形參沒有與成員變量同名,不帶this修飾的變量指的是成員變量
public class Student { private String name; private int age; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void show() { System.out.println(name + "," + age); } }
注意:this代表當(dāng)前調(diào)用方法的引用,哪個對象調(diào)用的方法,this就代表哪一個對象
到此這篇關(guān)于深入了解Java中成員變量與局部變量的使用與區(qū)別的文章就介紹到這了,更多相關(guān)Java成員變量 局部變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot項目中實現(xiàn)訪問druid內(nèi)置監(jiān)控頁面
這篇文章主要介紹了springboot項目中實現(xiàn)訪問druid內(nèi)置監(jiān)控頁面的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Java編程小實例—數(shù)字時鐘的實現(xiàn)代碼示例
正所謂拳不離手曲不離口,java學(xué)習(xí)的過程中,練習(xí)還是要多一點比較好。接下來分享給大家一個Java編程的小實例,供朋友們參考。2017-10-10Java中將字符串String轉(zhuǎn)換為整數(shù)int的多種方法
在Java中將String類型轉(zhuǎn)換為int類型是一個常見的操作,下面這篇文章主要給大家介紹了關(guān)于Java中將字符串String轉(zhuǎn)換為整數(shù)int的多種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07spring?boot只需兩步優(yōu)雅整合activiti示例解析
這篇文章主要主要來教大家spring?boot優(yōu)雅整合activiti只需兩步就可完成測操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步2022-03-03SpringBoot與Spring中數(shù)據(jù)緩存Cache超詳細講解
我們知道內(nèi)存讀取速度遠大于硬盤讀取速度,當(dāng)需要重復(fù)獲取相同數(shù)據(jù)時,一次一次的請求數(shù)據(jù)庫或者遠程服務(wù),導(dǎo)致在數(shù)據(jù)庫查詢或者遠程方法調(diào)用上小號大量的時間,最終導(dǎo)致程序性能降低,這就是數(shù)據(jù)緩存要解決的問題,學(xué)過計算機組成原理或者操作系統(tǒng)的同學(xué)們應(yīng)該比較熟悉2022-10-10SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程圖解
這篇文章主要介紹了SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07基于Transactional事務(wù)的使用以及注意說明
這篇文章主要介紹了Transactional事務(wù)的使用以及注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07