Java中的方法可以拥有的最大参数数量是什么?为什么?
我在64位Windows系统上使用Java 1.8.
StackOverflow关于此的所有答案都说技术限制是255个参数而没有指定原因.
确切地说,255表示静态,254表示非静态(this在这种情况下将是255)方法.
我认为这可以在某种规范中描述,并且只允许静态定义的最大参数数量.
但这仅适用于int所有4字节类型.我用long参数做了一些测试,在这种情况下我只能声明127个参数.
使用String参数,从测试中推导出的允许数量是255(这可能是因为Java中的引用大小是4个字节?).
但由于我使用的是64位系统,因此引用大小应为8字节宽,因此对于String参数,允许的最大数量应为127,类似于long类型.
这个限制是如何应用的?
限制是否与方法的堆栈大小有关?
注意:我并不是真的会在任何方法中使用这些参数,但这个问题只是为了澄清确切的行为.
我想将图像转换为字节数组,反之亦然.在这里,用户将输入图像的名称(.jpg),程序将从文件中读取它并将其转换为字节数组.
我想用.webp替换android项目中的.png和.jpg文件,以减少应用程序的大小.
我正在验证这3个jpg到webp转换的情况(对于.png和.jpg):
对于案例1,尺寸按预期减少了约30%
但是对于案例1和案例2,大小显着增加(170KB的.jpg到470KB的.webp)而不是减少.
使用的命令:
cwebp -q 100 input.jpg -o output.webp
对于在转换为.webp格式时缩小尺寸的所有三种情况,这都适用于.png图像.
但同样不适用于.jpg图像?尺寸缩小是否取决于.jpg图像?从.jpg/.png转换为.webp时,尺寸是否会保证减少?为什么尺寸增加?
libwebp的版本:libwebp-0.4.3 OS - Windows 64位
void main()
{
float a = 0.7;
if (a < 0.7)
printf("c");
else
printf("c++");
}
Run Code Online (Sandbox Code Playgroud)
在上面的0.7问题中,将打印"c",但是对于0.8,将打印"c ++".为什么?
那么浮点数是如何用二进制形式表示的?
在某些地方,提到内部0.7将存储为0.699997,但0.8存储为0.8000011.为什么这样?
java中的ArrayList是线程安全的,它是使用数组实现的.
那么,在java线程中访问数组是否安全?对数组的访问是否需要同步?