java中static詳解

這個博主寫的總結很好,這里附上鏈接http://www.cnblogs.com/dolphin0520/p/3799052.html

下面進行簡要總結:

在《Java編程思想》P86頁有這樣一段話:

“static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途。”

方便在沒有創建對象的情況下來進行調用(方法/變量)

1.被static關鍵字修飾的方法或者變量不需要依賴于對象來進行訪問,只要類被加載了,就可以通過類名去進行訪問。

2.static是不允許用來修飾局部變量

3.靜態成員變量雖然獨立于對象,但是不代表不可以通過對象去訪問,所有的靜態方法和靜態變量都可以通過對象訪問(只要訪問權限足夠)。

4.Java中的static關鍵字不會影響到變量或者方法的作用域

5.static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

6.static塊可以用來優化程序性能,是因為它的特性:只會在類加載的時候執行一次

7.static方法一般稱作靜態方法,由于靜態方法不依賴于任何對象就可以進行訪問,因此對于靜態方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。

?

?

下面是考題參考:

public class Test extends Base{static{System.out.println("test static");}public Test(){System.out.println("test constructor");}public static void main(String[] args) {new Test();}
}class Base{static{System.out.println("base static");}public Base(){System.out.println("base constructor");}
}

輸出

base static
test static
base constructor
test constructor
View Code

?

轉載于:https://www.cnblogs.com/zoulingjin/p/8634076.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250724.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250724.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP 實現中文截取無亂碼的方法

