java中包名不能以java開頭

2020-12-08 小神逆襲風瀟雲灑

java中自己寫的類的包名為什麼不能以java開頭?

這是因為jvm在加載類的時候,連接階段,會做安全校驗,包名startsWith("java.")在運行期會報錯。具體是在ClassLoader.java中的preDefineClass方法:

if ((name != null) && name.startsWith("java.")) {

throw new SecurityException

("Prohibited package name: " +

name.substring(0, name.lastIndexOf('.')));

}

當然,如果你寫一個與java自帶的類一樣的包名以java開頭的類,是不會報錯的,如java.lang.Object,但是,加載的是java自帶的Object,也就是說,你自己寫的Object其實並沒有卵用。

當然,你寫一個包名是javax開頭的類,運行也是不會報錯的。

但是,根據java包名命名規範呢,我們一般是不會取與java自帶的類的包名一樣的包名的。

聰明的你,明白了嗎

相關焦點

  • java之小小的基礎知識點
    新建一個包名 新建一個java類 包的命民 :域名的反向 www.百度.com com.百度.www3.編寫內容4.在類中的空白處 右擊運行java 選擇run as java application詳情請參考:
  • Java中各類標識符的命名規則
    經常在網上看到一些代碼對標識符的命名都不大規範,這次特地整理一下java中各類標識符的命名規則,希望對大家有所幫助。一、標識符命名規則1、標識符用作給變量、方法和類命名。2、以字母、下劃線「_」和「$」符開頭,後面可跟字母、下劃線「_」和「$」符或數字。3、大小寫敏感。4、應該使用有意義的名稱,達到見名知意的目的,並且長度無限制。5、儘量不要使用中文。
  • 詳解Java中包(package)的概念,新手也能看懂,內含實例
    還有個方法,就是放在不同文件夾中,是不是?那java項目中也是可以分不同文件夾的。只不過java中類的文件夾不叫文件夾,叫「包名」英文單詞:package,那package還有個意思就是打包的意思,所以你可以理解為這個文件夾,就是打了一個包裹,就跟快遞包裹似的,你買了好多東西,不同商家是不同的包裹,每個包裹放的東西是不同類別的。
  • Java重要的基礎概念,一定要牢牢記住
    java中把它稱為關鍵字。在java語言中已經被賦予特定意義的一些單詞。關鍵字不能被用作標識符。例如:古代貧民的名字不能和皇帝的名諱相同,相同就要殺頭的哦。下面的關鍵字很多,對於初學者這麼多怎麼記啊,根本不用記,後面這些內容,我們要寫數百遍,數千遍,甚至有些我都寫了數萬遍了。你還用死記嗎?
  • Java程序的編碼規範
    > Class 的命名Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成。> Class 變量的命名變量的名字必須用一個小寫字母開頭。後面的單詞用大寫字母開頭。) 文件都必須遵守如下的樣式規則:> 版權資訊版權資訊必須在java文件的開頭,比如:
  • Java面向對象之final、abstract抽象、和變量生命周期
    其語法格式如下:package 包名.子包名.子包名;必須把package語句作為Java文件中的第一行代碼,在所有代碼之前。Hello.java如果此時Hello.java文件中沒有使用package語句,表示在當前目錄中生成字節碼文件。運行時也不需要考慮包名。如果此時Hello.java文件中使用了package語句,此時表示在當前目錄中先生成包名目錄,再在包名目錄中生成字節碼文件。
  • C++、java 和 C 的區別
    一、基礎類型c++:** java:** C#:1.以java為準,c++裡面的int short long 像這樣的整型 一般都有unsigned 和signed2.java和c#裡面都有字符串型 和byte型, 但c++裡面沒有,但它是以另外的形式存儲這類型的數據的,比如 java和c#裡面的 byte其實就是unsigned char類型;c++中字符數組就能存儲字符串 (char a[]={"hello"}; ps:注意c++裡面定義數組 變量必須在中括號前面)。
  • 跟我學java編程—理解Java包的概念
    同一個包中類名字是不同的,不同包中類的名字可以相同,當同時調用兩個不同包中相同類名的類時,應該加上包名加以區別。因此,包可以避免名字衝突。JDK中定義的類就採用了「包」機制進行層次式管理。例如,下圖顯示了其組織結構的一部分。
  • cmd命令行 編譯Java 文件
    如下圖所示:二、帶有包的文件編譯,如工程下的某個Java 文件【注1】由於Java 文件中有package xxx,即包的信息,因此在執行編譯後的Java 文件時就需要帶上包名。文件)2)編譯完成後,執行如下命令【參數說明】java 命令 + 包名.類名 + 接收的參數3)結果如下
  • Java基礎知識中的類
    聲明包的基本格式如下:Package包名;其中:Package為關鍵字,包名為標識符。使用包時的注意事項如下:1、Package語句要作為程序非注釋語句的第一行語句。2、包內的類名惟一。3、引用包中的類時,使用import語句。
  • Java第一篇:Java程序入門
    ,後綴名必須為.java 。第一個HelloWord 源程序就編寫完成了,但是這個文件是程式設計師編寫的,JVM是看不懂的,也就不能運行,因此我們必須將編寫好的Java源文件 編譯成JVM可以看懂的字節碼文件 。編譯Java源文件在DOS命令行中,進入Java源文件的目錄,使用javac 命令進行編譯。
  • Java基礎知識——第一天
    包相當於電腦中的磁碟,用於管理規範程序,讓程序不會雜亂無章,方便程序查找管理,特別是程序很大時,包名一定是小寫的,這是java語言的規範2、第二條語句public class MyJavaApp,這是創建類的語句,public是Java的關鍵字,是java中的其中一個訪問權限修飾符,用於修飾類/
  • 為Java程式設計師準備的Go教程:快速入門
    main包是一個特殊的包名,它表示當前是一個可執行程序,而不是一個庫。import 也是一個關鍵字,表示要引入的包,和Java的import關鍵字一樣,引入後才可以使用它。fmt是一個包名,這裡表示要引入fmt這個包,這樣我們就可以使用它的函數了。
  • Java反射機制深入詳解
    反射是java語言的一個特性,它允程序在運行時(注意不是編譯的時候)來進行自我檢查並且對內部的成員進行操作。例如它允許一個java的類獲取他所有的成員變量和方法並且顯示出來。Java 的這一能力在實際應用中也許用得不是很多,但是在其它的程序設計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++ 中就沒有辦法在程序中獲得函數定義相關的信息。
  • Visual Studio Code 10 月 Java 擴展更新
    Create non existing package當你的包名與文件夾名不匹配時,你可以選擇在代碼中更改包名,或者在文件系統中移動文件夾(即使目標文件夾還不存在)。新特性通過 VS Code 首選項中的 java.actionsOnPaste.OrganeImports 首選項啟用。如果為 true(默認值),則在將 Java 代碼粘貼到空文件中時觸發「Organize imports」。
  • 第一天 Java基礎入門【悟空教程】
    e) 基本使用選擇默認的Java項目目錄在左邊空白處或者點擊菜單File,建立Java項目,在界面中寫入一個項目名稱,然後Finish即可。在src下建立一個普通包。包名:cn.javahelp在界面中寫一個類名:HelloWorld。並選擇讓main方法也被創建。
  • java中的持有對方引用是什麼意思?有什麼用嗎?
    我在 B 類中創建個A類的引用,例如 如果在同一包下就不用導包了import 包名.Apublic class B {A a=null; 此a就是B類中 對A的引用a=new A(); 用此引用創建了A類的實例}
  • 一文讀懂JAVA類文件結構
    項目嚴格按照順序緊湊的排列在文件中,沒有添加任何分隔符,這使得整個Class文件中的存儲的內容幾乎全部是程序運行的必要數據,沒有空隙存在。數據類型: 無符號數和表通過以上定義,我們可知,其實我們編寫的java文件,經過javac編譯之後的class文件會以一種二進位流的方式存在,這樣就方便java虛擬機來讀取我們編寫的java文件。
  • 深入淺出Rhino:Java與JS互操作
    Rhino中,函數和變量的聲明中看不到類型,取而代之的是,使用 function關鍵字聲明函數,使用 var關鍵字聲明局部變量。  Rhino的原始想法是將JavaScript 編譯成Java字節碼執行,即採用編譯執行的方式。由於由於JVM存在垃圾收集、編譯和裝載過程的開銷過大等限制,Rhino採用了解釋執行的方式。
  • java程序編譯後會產生什麼
    通常情況下,一個平臺上的二進位可執行文件不能在其他平臺上工作。而Java class文件是可以運行在任何支持Java虛擬機的硬體平臺和作業系統上的二進位文件。   那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程式設計師能看懂的Java文件)