我试图理解Java中的类型转换.我已阅读, long被转换成int通过使用降低的模通过的范围int和float被转换为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中声明一个数组时,我们必须使用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是否为数组分配了一些内存?如果是多少钱?
我正在寻找公式来查找 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) 索引的下限。我尝试了这个公式并得到了正确的结果,但是当我将这个公式应用于书中的一个问题时,答案并不匹配。请任何人都可以帮我解决这个问题。