小编Roh*_*egi的帖子

Java类型转换 - 浮点(和长)到int

我试图理解Java中的类型转换.我已阅读, long被转换成int通过使用降低的模通过的范围intfloat被转换为int通过去除小数部分.我尝试了以下代码.

class test
{
    public static void main(String arf[])
    {
        System.out.println((int)2147483648.0);
        System.out.println((int)2147483648L);
    }
}
Run Code Online (Sandbox Code Playgroud)

...其中2147483647是最大值int.

输出是:

2147483647
-2147483648
Run Code Online (Sandbox Code Playgroud)

float转换int为其小数部分时被删除.所以,(int)2147483648.0也应该等于-2147483648.

任何人都可以向我解释为什么2147483648.0要施展2147483647

java casting

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

Java数组初始化为零大小

在java中声明一个数组时,我们必须使用new关键字动态分配内存.

class array
{
  public static void main(String ars[]) { 
    int A[] = new int[10];
    System.out.println(A.length);
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将创建一个包含10个元素的1D数组,每个元素4个字节.并且输出将是10.但是,当您运行以下相同的代码时:

class array { 
  public static void main(String ars[]) {
    int A[] = new int[0];
    System.out.println(A.length);
  }
}
Run Code Online (Sandbox Code Playgroud)

输出是0.我想知道你写的new int[0]时候Java是否为数组分配了一些内存?如果是多少钱?

java arrays dynamic-memory-allocation

9
推荐指数
1
解决办法
578
查看次数

3维数组中的元素地址

我正在寻找公式来查找 3-D 数组中元素的内存位置,用于行主要和列主要。使用我的逻辑后,我最终得到以下公式。说数组是A[L][M][N]

行优先:Loc(A[i][j][k])=base+w(M*N(i-x)+N*(j-y)+(k-z))
列优先:Loc(A[i][j][k])=base+w(M*n(i-x)+M*(k-z)+(j-y))

其中 x、y、z 是 1st(L)、2nd(M) 和 3rd(N) 索引的下限。我尝试了这个公式并得到了正确的结果,但是当我将这个公式应用于书中的一个问题时,答案并不匹配。请任何人都可以帮我解决这个问题。

arrays data-structures

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