導航:首頁 > 編程語言 > java靜態域

java靜態域

發布時間:2022-12-18 12:14:24

『壹』 在java中,為什麼靜態區域的方法不能調用非靜態區域的方法

理解起來很簡單,因為兩者的載入時機不同,靜態區的先載入,非靜態區的後載入。
具體說:
靜態區的方法,在虛擬機載入類文件(.class)的時候,就載入了,而非靜態區的方法,是直到有對象被new出來的時候才會載入。
也就是說,如果在非靜態區的方法載入之前就調用了它,顯然是無法調用到的。所以才會規定靜態方法中不能調用非靜態的。

『貳』 java 靜態常量載入時機問題

1.只有運行起來的程序才有內存一談,編譯只是把源代碼翻譯成位元組碼的過程,位元組碼是存放在硬碟上的文件,只有當位元組碼載入到JVM中即類被載入時,才有內存的概念,JVM才會為類中的靜態常量分配內存。
2.當類被載入時,其中的所有靜態域都會被分配內存,靜態方法會被裝載。

『叄』 java靜態方法(方法前冠以static)和實例方法(未冠以static)的區別

靜態方法(方法前冠以static)和實例方法(前面未冠以static)的區別

調用靜態方法或說類方法時,可以使用類名做前綴,也可以使用某一個具體的對象名;通常使用類名。
非static的方法是屬於某個對象的方法,而static的方法是屬於整個類的,不被任何一個對象單獨擁有;
由於static方法是屬於整個類的,所以它不能操縱和處理屬於某個對象的成員變數,而只能處理屬於整個類的成員變數,也即,static方法只能處理static域或靜態方法。實例方法可以訪問實例域, 靜態域或靜態方法, 記住都行。
聲明為static的方法有以下幾條限制: 1.它們僅能調用其他的static方法。
2.它們只能訪問static數據。
3.它們不能以任何方式引用this或super(關鍵 字super與繼承有關,在下一章中描述)。
static method Have No this Reference
All instance methods have a hidden parameter—this
So,

Static method can』t access instance methods and fields; it can only
invoke other static class
members.It can access class members only.
instance can use static method.
Instance methods:
If a method is declared without the static modifier keyword,
that method is known as an instance method. Instance methods
are associated with objects – not classes.
It can access either instance or class members.

本章源碼

