电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java 定義長度為0的數組/空數組案例

瀏覽:3日期:2022-08-15 10:12:59
如下:

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 分支添加了一個接口:

@FunctionalInterfacepublic 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 個類型參數的方法。

由于參數的數量增加了很多,所以我使用的代碼肯定需要調整。使用非 ASCII Unicode 標識符可能是完全高效的必要條件,但簡單地指出這是可以做到的我就很滿意了。

這些都不重要

很難想象有人會達到這個極限。代碼生成有時會達到語言或編譯器的限制,但即使生成的代碼似乎也不太可能使用成百上千的類型參數。

盡管如此,如果我是規則制定者,我會考慮明確禁止任何類或方法具有 255 個以上的類型參數。明確的限制似乎更好,即使它只影響百萬分之一的程序。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關文章:
主站蜘蛛池模板: elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 深圳南财多媒体有限公司介绍| 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 信阳市建筑勘察设计研究院有限公司 | 体坛网_体坛+_体坛周报新闻客户端| 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 信阳市建筑勘察设计研究院有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 精密模具-双色注塑模具加工-深圳铭洋宇通 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 辊道窑炉,辊道窑炉厂家-山东艾希尔| 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 粉碎机_塑料粉碎机_塑料破碎机厂家-星标机械 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 南京交通事故律师-专打交通事故的南京律师 | 手板_手板模型制作_cnc手板加工厂-东莞天泓 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 中药超微粉碎机(中药细胞级微粉碎)-百科| 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 |