草庐IT

random_integer

全部标签

java - 为什么 Random 类不是静态的?

在Java中,我们有静态类Math。您不需要创建它的对象,所以它是静态的。另一个是随机类。我们不需要创建它的实例,那为什么它也不是静态的呢?我的类(class)我经常使用随机数,当必须在每个类(class)中创​​建字段rand以生成随机数时,我会很生气。那么为什么它不是静态的呢? 最佳答案 Random类有状态,包括它在序列中的位置,因为产生的值并不是真正随机的,只是一个伪随机序列。这可以通过用相同的种子初始化两个实例来证明。Randoma=newRandom(123);Randomb=newRandom(123);for(int

java - 是否保证 new Integer(i) == i 在 Java 中?

考虑以下代码段:inti=99999999;byteb=99;shorts=9999;Integerii=Integer.valueOf(9);//shouldbewithincacheSystem.out.println(newInteger(i)==i);//"true"System.out.println(newInteger(b)==b);//"true"System.out.println(newInteger(s)==s);//"true"System.out.println(newInteger(ii)==ii);//"false"很明显为什么最后一行会总是输出"fals

java - 为什么 Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?

System.out.println(Integer.MAX_VALUE+1==Integer.MIN_VALUE);是真的。我知道Java中的整数是32位的,不能超过231-1,但我不明白为什么在其MAX_VALUE结果中加1在MIN_VALUE而不是某种异常。更不用说像Ruby那样将透明转换为更大的类型。此行为是否在某处指定?我可以依赖它吗? 最佳答案 因为整数溢出。当它溢出时,下一个值是Integer.MIN_VALUE。RelevantJLSIfanintegeradditionoverflows,thentheresult

java - 为什么 Integer 类的 Integer.valueOf 方法中使用了 assert?

我正在研究Integer类实际上是如何使用缓存对象的,我在Integer.valueOf方法中找到了以下代码:publicstaticIntegervalueOf(inti){assertIntegerCache.high>=127;if(i>=IntegerCache.low&&i我的问题是:assertIntegerCache.high>=127;有什么用assertprovidesaneffectivewaytodetectandcorrectprogrammingerrors.但这是运行时代码,为什么会有人使用断言?在这种情况下它什么时候会抛出AssertionError?

java - 如何从 Java 中的 Random 中获取种子?

我正在为某个对象创建一个深度克隆。该对象包含一个Random。从Random中检索种子是一种好习惯吗?如果是这样,怎么做?没有Random.getSeed()。 最佳答案 获取种子的一种更简单的方法是生成一个并将其存储为种子。我正在将这种方法用于游戏,并希望让玩家可以选择生成完全相同的世界,如果他也愿意的话。因此,首先我创建一个没有种子的Random对象,然后让该对象生成一个随机数并在另一个随机对象中使用它作为种子。每当玩家想要关卡的种子时,我都会将它存储在某个地方。默认情况下,游戏仍然是随机的。Randomrand=newRand

java - 从 Java 8 开始有什么理由写 `new Random()` 吗?

出于某种原因,我曾经认为java.util.Random是线程不安全的,例如HashMap或BitSet,并且Math.random()被实现为使用synchronizedblock包装对Random的访问,或ThreadLocalRandom.current().nextDouble().其实java.util.Randomisthread-safe(通过原子)。因此,要点:即使我需要在单个线程中进行一些随机输入,使用ThreadLocalRandom也是有意义的,因为内部没有原子读写,编译为锁定指令并发出内存屏障。此外,由于Java8,ThreadLocalRandom本质上是一个

java - new Integer(123)、Integer.valueOf(123) 和 just 123 之间的区别

最近我看到这样的代码(Java):myMethod(newInteger(123));我目前正在重构一些代码,Sonar工具中有一个提示,使用这样的东西对内存更友好:myMethod(Integer.valueOf(123));但是在这种情况下,我认为如果我会使用没有区别:myMethod(123);我可以理解,如果我将变量传递给方法,但硬编码int?或者如果会有Long/Double等,我想要Long表示数字。但是整数? 最佳答案 newInteger(123)将为每个调用创建一个新的Object实例。根据javadoc,Inte

java - 如何将 Java HashSet<Integer> 转换为原始 int 数组?

我有一个HashSet有一堆Integers在里面。我想把它变成一个数组,但是调用hashset.toArray();返回Object[].有没有更好的方法将其转换为int的数组?除了手动遍历每个元素?我想将数组传递给voiddoSomething(int[]arr)它不会接受Object[]数组,即使我尝试像一样转换它doSomething((int[])hashSet.toArray()); 最佳答案 您可以创建int[]来自任何Collection(包括HashSet)使用Java8流:int[]array=coll.stre

java - 如何在 Java 中将 Integer[] 转换为 int[] 数组?

有没有一种奇特的方法可以将Integer数组转换为int数组?(我不想遍历每个元素;我正在寻找一种优雅而快速的方式来编写它)我正在使用另一种方式scaleTests.add(Arrays.stream(data).boxed().toArray(Double[]::new));我正在寻找单线但找不到东西。目标是:int[]valuesPrimitives=Integer[]valuesWrapper 最佳答案 您可以使用Java8的StreamAPIint[]intArray=Arrays.stream(array).mapToIn

Java:将 List<Integer> 转换为字符串

如何转换ListtoString?例如。如果我的List包含数字12和3如何将其转换为String="1,2,3"?每一个帮助将不胜感激。 最佳答案 我想你可以简单地使用List.toString()如下:ListintList=newArrayList();intList.add(1);intList.add(2);intList.add(3);StringlistString=intList.toString();System.out.println(listString);//如果您不想在字符串中出现[],只需使用子字符串,例