小编HQu*_*ser的帖子

数组对象是否显式包含索引?

从学习Java的第一天起,各个网站和许多老师都告诉我,阵列是连续的内存位置,可以存储所有相同类型的指定数量的数据.

由于数组是对象,对象引用存储在堆栈中,而实际对象存在于堆中,因此对象引用指向实际对象.

但是当我遇到如何在内存中创建数组的示例时,它们总是显示如下:

(其中对数组对象的引用存储在堆栈中,并且该引用指向堆中的实际对象,其中还有指向特定内存位置的显式索引)

各种网站和教师讲授的对象的内部工作

但是最近我遇到了Java的在线笔记,其中他们声明数组的显式索引没有在内存中指定.编译器只是通过在运行时查看提供的数组索引号来知道去哪里.

像这样:

在此输入图像描述

在阅读了笔记之后,我还在Google上搜索了这个问题,但是这个问题的内容要么很模糊,要么根本不存在.

我需要对此事进行更多澄清.数组对象索引是否明确显示在内存中?如果没有,那么Java如何在运行时管理命令转到数组中的特定位置?

java arrays

28
推荐指数
7
解决办法
2409
查看次数

在汇编中寻址数组[di]和[array + di]之间的根本区别是什么?

给出的是英特尔8086处理器的汇编程序,它在数组中添加数字:

.model small
.stack 100h

.data
    array dw 1,2,3,1,2
    sum   dw ?,", is the sum!$"

.code
main proc
    mov ax,@data
    mov ds,ax

    mov di,0

    repeat:
    mov ax,[array+di]
    add sum,ax
    add di,2           ; Increment di with 2 since array is of 2 bytes

    cmp di,9
    jbe repeat         ; jump if di<=9

    add sum,30h        ; Convert to ASCII
    mov ah,09h
    mov dx,offset sum  ; Printing sum
    int 21h

    mov ax,4c00h
    int 21h
main endp
end  main
Run Code Online (Sandbox Code Playgroud)

上面的程序使用"base + index"寻址模式添加数组的数量.

可以通过以下方式执行相同的操作:

mov ax, …
Run Code Online (Sandbox Code Playgroud)

assembly masm x86-16 emu8086

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

Android Studio:错误:org.gradle.tooling.BuildException:无法生成v1签名

问题出现在Android Studio 3.0中.

当我创建一个新项目时,一切正常,但过了一段时间后,错误

错误:org.gradle.tooling.BuildException:无法生成v1签名

开始自动出现,导致gradle失败.

当我使用--stacktrace运行它时,这是它向我显示的内容:

信息:Gradle任务[:app:assembleDebug]

错误:org.gradle.tooling.BuildException:无法生成v1签名

错误:java.io.IOException:无法生成v1签名

错误:java.security.InvalidKeyException:使用签名者"CERT"签名失败

错误:java.security.InvalidKeyException:无法使用SHA1withDSA进行签名

错误:java.security.InvalidKeyException:SHA-1摘要算法的安全强度不足以满足此密钥大小

信息:1秒内失败

5个错误0个警告

这是Gradle控制台Gist的完整要点

我正在使用Windows 10 X64和JDK 8 X64.

任何帮助解决这个问题将不胜感激!

java android gradle java-8 android-studio

4
推荐指数
1
解决办法
2523
查看次数

标签 统计

java ×2

android ×1

android-studio ×1

arrays ×1

assembly ×1

emu8086 ×1

gradle ×1

java-8 ×1

masm ×1

x86-16 ×1