草庐IT

Java 自变量 vs 数组性能

我正在研究Java,想知道以下各项在性能方面有何不同。我知道过早优化是编程的困境,但我的好奇心仅供将来引用。publicclassType1{int[]data=newdata[4];publicintgetData(intindex){returndata[index];}}publicclassType2{intdata1;intdata2;intdata3;intdata4;publicintgetData1(){returndata1;}publicintgetData2(){returndata2;}publicintgetData3(){returndata3;}publi

java - 在 Java 中表示上三角矩阵的最佳数据结构是什么?

假设给定一个整数的上三角矩阵。在Java中存储它的最佳方式是什么?朴素的2dint数组显然效率不高。我提出的解决方案已移至答案部分。 最佳答案 如果您想节省内存,您的解决方案看起来很棒-它称为packedstoragematrix.逐列自上而下,您的数组将如下所示:1263784195我建议根据总和公式(n²+n)/2(行和列)对您的指数进行更简单的计算是从零开始的)。list_index=(column^2+column)/2+row;一个实现可能如下所示:publicclassTriangularMatrix{privatefi

java - 静态方法线程中的 Java 数组是否安全?

publicstaticintrank(intkey,int[]a){intlo=0;inthi=a.length-1;while(loa[mid])lo=mid+1;elsereturnmid;}return-1;}上面的静态方法进行二分查找。它是线程安全的吗?我知道局部变量是线程安全的,但是这里的“a”是一个数组,所以这意味着它是Java中的一个对象,对吧?那是问题吗?该数组只是被读取,没有以任何方式修改,所以我假设这个方法是线程安全的。但我想确保我理解原因。谢谢! 最佳答案 没有数组通常不是线程安全的。你的代码是否在这种情况下

java - 为 Julia 集生成自定义调色板

我需要一种算法或方法来生成调色板来为Julia集图像着色。例如,当使用逃逸时间算法生成图像时,我得出了以下图像:但是我需要一些方法来生成自定义调色板,例如theWikipediapage:如何获得类似的图像?另外,Julia集应该使用什么颜色平滑算法?这里是澄清的代码片段:intmax_iter=256;ComplexNumberconstant=newComplexNumber(cReal,cImag);floatSaturation=1f;for(intX=0;X2)break;}floatBrightness=i 最佳答案 这

java - 为什么从 int 到 Long 的隐式转换是不可能的?

我可以隐式地将int转换为long,并将long转换为Long。为什么不能将int隐式转换为Long?为什么Java不能在示例的最后一行进行隐式转换?inti=10;//OKlongprimitiveLong=i;//OKLongboxedLong=primitiveLong;//OKboxedLong=i;//Typemismatch:cannotconvertfrominttoLong 最佳答案 Long和Integer是对象。装箱/拆箱仅适用于基元。执行LongboxedLong=i就像LongboxedLong=newInt

java - for 循环中的 index*int 如何以零结束?

我们只是为了好玩而尝试创建一个如下所示的for循环。我们假设我们得到的数字会非常高,但我们得到了0。为什么它是0而不是大的东西?我们甚至用long尝试了它,因为我们认为它可能比int大。提前致谢。privatestaticvoidcalculate(){intcurrentSolution=1;for(inti=1;i 最佳答案 您的int在到达+2147483647时环绕到-2147483648。由于一个惊人的巧合1,您的产品中引入了零乘法。自己看:写if(currentSolution==0){//Whatisthevalueo

Java:如何从 int[][] 中获取单个 int 值

我有一个int[][]对象。它在我的代码中定义如下:publicint[][]position={{20,30},{73,91},{82,38}};是否可以获取每对括号中的第一个值(左侧)的值,并使用for循环将它们存储为单独的int变量?基本上,是否可以提取“20”、“73”和“82”并将它们分别存储到int变量中? 最佳答案 for(int[]x:position){inty=x[0];//Dosomethingwithy...}或者只是:intx=position[0][0];inty=position[1][0];inty=

java - 不能将 java int 传递给 jni 函数

我在test.cpp中有一个简单的jni函数:#include#includeextern"C"{JNIEXPORTjintJNICALLJava_dri_put(JNIEnv*env,jstringjs,jintji){printf("%d\n",ji);intt=ji;printf("%d\n",t);intk=-3412;returnk;}}我的java类javatest.java:publicclassjavatest{publicstaticvoidmain(Stringargs[]){System.loadLibrary("test");intt=134;intk=dri.

java:将二进制字符串转换为int

我正在尝试将几个二进制字符串转换回int。但是它并没有转换我所有的二进制字符串,给我留下了一个java.lang.NumberFormatException异常。这是我的带有3个二进制字符串的测试代码:publicclassBin{publicstaticvoidmain(Stringargvs[]){StringbinaryString;binaryString=Integer.toBinaryString(~0);//binaryString=Integer.toBinaryString(~1);//binaryString="1010";intbase=2;intdecimal=

Java int += double 语法惊喜

这个问题在这里已经有了答案:Varyingbehaviorforpossiblelossofprecision(1个回答)WhydoesJavaperformimplicittypeconversionfromdoubletointegerwhenusingthe"plusequals"operator?[duplicate](2个答案)Whydon'tJava's+=,-=,*=,/=compoundassignmentoperatorsrequirecasting?(11个答案)关闭9年前。我遇到了以下令人惊讶的行:intx=7;x+=0.5;显然是合法的语法!添加后,x仍然是7,