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