一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 淺析java 的 static 關鍵字用法

淺析java 的 static 關鍵字用法

2020-05-19 10:25jeyson JAVA教程

這篇文章主要介紹了淺析java 的 static 關鍵字用法的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

本篇淺析java中static的用法,主要五個方面:靜態成員變量,靜態方法,靜態塊,靜態內部類,靜態導包。

首先還是一張表格說一下靜態對象和非靜態對象的區別:

 

靜態對象 非靜態對象
歸屬 類共同具有 類的各個實例獨立擁有
內存分配 內存空間上固定的 附屬類分配
分配空間順序 優先分配靜態對象空間 優先分配靜態對象空間,初始化也一樣

 

1 靜態變量,靜態方法,靜態塊

靜態對象,靜態方法都是在原對象和方法上加上static關鍵字修飾,表示類可以直接調用這些,而不需要實例化后再調用。具有的好處是:

1--靜態對象的數據是全局唯一的,一改都改,可以保證數據的唯一性

2--引用方便,直接用類名.方法(屬性)就可以了,不用再get和set

當然靜態方法(變量,塊)也有相應的限制:

1--不能調用其他非靜態方法(只能調用static方法)

2--只能訪問static數據

3--不能以任何方式引用this或super

示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class StaticExercise {
public static String sky="jeyson";
public static String getMySky(String sky){
return sky;
}
static {
System.out.println("這是靜態塊中的內容--");
System.out.println("靜態塊:"+getMySky(sky));
}
/**
* ***靜態對象好處:
* 1--靜態對象的數據是全局唯一的,一改都改,可以保證數據唯一。
* 2--引用方便,直接類名.方法就行了,不用set和get
* ***分配空間順序:
* 先分配靜態對象空間再分配非靜態。初始化順序也是這樣
* ***static final 修飾的成員變量和成員方法可以理解為全局變量(java中沒有全局變量概念)
* ***靜態對象,方法,塊的限制:
* 1--只能調用其他的static方法
* 2--只能訪問static數據
* 3--不能以任何方式引用this或super
* 靜態對象測試
*/
@Test
public void testStatic1(){
System.out.println(sky);
System.out.println("-----------------");
System.out.println(getMySky(sky));
System.out.println("-----------------");
System.out.println(StaticTest.getSms());
}
}

2 靜態內部類

當一個類跟另一個類(外部類)有緊密的聯系,一般只有用到外部類的時候才會用該類的話,可以將該類作為靜態的內部類。這樣就可以隨著類的加載而直接產生。不用再可以實例化。

使用方法:隨類一同被加載,調用直接外部類.內部類.靜態對象(方法)

示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class StaticTest{
public static String sms="to my sky";
public static String getSms(){
return sms;
}
/**
* 靜態內部類
* ***使用場景:
* 內部類跟外部類聯系緊密,一般只有用到外部類的時候才會用到這個類
* ***使用
* 隨類一同被加載,直接外部類.內部類.靜態對象(方法)
*/
static class InnerStatic{
public static final String MYSKY="MY FINAL SKY";
}
}
@Test
public void testStatic2(){
System.out.println(StaticTest.InnerStatic.MYSKY);
}

2 靜態導包

如果要用的靜態方法所在的類跟當前類不在同一個包下,可以使用靜態導包。這樣你想要用的靜態方法或變量就相當于在該類中直接可見,無需再類名.靜態變量的方式調用。

使用方法:

import static 包名.類名.靜態成員變量(方法)

好處:

被導入的靜態變量和方法在該類中直接可見,直接用

壞處:

一定程度上降低了代碼的可讀性

代碼示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MyStaticImportTest {
public static final int number=55;
public static void getMyWords(){
System.out.println("hello ,這是一個靜態導包的測試");
}
}
 
import static com.generic.MyStaticImportTest.number;
import static com.generic.MyStaticImportTest.getMyWords;
/**
* @Description:
* 靜態
*/
public class StaticExercise {
/**
* 靜態導包
* ***使用方法:
* 直接靜態導入相應的變量和方法:(import static 包名.類名.靜態成員變量(方法)
* import static com.generic.MyStaticImportTest.number;
* import static com.generic.MyStaticImportTest.getMyWords;
* *** 好處:
* 被導入的靜態方法和變量在這個類中直接可見,無需再給出類名
* *** 壞處
* 一定程度上降低了代碼的可讀性
*/
@Test
public void testStatic3(){
//靜態導入后可以直接用
int myNumber=number;
getMyWords();
}
}

以上所述是小編給大家介紹的淺析java 的 static 關鍵字用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国模丰满美女冰漪34d | 国产精品视频一区二区三区不卡 | 欧美一区二区三区四区在线观看 | 91麻豆精东果冻天美传媒老狼 | 国产精品久久久久久久久免费观看 | 日韩在线视频免费观看 | 网址在线观看你懂我意思吧免费的 | 91制片厂官网 | 男人疯狂进女人下部视频动漫 | 日韩xx00 | 校花在公车上被内射好舒服 | 久久这里只有精品视频9 | 菠萝视频在线完整版 | 边摸边吃奶边做爽gif动态图 | 日产乱码2021永久手机版 | 99精品影院 | 精品国产乱码久久久久久人妻 | 久久精品观看影院2828 | 国产午夜精品久久理论片小说 | 8x8x丝袜美女 | 午夜福利理论片高清在线 | 婷婷综合七月激情啪啪 | 星空无限传媒xk8027穆娜 | 3d动漫免费| 日日爽| 啊好大好粗| 午夜福利自怕 | 国产成人精品一区二区不卡 | 成人性爱视频在线观看 | 91天堂视频 | 丝瓜茄子绿巨人秋葵榴莲污 | 日本免费三片在线观看 | 5g影院天天 | 久久久无码精品亚洲A片猫咪 | 亚洲欧美成人中文在线网站 | 18岁的老处女 | 日韩视频免费看 | 九九热免费在线观看 | 欧美操屁股 | 好大水好多好爽好硬好深视频 | 亚洲麻豆精品 |