返回顶部
首页 > 资讯 > 精选 >怎么在java中定义一个长度为0的数组
  • 756
分享到

怎么在java中定义一个长度为0的数组

2023-06-14 07:06:30 756人浏览 独家记忆
摘要

怎么在java中定义一个长度为0的数组?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Andro

怎么在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 分支添加了一个接口:

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

让我好奇的是这个方法能有多少个类型参数。到目前为止,我敢说,Java 语言规范并没有谈及这个问题。

对于实现定义的限制可能是什么,我有两个猜测:

编译器会设置一个可预测的限制,如 255 或 65535。

编译器的紧急行为会由于实现细节(堆栈溢出或同样不可预测/不相关的东西)而设置意外的限制。

我不想在源代码上测试我那点可怜的 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 个类型参数的方法。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么在java中定义一个长度为0的数组

本文链接: https://lsjlt.com/news/269143.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在java中定义一个长度为0的数组
    怎么在java中定义一个长度为0的数组?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Andro...
    99+
    2023-06-14
  • java 定义长度为0的数组/空数组案例
    如下: int[] array = new int[0]; // 定义一个长度为 0 的数组 / 空数组 Sring[] arr = new String[0]; // 定义...
    99+
    2024-04-02
  • 怎么在java项目中定义一个数组
    这篇文章给大家介绍怎么在java项目中定义一个数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5...
    99+
    2023-06-14
  • 如何在golang中将切片的长度定义为数组?
    在Golang中,切片与数组是两种不同的数据类型。切片是一个动态长度的序列,而数组是一个固定长度的序列。如果你想将切片的长度定义为数组,可以通过创建一个固定长度的数组,然后使用切片来引...
    99+
    2024-02-08
  • 怎么在java中指定二维数组的长度
    本篇文章给大家分享的是有关怎么在java中指定二维数组的长度,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用...
    99+
    2023-06-14
  • Java如何自定义一个变长数组
    这篇文章主要介绍“Java如何自定义一个变长数组”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何自定义一个变长数组”文章能帮助大家解决问题。思路分析主要功能点:新建时可以指定容量大小,不指...
    99+
    2023-07-04
  • 在c#中怎么定义一个类数组
    类数组是用于存储相同类型对象的容器,在 c# 中可以使用以下语法进行定义:类名[] 数组名。在定义后,可以通过在声明时或声明后初始化数组。数组中的元素可以通过索引器或 for 循环进行访...
    99+
    2024-05-14
    c#
  • C语言中长度为0的数组详解
    目录概述使用方式总结概述 长度为0的数组在标准c和c++中是不合法的,但是在gcc中是可行的。 长度为0数组它的最典型的用法就是位于结构体中的最后一项。 使用方式 如下面的例子,分...
    99+
    2024-04-02
  • C#中怎么定义一个数组
    这篇文章给大家介绍C#中怎么定义一个数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#定义数组一、一维:int[] numbers = new int[]{1,2,3,4,5...
    99+
    2023-06-17
  • Java自定义一个变长数组的思路与代码
    目录前言思路分析实现代码测试结果总结前言 首先需要声明的是,Java本身是提供了变长数组的,即ArrayList。那么自定义一个变长数组有啥用?其实没啥用或者说用处不大,主要就是为了...
    99+
    2022-12-29
    java 变长数组 java定义一个长度可变的数组 如何定义变长数组
  • java怎么输入不定长度的数组
    在Java中,可以使用动态数组(ArrayList)来解决输入不定长度的数组的问题。动态数组可以根据需要动态调整数组的大小。以下是一...
    99+
    2023-08-26
    java
  • c语言怎么定义可变长度数组
    在C语言中,可以使用指针和动态内存分配来定义可变长度数组。下面是一个示例代码:```c#include #include int m...
    99+
    2023-10-10
    c语言
  • 怎么在java中定义一个变量
    怎么在java中定义一个变量?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;...
    99+
    2023-06-14
  • java怎么定义一个数组冒泡排序
    Java中可以使用以下代码定义一个数组冒泡排序的方法: public class BubbleSort { public s...
    99+
    2023-10-26
    java
  • C#中怎么定义一个整型数组
    这篇文章给大家介绍C#中怎么定义一个整型数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#中数组是引用类型,C#定义整型数组方式是:int [] intArray = {1,2,3};或int [] intArra...
    99+
    2023-06-18
  • 怎么在python中定义一个具名元组
    今天就跟大家聊聊有关怎么在python中定义一个具名元组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • 怎么在php中限制数组的长度
    怎么在php中限制数组的长度?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampSe...
    99+
    2023-06-14
  • 怎么在Java中自定义动态数组
    这期内容当中小编将会给大家带来有关怎么在Java中自定义动态数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了...
    99+
    2023-06-14
  • 怎么在shell中定义数组并定义
    怎么在shell中定义数组并定义?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。shell中数组的定义及遍历,先直接看示例:#!/bin/sh#定义方法一&nbs...
    99+
    2023-06-09
  • C语言中的0长度数组有什么用途
    本篇内容介绍了“C语言中的0长度数组有什么用途”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!零长度数组概念众所周知, GNU/GCC 在标准...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作