日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的System.out.println到底是什么,而且Java源码中System.java的out是null,为什么可以调用println方法?

發(fā)布時間:2025/3/19 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的System.out.println到底是什么,而且Java源码中System.java的out是null,为什么可以调用println方法? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在我們接觸Java第一個程序時,我們使用了public class和public static void main(String[]) args)以及System.out.println("Hello World")代碼,至于public class和public static void main(String[] args)的解釋,可以參考另一篇文章主類及main方法,要仔細(xì)研究該問題,請在有一定語法基礎(chǔ)再細(xì)看。

1. System和out

首先,System是java.lang包中的一個類,該類中定義了一個PrintStream類型的常量out,并且賦值為null,如下圖。

2. println()

3. 模擬System.out.println()形式

4. static問題

雖然我們實現(xiàn)了System.out.println類似形式方法,也可以打印輸出,實現(xiàn)類似的功能。但是我們定義的printlnTest是static修飾的靜態(tài)方法,static方法可以不用對象,直接調(diào)用。假如我們?nèi)サ魀rintlnTest前修飾的static修飾符,那么輸出結(jié)果會怎樣呢?

5. 最終原因?

如果System.out是null的話,最后肯定是沒法調(diào)用PrintStream非靜態(tài)方法的,而且out是public static final修飾,在賦值null后是沒法修改和賦值的,所以out肯定是在哪里有設(shè)置。不知道你是否有了解過Java里native標(biāo)識符修飾的方法,native修飾的方法說明方法實現(xiàn)部分不在當(dāng)前文件在,而是調(diào)用C++的動態(tài)鏈接庫,因為Java的底層使用C++編寫的,所以在底層與系統(tǒng)硬件打交道時,虛擬機(jī)JVM通過C++的動態(tài)鏈接庫來實現(xiàn)和操作系統(tǒng)的交互。而且System類的頂部有靜態(tài)代碼塊,靜態(tài)代碼塊中有registerNative()方法,而且該靜態(tài)代碼塊會在程序加載時執(zhí)行,所以系統(tǒng)會在程序運行前先對out進(jìn)行操作,實際上out不再等于null。

?

總結(jié)

以上是生活随笔為你收集整理的Java中的System.out.println到底是什么,而且Java源码中System.java的out是null,为什么可以调用println方法?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。