草庐IT

int_void

全部标签

java - Java 中的 int 与 float 算术效率

我正在编写一个使用Dijkstra算法在图中查找最小路径的应用程序。图中节点和边的权重都是float数,所以该算法对float进行了很多运算。如果我将所有权重转换为int是否可以缩短运行时间?Java中的int算术运算是否比float运算更快?我尝试编写一个简单的基准测试来验证这一点,但我对得到的结果并不满意。可能编译器优化了程序的某些部分,所以结果对我来说看起来不太好。编辑:我要解决的问题是在信息检索领域。该应用程序应显示对作为一组关键字提出的查询的回答。我的数据结构是一个加权有向图。给定一组叶节点,我必须找到连接这些节点的最小树并将答案显示给用户。权重由部分基于tf/idf技术的加

Java 对 int 和其他整数类型的行为

这个问题在这里已经有了答案:PerformanceloopwithintegervsLongindex(2个答案)关闭7年前。我编写了以下代码来测试java执行从0计数到一个巨大数字的简单任务需要多长时间:publicstaticvoidmain(String[]args){for(longk=0;k我运行程序并等待了几个小时。等了这么久我没办法只能引用一些计算来估计这个运行时间,简单的计算我确信程序最终打印消息可能需要100多年(取决于CPU)“完成”!但在尝试了下面的代码(似乎与上面的代码一样多的时间才能完成)之后,我意外地看到在我运行程序后的几分之一秒内打印了消息“完成”!pub

java - 接受void的通用参数类型

我正在尝试为我正在从事的开源项目创建一个API,但我在尝试扩展API的同时保持语义与当前API一致时遇到了障碍。我想要的是能够使用通用参数定义方法签名,该参数接受调用any方法签名的结果。“any”是指包括void方法。我已经知道您不能直接定义void的参数类型——请不要重复显而易见的事实。不明显的是是否有任何技巧可以将void方法调用作为参数提供给方法(即忽略)。背景故事让我更明白为什么我想做这样的事情,以及我的设计目标和限制是什么,以防上述情况不可能(我担心它是不可能的):我当前的API定义了一种非常可重复的方法模式,如下所示:publicFunctionfunctionFor(V

java - 为什么 JVM 使用全 0 的巨型 int[]?

我知道JVM有一个内在的开销,我想做进一步的研究来确切地了解开销是什么。使用YourKit分析器,我发现有巨大的int[]充满了看似随机的信息。我的猜测是这些存储了一些性能指标和JVM用来优化应用程序的其他东西;但令我惊讶的是,所有元素的值都是0。为了得到我的结果,我使用了下面的“什么都不做”程序,因此结果只包括JVM上发生的事情。publicfinalclassMain{publicstaticvoidmain(String[]args)throwsInterruptedException{Thread.sleep(Long.MAX_VALUE);}}这是profiling结果的截图

java - 为什么 int p = (p=1) + p;字段定义失败但在方法中可以吗?

classTest{intp=(p=1)+p;//ERR"Cannotreferenceafieldbeforeitisdefined"intq=(q=1)+this.q;//fine!voidf(){intt=(t=1)+t;//fine!}}在第一种情况下,我的理解是:当执行赋值(或后续添加?)时,p被视为未声明。但为什么它在一个方法内是不同的呢?OKt不被视为未初始化,因为(t=1)在加法之前执行。好的,t不是一个字段,但目前也没有声明!我能以某种方式理解它吗?还是我只记住这个区别?也许这也有点相关:staticintx=Test.x+(x=1)+Test.x;//produce

java - 练习在 Java 中返回自身而不是 void

这个问题在这里已经有了答案:Benefitsanddrawbacksofmethodchainingandapossibilitytoreplaceallvoidreturnparametersbytheobjectitself(9个回答)关闭9年前。我的队友向我介绍了一种不会返回void的新练习写作方法。publicclassTest{publicTestdoCalculations(){//codereturnthis;}publicTestappendTitle(Stringtest){//codereturnthis;}}他们建议返回对象本身,而不是返回void。他们说这种方法

java - 如何在 int += double 上配置 Eclipse java 警告

这段Java代码不会导致编译警告。在这种情况下如何配置Eclipse发出警告?如果重要的话,我正在编译1.8合规级别。doubledd=1.1;intii=2;ii+=dd;//thisisapossiblebug 最佳答案 eclipse目前不支持。这也有一个Openbug。Bug516084-Needimplicitnarrowingoftypewarningonplus-equalsandminus-equals背景:根据JavaLanguageSpecificationsection15.26.2,复合赋值语句中没有警告似乎

Java 关于 <E> in public static <E> void

使用Java:我不想浪费人们的时间在这里发布这个,但我的谷歌搜索技能让我失望了,我找不到答案。我正在查看一些提供的代码,他们使用了publicstaticvoidprintTree(TwoFourTreetf)(作为引用,我们正在从红黑树转换为二四树)。当我第一次处理这个问题时,我会使用而不是甚至不包含在publicstaticvoid的初始方法声明中。.但是我遇到了问题,并投入了这个尽管使用解决了我所有的问题而不是其他地方。所以我的问题是,有人可以向我解释一下到底是什么吗?在publicstaticvoid 最佳答案 这是一个称为

java - 追踪 int[] 的分配

当通过JMX在JVisualVM中查看我的远程应用程序时,我看到空闲时内存使用呈锯齿状:获取堆转储并使用JVisualVM对其进行分析,我看到大块内存位于几个没有引用的大int[]数组中,通过比较堆转储,我可以看到它似乎是这些正在占用内存并由GC定期回收。我很想追踪这些,因为这激起了我的兴趣,因为我自己的代码从来没有故意分配任何int[]数组。我确实使用了很多像netty这样的库,所以罪魁祸首可能在其他地方。我确实有其他服务器具有大致相同的框架组合,但在那里看不到这个锯齿。我如何才能发现谁在分配它们? 最佳答案 进行堆转储并找出存放

java - List<String> 类型中的方法 get(int) 不适用于 Java 8 中的参数字符串

我正在尝试在List中搜索元素我得到了这个编译错误:themethodget(int)inthetypeListisnotapplicablefortheargumentstring.这是代码:privatebooleanfindIdInTheList(Listids,Stringid){StringtheId=ids.stream().filter(elem->id.equals(ids.get(elem))).findAny().orElse(null);} 最佳答案 ids是List和elem是String.因此ids.get