草庐IT

long-integer

全部标签

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 - 在 Gingerbread 中水平滑动后未触发操作栏的 onNavigationItemSelected(int position, long itemId)

我已经实现了选项卡View以及水平滑动View(以更改选项卡),导航模式作为应用程序的列表。我正在使用ActionBarSherlock和TabPageIndicator。更改标签后,我使用fragment重新加载内容。在下拉微调器中,我有2个项目。每当Activity重新加载或点击选项卡后,这些都会被选中。但是,如果执行滑动以选择其他选项卡,则在Gingerbread版本中不会触发onNavigationItemSelected(intposition,longitemId):(我们已经在Gingerbread2.3.6、2.3.3上进行了测试。在logcat中,我收到了这个warn

java - 主键类型 : int vs long

我知道一些软件商店因使用int类型作为持久类的主键而被烧毁。话虽如此,并非所有表格都超过20亿张。事实上,大多数人都没有。那么,你们是只对那些映射到潜在大表的类使用long类型,还是为了保持一致而对每个持久类使用long类型?行业共识是什么?我将暂时搁置这个问题,以便您与我们分享您的成功/恐怖故事。 最佳答案 即使表没有增长到超大,但具有高周转率,即如果经常删除/插入行,Long也可能是有利的。您的自动生成/顺序唯一标识符可能会在表格保持较小时增加到较大的数字。我通常使用Long,因为在我的大多数项目中性能优势并不明显,但是由于溢出

java - matlab - 如何从返回 long 的 Java 方法中获取 int64?

根据Matlabdocumentation,当一个Java方法返回一个long时,它在Matlab中赋值之前被转换为一个double。精度已丢失。我对Java方法返回的long的低位感兴趣。double不能表示它们,但Matlab的int64可以。(考虑到这两种类型都有64位,这一点很清楚,而double使用其中的一些来表示指数。)如果我可以控制Java代码,我可以返回一个包含一个元素的数组,其中包含long—在这种情况下,Matlab将它们保存为int64,但是就我而言,我正在调用一个库函数。目前,我能看到的最好方法是用Java编写一个包装器,它将调用该方法并在数组中返回答案。但是这

java - Long.valueOf(java.lang.String) 和 new Long(java.lang.String) 的区别?

我正在合并由两个不同的人编写的代码,并注意到将String值转换为Long有两种不同的方式。Coder#1已经这样做了:StringstrId="12345678";...LonglId=newLong(strId);虽然2号编码器已经这样做了:StringstrId="12345678";...LonglId=Long.valueOf(strId);在功能上,代码的运行方式完全相同。每个位周围都有一个try/catchblock来处理抛出的任何NumberFormatException。传入的字符串值是一个代表小数的8位字符串:"12345678"并且在这两种情况下都正确转换为Lon

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 - 如何使用 UUID 生成唯一的正 Long

我需要为我的数据库主键列生成唯一的Longid。我认为我可以使用UUID.randomUUID().getMostSignificantBits()但有时它会产生一些负长,这对我来说也是个问题。是否可以只从UUID生成正长?会有数十亿个条目,所以我希望每个生成的key都必须是唯一的。 最佳答案 UUID.randomUUID().getMostSignificantBits()&Long.MAX_VALUE这样做的原因是,当你用1进行按位&时,它允许相同的数字通过,而当你用0进行按位&时,它会阻止它,结果为0。现在,二进制的Long

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在一个long中存储两个整数

我想在long中存储两个整数(而不是每次都创建一个新的Point对象)。目前,我尝试过这个。它不起作用,但我不知道它有什么问题://xandyareintslongl=x;l=(l我得到这样的int值:x=(int)l>>32;y=(int)l&0xffffffff; 最佳答案 y在第一个片段中得到符号扩展,这将覆盖x与-1每当y.在第二个片段中,转换为int在类次之前完成,所以x实际上得到y的值.longl=(((long)x)>32);inty=(int)l; 关于Java在一个lo