Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

6
如果仅添加新表,则迁移会议室数据库
假设我有一个简单的Room数据库: @Database(entities = {User.class}, version = 1) abstract class AppDatabase extends RoomDatabase { public abstract Dao getDao(); } 现在,我要添加一个新实体:Pet并将版本增加到2: @Database(entities = {User.class, Pet.class}, version = 2) abstract class AppDatabase extends RoomDatabase { public abstract Dao getDao(); } 当然,Room会引发异常: java.lang.IllegalStateException: A migration from 1 to 2 is necessary. 假设我没有更改User类(因此所有数据都是安全的),我必须提供仅创建一个新表的迁移。因此,我正在研究Room生成的类,搜索生成的查询以创建我的新表,将其复制并粘贴到迁移中: final Migration …

10
HashTables如何处理冲突?
我在我的学位课程中听说,HashTable如果新的Key条目与另一个碰撞,则a 将在“下一个可用”存储桶中放置一个新条目。 HashTable如果使用碰撞键向后调用时发生碰撞,仍然会如何返回正确的值? 我假设Keysare String类型,并且hashCode()返回说Java生成的默认值。 如果我实现自己的哈希函数并将其用作查找表的一部分(即a HashMap或Dictionary),那么存在哪些处理冲突的策略? 我什至看到与质数有关的注释!Google搜索中的信息不太清楚。

7
Mockito-@间谍vs @Mock
Mockito-我知道间谍在对象上调用真实方法,而模拟对象在double对象上调用方法。除非有代码气味,否则也应避免间谍活动。但是,间谍如何工作,我什么时候应该实际使用它们?它们与模拟游戏有何不同?

30
Eclipse的隐藏功能
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 好的,这可能是一个me脚的问题,但是每个人对这些东西的使用方式都不一样。该IDE最好的省时方法是什么? 汤姆
97 java  eclipse  ide 

9
将小数位移至两倍
所以我将double设置为1234,我想将小数点后移至12.34 因此,我将.1乘以1234两次,就像这样 double x = 1234; for(int i=1;i<=2;i++) { x = x*.1; } System.out.println(x); 这将打印结果“ 12.340000000000002” 有没有一种方法,不用简单地将其格式化为两位小数,就可以正确地存储双重存储12.34?
97 java  double  decimal 

14
为什么要避免铸造?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 改善这个问题 通常我会尽可能避免转换类型,因为我认为这是不良的编码实践,并且可能会导致性能下降。 但是,如果有人要我解释为什么会这样,我可能会像头灯中的鹿一样看着它们。 那么,为什么/何时铸造不好? 它对于Java,C#,C ++是通用的,还是每个不同的运行时环境都按照自己的方式处理? 欢迎使用任何语言的细节,例如为什么在c ++中不好?
97 c#  java  c++  casting 

22
确定井字游戏的算法
我已经用Java编写了一个井字游戏,而我目前确定游戏结束的方法说明了游戏结束的以下可能情况: 董事会成员已满,尚未宣布获胜者:游戏是平局。 克罗斯赢了。 圈子赢了。 不幸的是,这样做会从表中读取这些方案的预定义集。考虑到一个棋盘上只有9个空格,这并不一定很糟糕,因此桌子有些小,但是有更好的算法来确定游戏是否结束吗?确定某人是否中奖是问题的关键,因为检查9个空格是否已满是微不足道的。 表方法可能是解决方案,但是如果不是,那是什么?另外,如果板子尺寸n=9不对怎么办?如果它是一个更大的板,比如n=16,n=25等,造成连续放置物品的数量取胜是x=4,x=5等?适用于所有对象的通用算法n = { 9, 16, 25, 36 ... }?

14
无法导入新的Gradle项目:无法找到Build Tools版本* .0.0
当我启动Android Studio并选择“新建项目...”并完成创建新项目时,出现以下弹出错误: 无法导入新的Gradle项目:找不到Build Tools版本17.0.0 有关更多详细信息,请查阅IDE日志(“帮助” |“显示日志”) 我很想查阅IDE日志,但我什至没有设法进入应用程序来执行任何事情。我已经多次浏览了首选项,以查看是否可以为构建工具设置路径,但是却找不到很多东西。如何解决此问题,或者如何在不打开项目的情况下进入应用程序,以便至少可以查看日志?

6
用Java中的另一个替换String
什么功能可以用另一个字符串替换一个字符串? 实例1:将替代哪些"HelloBrother"用"Brother"? 例2:将替代哪些"JAVAISBEST"用"BEST"?
97 java  string 

