草庐IT

信道分配

全部标签

java - 字符串创建和字符数组内存分配

我已经阅读了很多关于创建String时内存分配的相互矛盾的文章。有些文章说new运算符在堆中创建一个字符串,而字符串字面量在字符串池[堆]中创建,而有些文章则说new运算符在堆中创建一个对象,在字符串池中创建另一个对象。为了对此进行分析,我编写了以下程序,打印了Stringchar数组和String对象的哈希码:importjava.lang.reflect.Field;publicclassStringAnalysis{privateintshowInternalCharArrayHashCode(Strings)throwsSecurityException,NoSuchField

java - 快速排序算法未正确分配枢轴

我观看了快速排序算法的精彩可视化:http://www.youtube.com/watch?v=Z5nSXTnD1I4我觉得我真正理解了快速排序背后的原理,并且在一些在线指南的帮助下,着手创建我自己的快速排序。这是我想出的:publicvoidquickSort(int[]a,intleft,intright){intindex=partition(a,left,right);if(leftpivot)j--;if(i左右的取值如下:left=0right=arraysize-1很遗憾,输出不正确。问题似乎出在我对枢轴的处理上。在我观看的可视化中,讲师物理地移除了枢轴并让指针指向任何地

java - 为什么不能分配 I <?将类型> 扩展到 <类型>?

以下语句:URLClassLoaderucl=(URLClassLoader)ClassLoader.getSystemClassLoader();Classuclc=ucl.getClass();失败错误:Typemismatch:cannotconvertfromClasstoClass这里为什么需要类型转换?我发现有几篇文章解释了为什么你不能做相反的事情(将T分配给a),但这(有点)显而易见并且易于理解。注意:我是在eclipseLuna下编写代码的,所以我不知道这是Luna的怪癖,还是我真的不了解泛型。 最佳答案 Covar

java - 分配大文件

我需要分配大小接近50GB的文件,但是这段代码:RandomAccessFileout=newRandomAccessFile("C:\\hello.txt","rw");out.setLength(50*1024*1024*1024);//50giga-bytes抛出异常:Exceptioninthread"main"java.io.IOException:Попыткапоместитьуказательнафайлпередначаломфайлаatjava.io.RandomAccessFile.setLength(NativeMethod)atExperiment.main

java - float 到双重分配

考虑以下代码片段floatnum=281.583f;intamount=(int)Math.round(num*100f);floatrounded=amount/100.0f;doubledblPrecision=rounded;doubledblPrecision2=num;System.out.println("num:"+num+"amount:"+amount+"rounded:"+rounded+"dbl:"+dblPrecision+"dbl2:"+dblPrecision2);我得到的输出是num:281.583amount:28158rounded:281.58dbl

Java 分配内存泄漏

我必须假设以下方法不会泄漏内存:publicfinalvoidsetData(finalIntegerp_iData){data=p_iData;}其中data是某个类的属性。每次调用该方法时,新整数都会替换当前存在的数据引用。那么当前/旧数据发生了什么?Java必须在底层做一些事情;否则,每次分配一个对象时,我们都必须清空所有对象。 最佳答案 简单的解释:垃圾收集器会定期查看系统中的所有对象,并查看哪些对象无法再从Activity引用中访问。它释放任何不再可达的对象。请注意,您的方法根本不会创建一个新的Integer对象。例如,可

java - 以负载均衡方式在 4 个线程上分配 10 个无限作业 (Java)

我有10个计算作业,需要(接近)无限时间。例如:计算PI的下一位,solve一个NP-hard约束满足问题等。我有4个线程(所以在一台有8个内核的机器上有一个有4个线程的线程池,所以我还有一些内核可以避免活锁机器和过程)。使用Java8,如何在这4个线程中分配这10个作业?这是个坏主意:ExecutorServicees=Executors.newFixedThreadPool(4);for(Jobj:jobs){es.submit(j);}因为4个工作将开始,但没有一个完成,所以工作5-10永远不会开始。例如,如果我查看10分钟,我预计每个作业运行了大约4分钟。20分钟后,每个作业运

java - 如果实例没有分配泛型类型,则每个循环问题中的泛型

这个问题在这里已经有了答案:Whatisarawtypeandwhyshouldn'tweuseit?(16个答案)关闭6年前。有人可以向我解释为什么明确需要为ForEachLoop实例分配泛型类型吗?为什么编译器会提示:类型不匹配:无法从元素类型Object转换为String?JDK1.5.0_09importjava.util.ArrayList;importjava.util.Collection;publicclassForEachLoop{publicstaticvoidmain(String[]args){//NonfunctionalversionForEachLoopf

java - 当我将多个自定义匹配器分配给一个方法时,Mockito 的行为很奇怪

我想为一个方法使用两个自定义匹配器。基本上,如果我传递方法VALUE_A,我希望它返回RESULT_A,如果我传递它VALUE_B,我希望它返回RESULT_B。所以这是一段代码摘录:classIsNonEmptyextendsArgumentMatcher{publicbooleanmatches(Objectget){//Forsomereason,thismethodiscalledwhenIassigntheIsEmptymatchertoMockHtable.get()//Whenthishappens,thevalueofthegetargumentisnull,sothi

java - 在方法调用期间分配和递增一个值

谁能解释为什么这样的调用不会增加我的i值?inti=0;list.get(7+(i=i++));list.get(7+(i=i++));它离开i=0而不是递增1,至少在第二次调用时它是1。 最佳答案 i=i++就像做:intold_i=i;i=i+1;i=old_i;实际发生的是i++的值是i在增量发生之前的值,然后i将获得..i的值。在一行中,i++将使用i的旧值,然后递增它。 关于java-在方法调用期间分配和递增一个值,我们在StackOverflow上找到一个类似的问题: