相关疑难解决方法(0)

数组的长度属性在哪里定义?

我们可以确定ArrayList<E>使用其公共方法的长度size(),例如

ArrayList<Integer> arr = new ArrayList(10);
int size = arr.size();
Run Code Online (Sandbox Code Playgroud)

类似地,我们可以Array使用length属性确定对象的长度

String[] str = new String[10];
int size =  str.length;
Run Code Online (Sandbox Code Playgroud)

虽然size()方法ArrayList是在ArrayList类中定义的,但是这个length属性是在哪里Array定义的?

java arrays

261
推荐指数
5
解决办法
74万
查看次数

如何在Java Arrays中实现长度?

我想知道lengthJava数组的实现.我知道using arrayName.length使我们得到了数组中元素的数量,但是想知道这是一个方法/函数还是只是Array的数据成员?

我想它必须是一个数据成员,因为我们()在调用它时不使用括号.但是,如果它是一个数据成员,该length指定/计算的值是如何/何时?

java arrays

40
推荐指数
2
解决办法
10万
查看次数

为什么没有java.lang.Array类?如果java数组是一个Object,它不应该扩展Object吗?

这是java包树:http: //docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html

我读了一篇关于Java的教程,该教程表明在Java数组中是对象.

数组类在哪里?为什么我们可以制作这样的数组:

byte[] byteArr = new byte[];
char[] charArr = new char[];
int[] intArr = new int[];
Run Code Online (Sandbox Code Playgroud)

并且数组将从Object继承方法; 例如:

    byte thisByte = 1;
    byte thatByte = 2;
    byte[] theseBytes = new byte[] {thisByte, thatByte};
    int inheritance = theseBytes.length; //inherited 'length' field and some methods
    int wasntInWill = thatByte.length; //error
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

编辑:

根据答案,我现在知道它是一个包装finaljava.lang.reflect.

我现在已经java.lang.reflect在我的Android项目中创建了一个包,并为其添加了一个名为Array.java的类.为了确认这是原始类的方式,Eclipse给了我错误"...已存在于path/to/android.jar"

如果我写出同一个类,java.lang.reflect.Array但改变toString()方法......这应该在我的应用程序中正常工作吗?

java arrays object

37
推荐指数
3
解决办法
2万
查看次数

使用自己的int容量比使用数组的.length字段更快?

马丁·汤普森"95%的表现是关于清洁的代表性模型"谈话中,在17到21分钟之间,这样的代码被呈现:

public class Queue
{
    private final Object[] buffer;
    private final int capacity;

    // Rest of the code

}
Run Code Online (Sandbox Code Playgroud)

在20:16他说:

你可以获得更好的性能,所以留下像这样的东西capacity 是正确的.

我试图提出一个代码示例,其capacity速度会快得多buffer.length,但我失败了.

马丁说两个场景中出现问题:

  1. 在一个并发的世界里.但是,length字段也是final,JLS 10.7.所以,我不知道这可能是一个什么问题.
  2. 当缓存未命中时.试着打电话capacityVS buffer.length一百万次(具有元素一百万队列),但没有显著差异.我使用JMH进行基准测试.

能否请您提供一个代码示例,该示例演示了一个capacity优于buffer.length性能的案例?

更常见的情况(经常在实际代码中发现)越好.

请注意,我完全取消了美学,清洁代码,代码重新分解等方面的内容.我只询问性能.

java concurrency performance caching

11
推荐指数
1
解决办法
248
查看次数

数组类如何在Java中工作?

在Java中,array是一个类并扩展了Object.我很想知道这个特殊的数组类.我没有在任何地方找到类定义.执行getClass().getName()会得到奇怪的结果.

String[] array = new String[]{"one","two"};
System.out.println(array.getClass().getName()); // prints [Ljava.lang.String;
Run Code Online (Sandbox Code Playgroud)

我想了解阵列是如何工作的.数组类定义是否在JVM中进行了硬编码?

任何资源,书籍,链接都会有所帮助.

谢谢.

java arrays jvm

7
推荐指数
2
解决办法
3907
查看次数

数组如何在 Java 内部工作?

发布此查询以基本上了解诸如

  • 对象是类实例或数组;

  • 数组是类的子Object类;

  • 在 Java 中,除了基元之外的所有实例化都是对象。

这是我对在 Java 中使用数组的理解。

考虑到下面的程序,

/* dummy.java */
class C {
    private int i; 
    public C() {
        i = 1;
        System.out.println("Am in constructor");
    }
}
public class dummy {
    public static void main(String[] args) {
        C[] c = new C[2]; // Line 11
        c[0] = new C();
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

类型的对象class [LC在运行后在运行时创建,

C[] c = new C[2]; //Line 11
Run Code Online (Sandbox Code Playgroud)

在上面的代码中。class [LC是类的直接子Object类。在上面的代码中c运行后,引用变量指向这个对象(如下图红色边界所示)Line 12。引用变量位于堆栈中,类型的对象class …

java arrays runtime object new-operator

5
推荐指数
1
解决办法
6883
查看次数

标签 统计

java ×6

arrays ×5

object ×2

caching ×1

concurrency ×1

jvm ×1

new-operator ×1

performance ×1

runtime ×1