草庐IT

unsigned-long-long-int

全部标签

java - 比较java中的两个原始long变量

标题是不言自明的。我正在从C#转向Java。我有一个对象和一个返回其ID的getter方法。我想比较两个相同类型的对象的ID,并检查它们的ID值是否相等。尝试过:obj.getId()==obj1.getId();Longid1=obj.getId();Longid2=obj1.getId();assertTrue(id1.equals(id2))assertTrue(id1==id2) 最佳答案 在Java中:==运算符告诉您两个操作数是否是相同对象(实例)。Long上的.equals()方法告诉您它们是否相等。但你也不应该这样做

java - 如果对 int 变量的写入和读取是原子的,为什么需要 AtomicInteger?

我读过Oracledocs那:Readsandwritesareatomicforreferencevariablesandformostprimitivevariables(alltypesexceptlonganddouble).(我猜这个特性已经被添加到一些新的JDK版本中,因为我曾经认为所有原始变量的读/写都不是原子的)这是否意味着AtomicInteger已被弃用并且不应在新项目中使用? 最佳答案 虽然从普通int中单个存储或单个加载在Java中是原子的,但您不能以原子方式递增它.这样做需要您首先加载该值,然后根据它计算新

java - 更有效地检查 int 是否为素数

我最近参加了学校的小型Java编程竞赛。我和我的搭档刚刚完成了我们的第一个纯oop类(class),大部分问题都超出了我们的范围,所以我们选择了这个(我稍微解释了一下):“给定一个输入整数n返回下一个素数int和它的反面也是质数,例如,如果n=18,您的程序应该打印31",因为31和13都是质数。然后,您的.class文件将传递一个包含1-2,000,000,000之间所有可能数字的测试用例,并且它必须在10秒内返回正确答案才能被视为有效。我们找到了解决方案,但如果测试用例较大,则需要10秒以上的时间。我相当确定有一种方法可以将循环范围从n,..2,000,000,000向下移动,因为

java - 将 int 值拆分为单独的数字

我想将我的int值拆分成数字。例如,如果没有。是542,结果应该是5,4,2。我有两个选择。1)将int转换为String&然后使用getCharArray(),我可以有单独的字符&然后我将它们转换回int值。2)将int转换为String,但不将其转换为char数组,迭代它并获取所有数字。有没有其他方法可以解决这个问题。如果不是,哪个选项会很快? 最佳答案 Listdigits(inti){Listdigits=newArrayList();while(i>0){digits.add(i%10);i/=10;}returndigi

java - 为什么 "int i = (byte) + (char) - (int) + (long) - 1"是 1?

这个问题在这里已经有了答案:Weirdjavabehaviorwithcaststoprimitivetypes(3个答案)关闭8年前。我在网上偶然发现了这段代码publicclassTest{/***@paramargs*/publicstaticvoidmain(String[]args){inti=(byte)+(char)-(int)+(long)-1;System.out.println(i);}}它打印1。我能知道为什么吗?这是来源-->http://www.javacodegeeks.com/2011/10/weird-funny-java.html

java - "long x = 1/2"等于 1 还是 0,为什么?

这个问题在这里已经有了答案:Integerdivision:Howdoyouproduceadouble?(11个答案)关闭7年前。如果我有类似的东西:longx=1/2;这不应该四舍五入为1吗?当我在屏幕上打印它时,它显示为0。

java - int[] array 和 int array[] 的区别

最近一直在思考两种定义数组的方式的区别:int[]数组int数组[]有区别吗? 最佳答案 它们在语义上是相同的。添加intarray[]语法只是为了帮助C程序员习惯java。int[]array更可取,而且不会造成混淆。 关于java-int[]array和intarray[]的区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3846080/

Java 1.7 + JSCH : java. security.InvalidKeyException: Key is too long for this algorithm

我正在尝试使用JSCH将文件上传到远程SFTP分享。每次我尝试从我的代码中连接到共享时,我都会得到一个看起来像这样的异常:com.jcraft.jsch.JSchException:Session.connect:java.security.InvalidKeyException:Keyistoolongforthisalgorithmatcom.jcraft.jsch.Session.connect(Session.java:558)~[jsch-0.1.51.jar:na]atcom.jcraft.jsch.Session.connect(Session.java:183)~[js

java - Arrays.copyOfRange(byte[], int, int) 奇怪行为背后的逻辑是什么?

任何人都可以向我解释Arrays.copyOfRange(byte[],int,int))的奇怪行为背后的逻辑吗??我可以用简单的例子来说明我的意思:byte[]bytes=newbyte[]{1,1,1};Arrays.copyOfRange(bytes,3,4);//Returnssingleelement(0)arrayArrays.copyOfRange(bytes,4,5);//ThrowsArrayIndexOutOfBoundsException在这两种情况下,我都将范围复制到数组边界之外(即start>=array.length),因此错误条件至少对我来说很奇怪(如果是

java - 在 Java 序列化中,为什么 J 表示 long 而 L 表示对象?

当您在Java中序列化一个对象时,字母J用于表示下一个字节代表一个long,字母L用于表示一个Object是接下来,但为什么呢?为什么不将O用于Object而将L用于long? 最佳答案 这些字母肯定是因为冲突而被选择的。对这种冲突的猜测:C被取为char。因此,他们使用L表示class。L被选为类(class)。因此,他们使用J表示long。B被取为byte。因此,他们使用Z作为boolean值。顺便说一句,'L'并不意味着'Object',而是'fully-qualified-class'。