PHP 實現中文截取無亂碼的方法 需知: 中文字符在gbk編碼下為2個字符,utf-8下為3個字符中文字符的ASCII值是從0xa0后開始的通過ord()函數可以返回字符串中第一個字符的ASCII值,chr()函數作用相反 方法: function GBsubstr($str…

vue --- 全局注冊子組件,并導入全局的子組件

假設: 需要一個評論的模塊comment由于comment在多個頁面中可能會復用.于是創建一個comment.vue 步驟: 創建comment.vue在需要引用的位置使import comment from ../subcomponent/Comment.vue 導入子組件在Vue實例中使用components屬性注冊注冊的規則: “comment-box” : comm…

7. 反轉整數

7. 反轉整數 描述 給定一個 32 位有符號整數,將整數中的數字進行反轉。 示例 示例 1: 輸入: 123 輸出: 321 示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21 注意: 假設我們的環境只能存儲 32 位有符號整數,其數值范圍是 [?2^31, 2^31 ? 1]…

Laravel框架中的路由和控制器

路由 簡介: 將用戶的請求轉發給相應的程序進行處理作用:建立url和程序之間的映射請求類型:get、post、put、patch、delete目錄:app/http/routes.php基本路由:接收單種請求類型 //get請求 Route::get(hello1,function(…

小朋友學C++(1)

Hello World! 在學C之前&#xff0c;最好先學習一下C語言 讓我們先運行一段簡單的代碼&#xff0c;編譯器可以使用 在線C編譯器 或 Xcode(蘋果系統) 或Dev C&#xff08;Windows系統&#xff09;。 #include <iostream> using namespace std; int main() { cout <<…

mysql_表_操作

1、創建表 # 基本語法&#xff1a; create table 表名(列名 類型 是否可以為空 默認值 自增 主鍵&#xff0c;列名 類型 是否可以為空 )ENGINEInnoDB DEFAULT CHARSETutf8not null # 不可以為空 default 1 # 默認值為1 auto_increment # 自增 primary …

css --- 手機端,留言模塊的樣式

效果如下: 代碼: 說明:用到了mint-ui,需要先安裝mt-button的導入: import { Button } from ‘mint-ui’mt-button的使用: Vue.component(Button.name, Button)更多 http://mint-ui.github.io/ // comment.vue <template><div class"comment-container">…

Laravel 中的 視圖和模型

視圖 簡介&#xff1a;視圖包含了應用程序渲染的HTML數據&#xff0c;并將應用程序的顯示邏輯與控制邏輯有效的分離開。在Laravel中&#xff0c;視圖被保存在resources/views目錄中。 php //數組中的內容可以表示在視圖中調用數組&#xff0c;可以用echo $name得到name的值 …

BCZM : 1.13

Nim轉載于:https://www.cnblogs.com/noryes/p/8640630.html

yii多表查詢--學習隨筆

今天自己做一個小demo&#xff0c;為了不要冗余字段&#xff0c;需要進行多表聯合查詢、搜索 yii中&#xff0c;用model來映射數據庫&#xff08;其實好多框架都是這么搞的&#xff09;&#xff0c;一個模型類通常有一個search模型類跟著一起 廢話不多說了&#xff0c;首先&…

node --- 創建一個Socket服務器

流程: 會開發一個監聽文件改變的應用然后客戶端使用命令行工具(telnet)連接服務端服務端在監聽到文件變化后,會發送數據給客戶端 監聽文件變化 node 的fs模塊:watch方法用于監聽文件的變化,可以在內存分配一個區域,來專門用于監聽文件變化,并執行該區域內指定的回調函數 //…

Laravel中數據庫的操作

查找數據庫的三種方式 DB facade(原始查找)查詢構造Eloquent ORM新建數據表 //示例表 create table if not exits student( ‘id’ int auto_increment primaary key, ‘name’ varchar(255) not null default “”comment’姓名’, ‘age’ tinyint usigned not null defa…

node --- 創建一個Socket客戶端連接到服務器

描述: net.createrServer().listen(60300) 監聽客戶端訪問net.connect({ port: 60300 }) 訪問服務器 服務器: 一個很簡單的監聽文件改變的服務器每當監聽的文件改變了,將信息通過json的格式傳遞給連接到的客戶端 connection.write // 01、net-watcher.js use strict const …

Laravel中的Blade模版

Blade模版簡介 Blade模版的好處&#xff1a; 模版繼承&#xff08;template inheritance&#xff09;視圖片段&#xff08;sections&#xff09;部分指令&#xff1a; extend(‘xxx’)為子頁面指定所繼承的頁面布局模版section(‘xxx’)為子頁面提供所繼承的頁面中指定的部分…

三元表達式,列表解析和生成器表達式

三元表達式 在以前&#xff0c;在諸如比較兩個數大小的時候&#xff0c;通常的寫法都是下面的樣子 if x > y:print("the max is x") else:print("the max is y") 三元表達式的語法為&#xff1a; True if expression else False 現在可以個體三元表達式…

Mysql 如何設置字段自動獲取當前時間,附帶添加字段和修改字段的例子

--添加CreateTime 設置默認時間 CURRENT_TIMESTAMP ALTER TABLE table_nameADD COLUMN CreateTime datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT 創建時間 ; --修改CreateTime 設置默認時間 CURRENT_TIMESTAMP ALTER TABLE table_nameMODIFY COLUMN CreateTime datetim…

css --- 圣杯布局

圣杯布局 左右固定寬度,中間自適應div:nth-child(1) section {display: flex;width: 60%;height: 150px;background-color: pink;margin: 0 auto; }section div:nth-child(1) {width: 100px;height: 150px;background-color: red; }section div:nth-child(2) {flex: 1;backgr…

FZU OJ:2230 翻翻棋

Problem 2230 翻翻棋Accept: 872 Submit: 2132Time Limit: 1000 mSec Memory Limit : 32768 KBProblem Description象棋翻翻棋&#xff08;暗棋&#xff09;中雙方在4*8的格子中交戰&#xff0c;有時候最后會只剩下帥和將。根據暗棋的規則&#xff0c;棋子只能上下左右移…

關于字符串比較時候出現的空指針問題的坑

比如說&#xff1a;String Tname driver.getTrueName(&#xff09;; 這個變量是從driver對象中取出的&#xff0c;但是你不知道這個值是空值null&#xff1b; 這個時候如果你這么寫&#xff1a;Tname.equals("張三") 這個時候就會報空指針異常的 修改&#xff1a…

PHP 實現快速排序

首先了解快速排序的原理&#xff1a; 1、先取一個基值&#xff0c;用于每次的標準定位。 2、遍歷數組&#xff0c;將大于基值的放到右邊數組&#xff0c;小于的放到左邊數組 3、將每次的左右數組和基值一起合并 代碼實現&#xff1a; //快速排序 function quick_sort($arr…