class StaticExa {
static int a = 4;
static int b = 9;
static void call() {
System.out.println("a = " + a);//靜態方法可以訪問靜態屬性
}
}
public class Test {
static int c = 43;
public static void main(String args[]) {
/*剛運行到這一步時,debug觀察,StaticExa.a的值就等於42,Test.c的值就等於43,
說明系統在我們的程序一開始時,就會給所有的類變數賦值。如果是對象參考, 就是null,
見photoshop的例子*/

。。。。。。。。。。。。。。。。詳情網上找「馬克-to-win」,參考他的網站或他的網路空間:java第2章的內容

『肆』 JAVA 實例域和靜態域分別是什麼意思

實例域:故名意義需要實例如類後方可使用裡面的屬性、方法

靜態域:則不需要可以直接使後,更重的是靜態域可以作為系統緩存在不同類中使用,也可以理解全局的概念

『伍』 java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢

先說執行順序:我們在new一個對象時,如果類還沒載入,就需要先將類載入到內存,此時就會執行靜態代碼塊,在創建對象時,是先執行代碼塊,然後執行構造器。所以靜態代碼塊、代碼塊、構造器的執行順序是:靜態代碼塊→代碼塊→構造器。

再說作用:靜態代碼塊是用於初始化類的(在載入類時執行,只執行一次),代碼塊是用於初始化對象的(在創建對象時執行,每次創建對象時都執行),構造器是用於創建對象的。

『陸』 JAVA 靜態類寫法和調用

js?還是指JSP的腳本段。先看一般是如何顯示數據吧,最後在介紹js:
我們可以使用JSP頁面的腳本段,首先寫個Bean類:
public class SomeBean{
public String getName(){return "123";}
public void setName(String name){}
}
<!-- test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%
SomeBean bean=new SomeBean();
out.println("Bean-name is "+bean.getName());
%>
就是這樣,腳本段裡面的東西其實就是java代碼,而JSP頁面本質就是servlet。我不太清楚你是否了解JSP的編譯,如果你不知道的話我建議你到網路搜一下"JSP的java代碼"一類的東西看看,這是基礎。
你說的靜態類應該是指類中包含靜態域吧,除了內部類可以是靜態的外,別的類都不行。不論是靜態域還是普通域,用上面的腳本段都可以搞定。
再看看struts,靜態的顯示我放在後面了:
首先我們來寫一個Action類:
public class LoginAction{
public String execute(){
return SUCCESS;
}
public void setValue(SomeBean value){
this.value=value;
}
public SomeBean getValue(){
return this.value;
}
private SomeBean value;
}
再寫出Bean類:
public class SomeBean{
public String getName(){}
public void setName(String name){}
}
配置Action應該不用說了,沒什麼特別的,不會就上網查吧。
我們現在說方法。
方法一:
使用OGNL表達式。你可以使用struts自帶的標簽,他們都支持OGNL,比如s:property。舉個例子:
<!--test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="value.name"/>

你訪問LoginAction的時候s:property標簽就會顯示getValue().getName();
如果你想了解更多的struts2標簽和OGNL表達式建議去找更詳盡的資料。
方法二:
當然是使用JSP本身的性質了。通過request和session來獲取值。
我們把Action類改一下:
public class LoginAction{
public string execute(){
SomeBean value=new SomeBean();
value.setName("sfsfjsfje");
ActionContext context=ActionContext.getContext();
//往request里放attribute
context.put("value",value);
//往session里放
context.getSession().put("value",value);
return SUCCESS;
}
}
接下來我們改頁面:
<!-- test.jsp -->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%= ((SomeBean) request.getAttribute("value")).getName() %>
<%= ((SomeBean) session.get("value")).getName() %>

OGNL也可以顯示靜態域:
public class SomeBean{
public static String name="123";
public static String getAlias(){return "abc";}
}
public class LoginAction{
public String execute(){return SUCCESS;}
}
配置文件不寫了。
頁面:
<!--test.jsp-->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!--還是用s:property-->
<s:property value="@SomeBean@name"/>
<s:property value="@SomeBean@getAlias()"/>
當你訪問LoginAction時就會顯示SomeBean的name和getAlias()。不知道你是不是問的這個。

如果你要在js中調用數據也很容易:

<!-- test.jsp -->
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<script language="javascript" type="text/javascript">
var name="<s:property value="@SomeBean@name"/>";
</script>
這樣js中就有相應的數據了。

『柒』 java主函數public static void main(String args[])中static的作用是什麼

static關鍵字,告知編譯器main函數是一個靜態函數。也就是說main函數中的代碼是存儲在靜態存儲區的,即當定義了類以後這段代碼就已經存在了。如果main()方法沒有使用static修飾符,那麼編譯不會出錯,但是如果你試圖執行該程序將會報錯,提示main()方法不存在。因為包含main()的類並沒有實例化(即沒有這個類的對象),所以其main()方法也不會存。而使用static修飾符則表示該方法是靜態的,不需要實例化即可使用。

『捌』 java中兩個字元串的內存地址相同

String s1 = new String("I am a student"); 這里 你聲明了一個引用 s1\x0d\x0a指向的是 new String("I am a student"); 這個字元串\x0d\x0aString s4 = s1; 這里 你又聲明一個引用 指向s1的引用 也就是new String("I am a student"); \x0d\x0aif(s1 == s4) {\x0d\x0aSystem.out.println("這兩個字元串的內存位置相同");\x0d\x0a}\x0d\x0a上面還是相等的\x0d\x0a但是 s4 = s4.replace('a', 'A');\x0d\x0as4.replace('a', 'A'); 生成了另一個 字元串 你要知道 String 是final類型的 所以\x0d\x0a這個時候 即原來已經開辟了內存空間的 new String("I am a student"); 是不可能改變內容了的\x0d\x0a這個時候 s4.replace('a', 'A'); 就另開辟了一個內存空間\x0d\x0a 而這個時候 你的S4指向s4.replace('a', 'A'); 而原來的s1還是指向 new String("I am a student"); \x0d\x0a他們肯定不一樣的呢

『玖』 靜態域是什麼怎麼理解它呢

靜態成員變數可以脫離對象而存在,是類本身的屬性。所以對於任何對象來說,這個靜態成員都是存在的,類似對象間的全局屬性。

『拾』 Java棧和本地方法棧方法調用棧,這些都是什麼

JAVA內存裡面有一般有四個分類,堆, 棧(堆棧), 靜態域, 常量池

棧: 實際上是一個隊列, 遵循 FILO的原則(後進先出), 裡面儲存的是函數的參數值,局部變數,對象的引用(對象本身不在這里)等,因此在每調用一個函數時,堆棧都會分配一部分空間給它,函數返回時,被釋放
堆: 儲存靜態變數,全局變數 和 用new創建的東西,棧中的內存是動態內存,其中的內存在不使用時隨時可以被回收
靜態域:存放對象中static定義的成員
常量池:存放常量
根據以上解釋回答你的問題:
JAVA棧存的是函數的參數值,局部變數,對象的引用
方法調用棧? 沒有這說法吧, 方法的調用是存在棧中的
本地方法棧, 和JAVA中的棧一個作用, 只是這個棧是屬於本地的,不屬於JAVA虛擬機,但受JAVA虛擬機的控制,因為是JAVA虛擬機簡單地動態鏈接並直接調用指定的本地方法。可以把這看作是虛擬機利用本地方法來動態擴展自己
局部變數和對象引用存在 棧 中, 方法調用的棧幀也是在 棧 中
以上是我自己查資料+自己的理解,有錯望指出

閱讀全文

與java靜態域相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163