Questions tagged «java»

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

9
什么时候执行该类的静态块?
我有2个罐子,我们称它们为a.jar和b.jar。 b.jar取决于a.jar。 在a.jar中,我定义了一个类,我们称它为StaticClass。在StaticClass中,我定义了一个静态块,调用了一个名为“ init”的方法: public class StaticClass { static { init(); } public void static init () { // do some initialization here } } 在b.jar中,我有一个main,因此在main中,我希望已经调用了init()方法,但实际上没有。我怀疑这是因为jvm尚未加载StaticClass,谁能告诉我 我的结论正确吗? 是什么触发了jvm加载类? 如何获得自动执行的静态块? 谢谢




6
使用String.format的Java十进制格式?
我需要将一个十进制值格式化为一个字符串,在该字符串中,我总是以至少2个小数和最多4个小数显示。 所以举个例子 "34.49596" would be "34.4959" "49.3" would be "49.30" 可以使用String.format命令完成此操作吗? 还是在Java中有更简单/更好的方法来做到这一点。



9
如何为Eclipse项目更改JDK版本
我需要编写一个仅与Java 1.5兼容的项目。我已经安装了Java 1.6。是否存在某种形式的向后兼容性以使Eclipse用1.5进行编译? 我必须安装Java 1.5才能在此处显示它吗?也许还有另一种方法? 。
73 java  eclipse  jar 

13
如何确定列表是否用Java排序?
我想要一种方法,该方法采用List<T>whereT实现Comparable并返回,true或者false取决于列表是否已排序。 用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类事情,但我正陷入困境。 如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。

4
Java 8的字符串重复数据删除功能
由于String在Java(与其他语言一样)中由于每个字符占用两个字节而占用大量内存,因此Java 8引入了一项称为String Deduplication的新功能,该功能利用了char数组在字符串和final内部的事实,因此JVM会和他们混在一起。 到目前为止,我已经阅读了这个示例,但是由于我不是专业的Java程序员,因此我很难理解这个概念。 它是这样说的, 已经考虑了多种用于字符串复制的策略,但是现在实现的策略遵循以下方法:每当垃圾收集器访问String对象时,它都会记录char数组。它获取其哈希值并将其与对数组的弱引用一起存储。一旦找到另一个具有相同哈希码的String,便将其逐字符进行比较。如果它们也匹配,则将修改一个String并指向第二个String的char数组。然后,第一个char数组不再被引用,可以被垃圾回收。 这整个过程当然会带来一些开销,但是受到严格的限制。例如,如果一段时间内未发现重复字符串,则将不再检查该字符串。 我的第一个问题 由于该主题是最近在Java 8 update 20中添加的,因此仍然缺少有关该主题的资源,在这里的任何人都可以分享一些有关如何帮助减少StringJava消耗的内存的实际示例吗? 编辑: 上面的链接说, 一旦找到另一个具有相同哈希码的字符串,便将它们逐个字符地进行比较 我的第二个问题 如果两个哈希码String相同,则Strings已经是相同的,那么为什么对它们进行比较char的char,一旦发现,这两个String具有相同的散列码?
73 java  string  java-8 


7
空时获取空字符串
我想获取字段的字符串值(它们可以是长字符串或任何对象的类型), 如果一个字段为空,那么它应该返回空字符串,我用番石榴做过; nullToEmpty(String.valueOf(gearBox)) nullToEmpty(String.valueOf(id)) ... 但是如果gearbox为null,则返回null!非空字符串,因为valueOf methdod返回字符串“ null”,这会导致错误。 有任何想法吗? EDIt:有100多个字段,我正在寻找易于实现的字段
73 java  guava 


8
如何强制Gradle为两个依赖项设置相同的版本?
我使用以下两个依赖项: compile 'com.google.guava:guava:14.0.1' compile 'com.google.guava:guava-gwt:14.0.1' 两者必须为同一版本才能正常工作。由于我的其他依赖项使用更高的版本,因此Gradle为每个依赖项使用不同的版本。 我通过运行发现了这一点gradle dependencies: compile - Compile classpath for source set 'main'. +--- com.google.guava:guava:14.0.1 -> 17.0 +--- com.google.guava:guava-gwt:14.0.1 | +--- com.google.code.findbugs:jsr305:1.3.9 | \--- com.google.guava:guava:14.0.1 -> 17.0 如何强制Gradle为这两个依赖项设置相同的版本?

20
如何在Eclipse中更改软件包名称?
在Eclipse中,我有一个简单的Java项目,其中包含一个名为(默认程序包)的程序包,并且在该程序包中有一个类。 我想将此软件包重命名为:com.myCompany.executable 我尝试选择(默认程序包)--->右键单击--->重构,但是现在我只看到一个名为:推断通用类型参数的声音,但看不到更改程序包名称的可能性。 为什么?我要在Eclipse中做什么以更改软件包的名称?

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.