簡體   English   中英

初始化 Java 中的字符串

[英]Initializing a String in Java

當我們使用以下方法初始化字符串時有什么區別:

  1. java.lang.String
  2. 字符串(僅限)

為什么我們要寫完整的 package 的名稱?

沒有區別。 java.lang package 在所有 java 程序中隱式導入。

如果沒有定義自定義“字符串”class,則沒有區別。

但是,如果您定義了自己的“字符串”class。 然后你需要額外的 java.lang 來識別正確的字符串 class。

為什么我們要寫完整的 package 的名稱?

在這種情況下,您不需要這樣做。

正如@Asaph 所說, java.lang隱式導入到每個 class 中。 這意味着您的代碼可以通過簡單的 class 名稱來引用String和其他類,例如BooleanSystemNullPointerException

需要通過其完全限定名稱( java.lang.String )引用String的唯一情況是:

  • 如果您在某些反射 API 中將 class 名稱作為字符串提供,或者

  • 如果您愚蠢地編寫了自己的 class ,其簡單名稱為String 例如com.example.stupid.String ,並且您已將該版本的String顯式導入到其他一些 class 中。

最佳實踐是通過簡單名稱來引用java.lang中的類,而不是在其他包中使用相同的簡單名稱定義您自己的類。


在一般情況下,這兩個 forms 的含義完全相同,並且會給您完全相同的編譯代碼:

// version 1
package com.example.bar;
import com.example.foo.Foo;
public class Bar {
    private Foo myFool;
    ...
}

// version 2
package com.example.bar;
public class Bar {
    private com.example.foo.Foo myFool;
    ...
}

沒有不同

我們編寫 package 以將其與您項目中類似名稱的 class(如果有)區分開來。 例如,如果您的項目還有一個名為String的 class , java 將不知道您要使用哪個字符串 class - 您的或 java 的內置字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM