㈠ java里找變數來源
一、局部變數存儲在方法棧中
在方法中聲明的變數,即該變數是局部變數,每當程序調用方法時,系統都會為該方法建立一個方法棧,其所在方法中聲明的變數就放在方法棧中,當方法結束系統會釋放方法棧,其對應在該方法中聲明的變數隨著棧的銷毀而結束,這就局部變數只能在方法中有效的原因。在方法中聲明的變數可以是基本類型的變數,也可以是引用類型的變數。
(1)當聲明是基本類型的變數的時,其變數名及值(變數名及值是兩個概念)是放在JAVA虛擬機棧中
(2)當聲明的是引用變數時,所聲明的變數(該變數實際上是在方法中存儲的是內存地址值)是放在JAVA虛擬機的棧中,該變數所指向的對象是放在堆類存中的。
二、全局變數存儲在堆中
在類中聲明的變數是成員變數,也叫全局變數,放在堆中的(因為全局變數不會隨著某個方法執行結束而銷毀)。同樣在類中聲明的變數即可是基本類型的變數 也可是引用類型的變數
(1)當聲明的是基本類型的變數其變數名及其值放在堆內存中的
(2)引用類型時,其聲明的變數仍然會存儲一個內存地址值,該內存地址值指向所引用的對象。引用變數名和對應的對象仍然存儲在相應的堆中
㈡ 基本數據類型與擴展數據類型區別是什麼
一、基本數據類型
1.基本數據類型只有8種,可按照如下分類:
整數類型:long、int、short、byte;
浮點類型:float、double:
字元類型:char,因為Java在內存中總是使用Unicode表示字元,所以,一個英文字元和一個中文字元都用一個char類型表示,它們都佔用兩個位元組;
布爾類型:boolean。
2.引用數據類型非常多,大致包括:
類、介面、數組、枚舉、註解、字元串等…
例如,String類型就是引用類型。
二、基本數據類型與引用數據類型的區別
1.基本變數類型:
在方法中定義的非全局基本數據類型變數的具體內容是存儲在棧中的。
在方法中定義的非全局基本數據類型變數,調用方法時作為參數是按數值傳遞的
默認值:0
2.引用類型變數:
只要是引用數據類型變數,其具體內容都是存放在堆中的,而棧中存放的是其具體內容所在內存的地址。
引用數據類型變數,調用方法時作為參數是按引用傳遞的,傳遞的是引用的副本
默認值:null
————————————————
版權聲明:本文為CSDN博主「一路向前-執著」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_40228534/article/details/123950132
java
手游安卓版
精選推薦
廣告
基本數據類型和引用數據類型的區別
7077閱讀·0評論·8點贊
2022年6月14日
引用數據類型_Java基礎數據類型和引用類型的區別
298閱讀·0評論·2點贊
2020年12月4日
JavaScript中基本數據類型和引用數據類型的區別
351閱讀·1評論·2點贊
2018年11月7日
基本數據類和引用數據類型
6.0W閱讀·12評論·115點贊
2020年12月30日
引用數據類型
7364閱讀·0評論·3點贊
2021年8月9日
JAVA中的值傳遞和引用傳遞
164閱讀·0評論·0點贊
2020年3月29日
這才是我想要的播放器,你用過了么?
精選推薦
廣告
int的引用類型是Integer,char的引用類型是?
1978閱讀·0評論·3點贊
2019年5月5日
理解Java中的引用傳遞和值傳遞
397閱讀·0評論·3點贊
2016年4月1日
基本數據類型&引用數據類型
428閱讀·0評論·0點贊
2018年2月7日
Java中基本數據類型和引用數據類型的區別
259閱讀·0評論·0點贊
2020年9月13日
常見數據類型(哪些是基本,哪些是引用,你知道這兩種有什麼區別嗎)
976閱讀·3評論·1點贊
2021年10月3日
Java的基本數據類型和引用類型都有哪些?
2727閱讀·0評論·0點贊
2022年6月10日
基本數據類型 和 引用類型(簡單概述)
2395閱讀·0評論·1點贊
2020年5月5日
去首頁
看看更多熱門內容
㈢ java中變數方法在內存空間怎麼分配的
Java的內存使用可以分為棧和堆,引用和基本變數是放在棧上,對象是放在堆上。比如用new創建一個對象會得到一個該對象的引用,這個引用存放在棧內存,指向堆中的實際位置。
㈣ 在java里一個方法內部定義的變數比如說方法的參數還有方法體內定義的變數是不是放在棧內存中
是的,在棧中。如果是類成員變數放在堆中
㈤ 每日一問(十三)棧,堆,方法區分別存放哪些變數
堆區:
1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令)
2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身 。
棧區:
1.每個線程包含一個棧區,棧中只保存基礎數據類型的值和對象以及基礎數據的引用
2.每個棧中的數據(基礎數據類型和對象引用)都是私有的,其他棧不能訪問。
3.棧分為3個部分:基本類型變數區、執行環境上下文、操作指令區(存放操作指令)。
方法區:
1.又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變數。
2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變數。
㈥ 在Java JVM里,如果一個變數被聲明為final或者static, 那麼這個變數的引用以及它的值被存放在哪
static不能用在方法裡面,只能修飾類的屬性或者方法。
static修飾的變數被放在方法區,因為它屬於類變數,是類的一部分。
所有的方法中的普通變數都是在棧中的局部變數表中的,如果是引用類型的變數局部變數表會存放引用對象的地址,這個引用對象實際存儲在堆中。如果被final修飾的話代表這個引用類型的變數指向的地址無法被改變。所以final修飾的引用的地址和final修飾的基本數據類型都會放在常量池,常量池位於方法區中。
㈦ java 基本數據類型 變數賦的值,儲存在計算機的哪裡啊 eg: int i=0; 0儲存在哪裡啊 是在棧中堆
0是在棧中的。
java中八大基本類型都是值傳遞的,比如
public class Test1 {
public static void main(String[] args) {
int i=1;
add(i);
System.out.println(i);
}
public static void add(int i){
i++;
}
}
運行結果為1
值傳遞確實是將值復制給方法中的局部變數
比起這個以後肯定會碰到String的值傳遞,因為String類型一旦創建就無法改變,是final類,所以雖然String是引用類型,但傳值規律是和基本類型一樣的。
㈧ Java中,main方法中的變數是局部變數,還是靜態變數。
局部變數在方法中或者方法內,main方法也是方法只不過他是一個程序的入口而已
成員變數在方法外
靜態變數是由static修飾的
㈨ java中的變數有哪幾種
成員變數:就是聲明為類的屬性的變數。
靜態變數(也叫做類變數):就是聲明為靜態屬性的變數。
局部變數:就是方法裡面聲明的變數。
volatile變數:和多線程相關,用於簡化同步的變數
transient變數:用於使該變數不會被持久化
final變數:基本上就是常量
還有
8中 基本變數
整型變數:byte, short, int, long
實型變數:float, double
字元變數 char
布爾型變數 boolean
㈩ java非靜態成員變數中的基本變數到底存在哪裡
其實我覺得書上就想說:基本數據類型創建的值存在棧內存中,引用數據類型的值存在堆內存中,
配合上圖詳解:基本數據類型 int i=3;就是在棧內存中開個房子給 i,名字叫 i , 裡面住著 3 。而 引用數據類型 String str="abc" 就是棧內存給它開後院,叫 str 去 堆內存地址為 0x2253的地方去住,所以引用類型的值存在 堆內存中,而棧內存中存的是它住的房號,也就是值所在的堆內存地址。
這樣說不知道你能不能理解。但我想說:圖自己畫的,文字自己敲的,如果有錯,請尊重回答者。