91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在java中定義一個長度為0的數組

發布時間:2021-03-25 15:30:10 來源:億速云 閱讀:862 作者:Leah 欄目:開發技術

怎么在java中定義一個長度為0的數組?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Java可以用來干什么

Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。

如下:

int[] array = new int[0];   // 定義一個長度為 0 的數組 / 空數組
Sring[] arr = new String[0]; // 定義一個長度為 0 的數組 / 空數組

長度為 0 的數組 / 空數組 并不是 null

有時數組里可能只有一個空字符串 "",這時數組長度是 1。這種情況也要注意判斷。

if ( arr.length == 1 && arr[ 0 ].equals( "" ) ) {
  System.out.println( "輸入的數組不能只包含一個空字符串" );
  return;
}

補充:java定義一個空數組_一個 Java 方法,最多能定義多少參數?

在 JVM 中,一個 Java 方法,最多能定義多少參數呢?這是一個很無聊的問題,即使能定義一萬個,十萬個,誰又會真的去這么做呢。

但是作為一個 coder,最重要的不就是好奇心嗎,沒有好奇心,和一條咸魚又有什么區別呢?本文作者就是這樣一位充滿好奇心的 coder。

怎么在java中定義一個長度為0的數組

我最近給我的 QuickTheories 分支添加了一個接口:

@FunctionalInterface
public interface QuadFunction {
  E apply(A a, B b, C c, D d);
}

讓我好奇的是這個方法能有多少個類型參數。到目前為止,我敢說,Java 語言規范并沒有談及這個問題。

對于實現定義的限制可能是什么,我有兩個猜測:

1、編譯器會設置一個可預測的限制,如 255 或 65535。

2、編譯器的緊急行為會由于實現細節(堆棧溢出或同樣不可預測/不相關的東西)而設置意外的限制。

我不想在源代碼上測試我那點可憐的 C++技巧,所以我決定只測試編譯器做了什么。我寫了一個 Python 腳本,它使用二進制搜索找到最少的致錯類型參數。完整的腳本放在 Github repo (https://github.com/hyperpape/java-max-type-params) 中。

腳本地址:https://github.com/hyperpape/java-max-type-params

生成方法很簡單。幸運的是,我們不必使用任何類型參數,只需以的形式發出它們:

def write_type_plain(count):
  with open('Test.java', 'w') as f:
    f.write("public class Test {\n")
    f.write("public     for i in range(count):
      if (i > 0):
        f.write(", ")
      f.write("A" + str(i + 1))
    f.write("> void testMethod() {}")
    f.write("}")

運行二進制搜索可以得到以下輸出:

>>> error: UTF8 representation for string ">>> largest type: 2776

這個錯誤有點模糊,但事后看來是可以預見的。編譯器生成的類文件包含許多字符串,包括類中每個方法的方法簽名。這些字符串存儲在常量池中,常量池中的條目最大為 65535 字節,這是由 JVM 規范規定的限制。

所以,我之前的猜測都不完全正確。類型參數的最大數目是一個突現特征(emergent property),而不是一個明確的決定。不過,并不是編譯器本身的實現導致了錯誤。

相反,JVM 的類文件格式限制了可以在類文件中表示的類型參數的數量。這是真的,盡管 JVM對泛型一無所知。這也意味著類型參數的最大數目完全取決于如何編寫方法。

我嘗試了一種新的編碼類型參數的方法(先前鏈接文件中的 write_Type_Compact),使用完整的合法 ASCII 字符(A-Z、a-z、$和_)。該實現有點過于復雜,因為可以使用字符 0~9,但不能是標識符的初始字符,因為 Java 關鍵字不能作為類型參數出現。我只是用等長的 UTF-8 字符替換了短單詞「if」和「do」。更緊湊的編碼將參數數量從 2776 增加到 3123。

不方便的是,_A 是一種合法的 Java 標識符,但 _ 不是。謝天謝地,我的編碼在不使用初始_情況下就生成了 3392 個 2 字節類型參數,因此我覺得沒有必要進行簿記以發出初始字符_。

再來一個小技巧

解壓類文件顯示,65536 個字符的大部分不是我生成的類型參數,而是子字符串 Ljava/lang/object 的重復實例。因為沒有提供關于類型參數的信息,所以類文件顯示它們擴展了對象,并在方法簽名中對其進行編碼。我修改了生成器來解決這個問題。

循環的關鍵部分是:

s = type_var(i)
f.write(s)
if (s != 'A'):
  f.write(" extends A")

在類型參數中,除了一個實例 java/Lang/Object 之外的所有實例都被替換為 A。在進行了這個更改之后,編譯了一個具有 9851 個類型參數的方法。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨竹工卡县| 夏邑县| 偃师市| 阿合奇县| 普陀区| 安义县| 新和县| 满洲里市| 新竹市| 云梦县| 江阴市| 合江县| 特克斯县| 青浦区| 民县| 湘西| 河北省| 克山县| 伊金霍洛旗| 海南省| 沙湾县| 楚雄市| 华坪县| 安陆市| 凤凰县| 桓台县| 蓬安县| 固原市| 芦溪县| 太谷县| 卓尼县| 钟祥市| 长白| 盱眙县| 玛多县| 铜山县| 手游| 东源县| 时尚| 明光市| 肥城市|