草庐IT

int_types

全部标签

java - Random.nextInt(int) [稍微] 有偏差

即,它永远不会使用某些特定的upperBound参数连续生成超过16个偶数:Randomrandom=newRandom();intc=0;intmax=17;intupperBound=18;while(c在此示例中,代码将永远循环,而当upperBound为16时,它会快速终止。这种行为的原因可能是什么?该方法的javadoc中有一些注释,但我未能理解它们。UPD1:代码似乎以奇数上限终止,但可能卡在偶数上限UPD2:我修改了代码以按照评论中的建议捕获c的统计信息:Randomrandom=newRandom();intc=0;longtrials=10){while(c0){in

java - 为什么在 java src 中 Integer 类的 toString 方法中使用负 int 进行 mod 操作

我在看java1.7.0_09版本的源码时,发现Integer类的toString方法的实现是用负int来计算模运算,有什么意义吗?代码如下:publicstaticStringtoString(inti,intradix){if(radixCharacter.MAX_RADIX)radix=10;/*Usethefasterversion*/if(radix==10){returntoString(i);}charbuf[]=newchar[33];booleannegative=(i 最佳答案 根据该算法,您需要一个小的()非负

java - long.Class 和 Long.TYPE 的区别

他们是否都返回相同的东西,即LongClass。实际上我在PrivilegedAccessor中使用它来传递如下PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{long.class,Date.class});或者我可以使用PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{Long.TYPE,Date.class});考虑到自动装箱/拆箱的开销,使用

java - 在 Java 中模拟鸭子类型(duck typing)

问题:我希望能够在Java中一般地访问Javaojbect上的任何属性/字段,类似于动态语言(想想Groovy,JavaScript)会。我在编写此管道代码时不知道它是什么类型的对象或属性/字段名称是什么。但是当我去使用它时我会知道属性/字段名称。我当前的解决方案:到目前为止,我已经编写了一个使用java.beans.Introspector的简单包装类获取Bean/POJO的属性并将它们公开为Map.它很粗糙,但适用于简单的情况。我的问题是,除了反射/转换为Map之外,还有哪些其他方法可以解决这个问题?在我走得更远之前,我想知道是否有人知道我如何从Rhino或javax.script

Java 字节码 : types of local variables?

根据这篇文章http://slurp.doc.ic.ac.uk/pubs/observing/linking.html#assignment:DuetothedifferencesininformationbetweenJavacodeandbytecode(bytecodedoesnotcontainthetypesoflocalvariables),theverifierdoesnotneedtochecksubtypesforassignmentstolocalvariables,ortoparameters.我的问题:为什么字节码不包含局部变量的类型信息,而它确实包含参数和返回

java - Clojure deftype : how to constrain field types?

我正在尝试编写一个可以从Java使用的Clojure库,而用户不知道它是用Clojure编写的。为此,我需要我的字段具有正确的类型:我喜欢我能做到这一点:(deftypePoint[^doublex^doubley])这会为x/y生成一个具有适当类型的类。然而,这似乎只适用于原语,不适用于类:(deftypeFoo[^Stringbar])生成一个:publicfinalObjectbar;我期望的地方:publicfinalStringbar;有没有办法限制字段类型?deftype/defrecord之外还有其他选项吗? 最佳答案

java - int 基本类型的 volatile 声明

我在AtomicAccess上引用了Oracle的Java文档Readsandwritesareatomicforreferencevariablesandformostprimitivevariables(alltypesexceptlonganddouble).Readsandwritesareatomicforallvariablesdeclaredvolatile(includinglonganddoublevariables).我了解volatile的工作原理。但是提到需要为long和double变量显式声明volatile以在第二个语句中获得原子访问,这使得volatile

java - 将 byte 或 int 转换为 bitset

我有以下内容:intnum=Integer.parseInt(lineArray[0]);bytenumBit=num&0xFF;有什么非常简单的方法可以将numBit转换为位数组吗?或者更好的是,有没有办法绕过int的字节转换并直接从num到位数组?谢谢 最佳答案 如果你想要一个BitSet,尝试:finalbyteb=...;finalBitSetset=BitSet.valueOf(newbyte[]{b});如果你想要一个boolean[],staticboolean[]bits(byteb){intn=8;finalboo

java - 为什么java中的 "super type token"模式需要匿名类

在NealGafter的“父类(superclass)型标记”模式(http://gafter.blogspot.com/2006/12/super-type-tokens.html)中,使用匿名对象传递参数化类型:classReferenceType{}/*anonymoussubclassof"ReferenceType"*/ReferenceType>referenceType=newReferenceType>(){};TypesuperClass=b.getClass().getGenericSuperclass();System.out.println("supertype

java - 在 Java 中比较 BigDecimal 和 int

在Java中比较BigDecimal和int的最佳方法是:将BigDecimal转换为int还是将int转换为BigDecimal? 最佳答案 如果您希望BigDecimal值非常大(即超出int值的范围,即-231到231-1)和/或包含十进制数字,或者只是想安全起见,您应该将int转换为BigDecimal以避免溢出/截断错误。否则,如果性能是一个非常大的问题(这种情况很少见),则反过来可能会更好。 关于java-在Java中比较BigDecimal和int,我们在StackOver