相关疑难解决方法(0)

Java中的native关键字是什么?

在玩这个谜题(这是一个Java关键字琐事游戏)时,我遇到了native关键字.

Java中的native关键字用于什么?

java java-native-interface native keyword

455
推荐指数
10
解决办法
22万
查看次数

如何从C++调用Java函数?

如何从C++应用程序调用Java函数?

我知道从CMD(或类似技术)调用它们,但我宁愿不使用它们.

c++ java

46
推荐指数
3
解决办法
6万
查看次数

什么是Java中的"内部地址"?

在Javadoc for Object.hashCode()中声明

尽管合理实用,但是由class定义的hashCode方法Object确实为不同的对象返回了不同的整数.(这通常通过将对象的内部地址转换为整数来实现,但Java™编程语言不需要此实现技术.)

这是一个常见的miconception,这与内存地址有关,但它并没有因为它可以在没有通知的情况下改变,而hashCode()不会,也不能改变对象.

@Neet提供了一个很好的答案的链接/sf/answers/39579151/但我正在寻找更多细节.


这是一个例子来说明我的担忧

Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
Unsafe unsafe = (Unsafe) theUnsafe.get(null);

for (int t = 0; t < 10; t++) {
    System.gc();
    Object[] objects = new Object[10];
    for (int i = 0; i < objects.length; i++)
        objects[i] = new Object();

    for (int i = 0; i < objects.length; i++) {
        if (i > 0) System.out.print(", ");
        int location = unsafe.getInt(objects, Unsafe.ARRAY_OBJECT_BASE_OFFSET + Unsafe.ARRAY_OBJECT_INDEX_SCALE * i);
        System.out.printf("%08x: hc= …
Run Code Online (Sandbox Code Playgroud)

java memory unsafe hashcode low-level

23
推荐指数
2
解决办法
2355
查看次数

java的hashCode()方法是如何工作的?

我很好奇java如何使用Object API的hashCode()方法生成哈希值?

java hash hashtable object

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

原生方法的源代码是否可用?

首先,我想告诉您这个问题与Java中的本机实现无关.我从该线程中获得了许多有用的信息.

我想知道原生实现的代码是否可用?我有JDK的源代码,但我无法找到本机代码System.currentTimeMillisRuntime.getRuntime().availableProcessors()或其他本地方法.

java java-native-interface

13
推荐指数
1
解决办法
3177
查看次数

为什么Object.clone()在Java中是原生的?

clone上方法Object,它创建的对象的精确副本,被声明为:

protected native Object clone() throws CloneNotSupportedException;
Run Code Online (Sandbox Code Playgroud)

为什么native

java clone native object

13
推荐指数
2
解决办法
2573
查看次数

字节到字符串,反之亦然

我需要转换随机生成的salt值并将其存储在数据库中.要将它存储在数据库中,我将其转换为字符串.然后,为了检索原始值,我将其转换回字节.但两个值都不匹配.我试过"UTF-8","UTF-16",BASE64Encoder.

SecureRandom ranGen = new SecureRandom();
byte[] aesKey = new byte[16]; // 16 bytes = 128 bits
ranGen.nextBytes(aesKey);   
System.out.println(aesKey);

String a=new String(aesKey,"UTF-16");
byte[] b=new byte[16];
b=a.getBytes("UTF-16");
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

上述代码的输出(执行2次):

[B@11563ff
[B@1581593
Run Code Online (Sandbox Code Playgroud)

[B@170888e
[B@11563ff
Run Code Online (Sandbox Code Playgroud)

java encoding bytearray character-encoding

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