9
Java 32位与64位兼容性
针对32位JDK构建和编译为32位字节代码的Java代码是否可以在64位JVM中工作?还是64位JVM需要64位字节代码? 为了提供更多细节,我有在运行32位JVM的Solaris环境中工作的代码,但是现在将JDK和Weblogic Server升级到64位后遇到了问题。

3
Java to Clojure重写
我公司刚刚要求我用Clojure重写一个大型的(50,000行单行代码)Java应用程序(使用JSP和servlet的Web应用程序)。还有其他人知道我应该注意的提示吗? 请记住,我非常了解Java和Clojure。 更新资料 我进行了重写,并投入生产。这很奇怪,因为重写的速度如此之快,以至于大约需要6周的时间。因为仍然不需要很多功能,所以最终得到了大约3000行Clojure。 我听说他们对系统及其按自己要求的方式感到满意。唯一的缺点是,维护系统的人必须从头开始学习Clojure,他被踢入脚踢并尖叫。前几天我确实接到了他的电话,说他现在爱Lisp了。 另外,我也要对Vaadin表示赞赏。使用Vaadin可能会像Clojure一样节省大量时间,并且缩短代码。(请注意,Vaadin和ClojureScript均在后台使用Google的GUI框架。)
97 java  clojure  vaadin 

11
使String的第一个字符小写的最有效方法?
使String小写的第一个字符最有效的方法是什么? 我可以想到许多方法来做到这一点: 使用charAt()与substring() String input = "SomeInputString"; String output = Character.toLowerCase(input.charAt(0)) + (input.length() > 1 ? input.substring(1) : ""); 或使用char数组 String input = "SomeInputString"; char c[] = input.toCharArray(); c[0] = Character.toLowerCase(c[0]); String output = new String(c); 我相信还有许多其他好的方法可以实现这一目标。您有什么推荐的吗?

10
将浮点数转换为两倍而不损失精度
我有一个原始浮点数,需要作为原始双数。简单地将浮法转换为两倍会给我带来额外的精度。例如: float temp = 14009.35F; System.out.println(Float.toString(temp)); // Prints 14009.35 System.out.println(Double.toString((double)temp)); // Prints 14009.349609375 但是,如果我不是强制类型转换,而是将浮点数输出为字符串,然后将字符串解析为双精度,那么我得到的是: System.out.println(Double.toString(Double.parseDouble(Float.toString(temp)))); // Prints 14009.35 有没有比String返回更好的方法了?

11
函数过早返回的效率
作为一个缺乏经验的程序员,我经常遇到这种情况,尤其是对于我要优化的一个雄心勃勃,速度密集的项目,我感到特别奇怪。对于主要的类C语言(C,objC,C ++,Java,C#等)及其常用的编译器,这两个函数是否会同样高效地运行?编译后的代码有什么区别吗? void foo1(bool flag) { if (flag) { //Do stuff return; } //Do different stuff } void foo2(bool flag) { if (flag) { //Do stuff } else { //Do different stuff } } 基本上来说,提早break或return提早有过直接的效率红利/罚金吗?堆栈框架如何参与?是否有优化的特殊情况?是否有任何因素(例如内联或“内容”的大小)会对此产生重大影响? 我一直支持通过次要优化来提高可读性(我在参数验证中经常看到foo1),但是这种情况经常出现,因此我想一劳永逸地抛开所有烦恼。 而且我知道过早优化的陷阱...呃,那是一些痛苦的回忆。 编辑:我接受了一个答案,但是EJP的答案非常简洁地解释了为什么使用a return几乎可以忽略不计(在汇编中,return到函数末尾创建一个“分支”,这非常快。分支会更改PC寄存器和可能还会影响缓存和管道,这是很小的。)特别是在这种情况下,它实际上没有任何区别,因为if/else和和都return创建了到函数末尾的相同分支。

9
为什么我不是原子++?
为什么i++在Java中不是原子的? 为了更深入地了解Java,我尝试计算线程中的循环执行的频率。 所以我用了 private static int total = 0; 在主要班级。 我有两个线程。 线程1:打印 System.out.println("Hello from Thread 1!"); 线程2:打印 System.out.println("Hello from Thread 2!"); 我计算了线程1和线程2打印的行数,但是线程1的行+线程2的行数与打印出的行总数不匹配。 这是我的代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; public class Test { private static int total = 0; private static int countT1 = 0; private static int …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.