草庐IT

java - 为什么 .equals() 在比较两个对象时会导致断言错误……但只是有时?

我正在为代码学校的一个项目进行单元测试,.equals()给我带来了一些麻烦。在我的项目中,.save()正在保存到SQL数据库中。此代码通过了单元测试:@Testpublicvoidsave_assignsNameToObject(){RestauranttestRestaurant=newRestaurant("PokPok","503-444-4444");testRestaurant.save();RestaurantsavedRestaurant=Restaurant.all.get(0);assertEquals(savedRestaurant.getName(),"Pok

java - 为什么 java.time.Clock 有时区信息?

为什么java.time.Clock有时区信息?在调用instant()方法时,您只能从Clock获得Instant-这是没有时区信息的时间。是让时钟中的区域可用的唯一目的,例如像这样创建一个ZonedDateTime?ZonedDateTime.ofInstant(clock().instant(),clock().getZone())那么在Clock类中使用zonedDateTime()方法是否有意义? 最佳答案 备用时钟行为引用Clock文档(强调我的):UseofaClockisoptional.Allkeydate-tim

java - Swing 模态对话框拒绝关闭 - 有时!

//Thisissupposedtoshowamodaldialogandthenhideitagain.Inpractice,//thisworksabout75%ofthetime,andtheother25%ofthetime,thedialog//staysvisible.//ThisisonUbuntu10.10,running://OpenJDKRuntimeEnvironment(IcedTea61.9)(6b20-1.9-0ubuntu1)//Thisalwaysprints//setVisible(true)abouttohappen//setVisible(fals

java - 为什么在 Java servlet 的 session 中设置属性有时会失败?

我正在开发一个相当简单的Web应用程序,它使用JSP和Javaservlet,在tomcat上运行。我已经能够在servlet的session中设置属性,以便将信息传递给JSP,然后将其呈现给用户。我已经用不同类的几个不同对象完成了此操作,并且效果很好。突然间,当我设置特定类型的对象(包含配置信息)时,该属性根本没有显示在JSP中。我设置的其他属性仍然存在,但是配置对象完全丢失了。我打印了属性名称列表,但我使用的名称甚至不存在(尽管我设置的其他属性的其他名称存在)。什么会导致这种情况?我的配置类没有什么不同或奇怪的地方。我真的很感激任何关于什么样的事情可能导致这种行为的想法。我用谷歌搜

Java GUI 编译没有错误,但有时什么都不显示

我正在使用扩展JFrame的自定义类,但有时它什么也不显示。我从来没有遇到过任何错误,所以我很好奇这是否是一个可以帮助我打印某些东西的java命令。我环顾四周寻找其他问题,但没有发现任何相似之处。并没有真正做任何太疯狂的事情,但很好奇为什么会这样。我想更正问题以避免将来出现问题。空白界面publicMemberPanel(inti)throwsIOException{ContainercontentPane=getContentPane();GridLayoutlayout=newGridLayout(2,1);contentPane.setLayout(layout);setVisi

java - 为什么我们有时使用十六进制格式而不是十进制?

我已经阅读了关于的解释inta=0x1;//hexadecimalformat但是,我仍然找不到程序员应该使用0x1、0x2而不是普通整数1或2的原因...有人可以解释一下吗?谢谢。 最佳答案 与十进制相比,人们更喜欢十六进制表示的原因有很多。计算中最常见的是bitfields.一些人已经提到了颜色代码,例如:red=0xFF0000//16711680indecimalgreen=0x00FF00//65280indecimalblue=0x0000FF//255indecimal请注意,这种颜色表示不仅比试图找出像213545这

java - 为什么双加有时对有时错?

我知道java有double陷阱,但为什么有时近似结果可以,但有时却不行。代码如下:for(floatvalue=0.0f;value结果是这样的:0.00.10.20.3...0.700000050.80000010.9000001 最佳答案 如您所述,并非所有数字都可以在IEEE754中准确表示。结合Java用于打印这些数字的规则,这会影响您将看到的内容。作为背景,我将简要介绍IEEE754的错误。在这种特殊情况下,0.1无法准确表示,因此您经常会发现实际使用的数字类似于0.100000001490116119384765625

java - 为什么在 Guava 中过滤/转换函数有时返回可修改的 View 而有些返回不可修改的 View ?

例如,所有Lists、Collections2、Sets都返回一个可修改的View-从View集合中删除将删除原始项目。这很好用:Listlist=Lists.newArrayList(1,2,3,4,5,6,-1,-2,-3,-4);Collectiontransform=Collections2.filter(list,newPredicate(){publicbooleanapply(Integerinput){returninput.intValue()>0;}});transform.clear();当我使用Iterables和Iterators方法过滤/转换时,我得到了不可

java - 为什么有时不能使用 "=="关系运算符代替 .equals() 方法来比较对象?

这个问题在这里已经有了答案:HowdoIcomparestringsinJava?(23个回答)Comparetwoobjectswith.equals()and==operator(16个答案)关闭7年前。我在一本书上查了一下,这本书的解释通常比网站更透彻。以此为例:if(nickname=="Bob")只有当nickname指的是同一个String对象时,条件才为真。这里有一句话我觉得很迷惑,谁能解释一下为什么会这样:Forefficiency,Javamakesonlyonestringobjectforeverystringconstant.书上指出,组装对象“Bob”的方式也

java - 为什么将 -Xmx 设置得太高有时会导致 JVM 失败,即使有可用的 RAM?

基本上我们注意到,在某些计算机上设置JVM选项-Xmx(最大堆大小)有时会导致JVM无法初始化,即使系统上有足够的RAM。因此,例如,在4gb机器上,我们有-Xmx1024m失败但-Xmx800m工作。我可以理解在1gb机器上,甚至是2gb机器上,但在4gb机器上,特别是考虑到Windows、Linux等可以交换RAM,为什么会失败?我已经看到很多主题和问题都在说要减少最大堆大小,但没有人能解释为什么它会失败,而这正是我真正想要的。还有,你怎么说消耗多少内存到一定大小呢? 最佳答案 这可能是由于virtualaddressspace