草庐IT

Primitive

全部标签

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

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

java - 内存不足错误 : Java heap space when casting a numeric primitive to char

我一直在研究Decorator模式并开发了简单的类ToUpperCaseInputStream。我覆盖了read()方法,因此它可以将所有字符从InputStream转换为大写。该方法的代码如下所示(抛出OutOfMemoryError):@Overridepublicintread()throwsIOException{returnCharacter.toUpperCase((char)super.read());}我后来发现,转换为char是多余的,但这不是重点。当代码出现“java.lang.OutOfMemoryError:Java堆空间”时:((char)super.read

java - 确定十进制值的最快最有效的方法是 Java 中的整数

给定一个名为sizeValue且sizeValue包含非0的double变量,确定sizeValue包含的最有效方法是什么值是整数吗?目前我正在使用大小值%1==0还有其他更快的方法吗? 最佳答案 尝试Math.ceil:privatestaticbooleanisInt(doublex){returnx==Math.ceil(x);}编辑我用以下方法做了一些基准测试:privatestaticbooleanisInt1(doublex){returnx==(int)x;}privatestaticbooleanisInt2(dou

Java:JAXB 和使用 char

我正在使用JAXB开发一个项目,但是我遇到了一个关于JAXB和char数据类型的小问题。chargender='M';编码后翻译成:77所以我认为char映射为整数,但我只是想将其映射为String。我怎样才能做到这一点?有可能吗? 最佳答案 经过一些试验,似乎无法配置JAXB以正确处理原始字符。不过,我很难接受。我已经尝试定义一个XmlAdaptor以尝试将其强制转换为一个字符串,但运行时似乎只接受在对象类型而非基元上注释的适配器。我能想到的唯一解决方法是用@XmlTransient标记char字段,然后编写获取和设置值的gett

c# - Java 比特转换器

遵循问题https://stackoverflow.com/questions/1738244/what-is-the-java-equivalent-of-net-bitconverter中提供的建议我已经开始为Java实现我自己的位转换器,但没有得到相同的结果。有人可以指导我做错了什么吗?publicstaticbyte[]GetBytes(Integervalue){ByteArrayOutputStreambyteStream=newByteArrayOutputStream();DataOutputStreamstream=newDataOutputStream(byteSt

原始类型的 Java 迭代器

我有一个如下形式的Java类:classExample{privatebyte[][]data;publicExample(ints){data=newbyte[s][s];}publicbytegetter(intx,inty){returnbyte[x][y];}publicvoidsetter(intx,inty,bytez){byte[x][y]=z;}}我希望能够像这样使用迭代器在外部迭代私有(private)数据:for(byteb:Example){;/*做一些事情*/}我试图实现一个私有(private)迭代器类,但我遇到了问题:privateclassExampleI

java - JPA 映射中的原始类型。如果数据库列可能为 NULL 怎么办?

给定使用JPA映射的此类(使用JPA1.0和Hibernate):@EntitypublicclassFoo{privateintbar;/*...*/}如果我尝试加载BAR列设置为NULL的记录,会发生什么情况?是否可以指定当相应列为NULL时如何设置bar字段?注释我知道这不是最佳做法。这个问题更多是出于好奇,也是受到这种情况的启发:数据库表是一个暂存表:添加NOTNULL约束是不切实际的。坏数据是预料之中的,我的代码的重点是在将数据加载到“真实”数据库之前验证、清理和/或拒绝数据。我有一些字段可接受的默认值。例如,一个boolean标志应该默认为false。

java - Java 的不一致行为 ==

考虑这段代码:classtest{publicstaticvoidmain(String[]args){testinst_test=newtest();inti1=2000;inti2=2000;inti3=2;inti4=2;IntegerIthree=newInteger(2);//1IntegerIfour=newInteger(2);//2System.out.println(Ithree==Ifour);inst_test.method(i3,i4);inst_test.method(i1,i2);}publicvoidmethod(Integeri,Integereye){

java - Java 是否在任何地方定义其基本类型的大小?

是否有一个包定义了我可以在我的项目中导入的Java原语的大小?我正在做一些手动位设置并保留一个字节索引。我不想做currentByte+=4当我设置一个int(魔术数字不受欢迎)时,我宁愿做currentByte+=.SIZE_OF_INT我想我可以定义我自己的,但这有点笨拙,尤其是当它们在某处可用时。 最佳答案 不是一个类,但是您有Integer.SIZE,对于Long和浮点类也是如此。您还有*.BYTES。因此Integer.SIZE是32,Integer.BYTES是4,Double.SIZE是64而Double.BYTES是

java - Java 中的原始类型与对象类型

这个问题在这里已经有了答案:WhydopeoplestilluseprimitivetypesinJava?(21个回答)关闭9年前。我想到了这个问题,因为我在某处读到Java不是纯面向对象的语言,因为它使用的是原语(不是对象)。我可以同意。现在我的问题是为什么我们使用primitives/wrappers而我们已经有相同类型的对象?例如,如果我们考虑Integer,除了对象行为之外,它与int具有相同的值限制。为什么Java在这种情况下仍然使用primitives?在我看来,如果Java只使用Object类型AutoboxingandUnboxing不需要。顺便说一下,String也