Questions tagged «java»

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

27
什么是枚举,为什么有用?
今天,我浏览了该站点上的一些问题,发现提到了enum 以单例模式使用这种方法,据称该解决方案具有线程安全优势。 我从未使用过enums,并且我使用Java编程已经有两年多了。显然,他们改变了很多。现在,他们甚至在自己内部提供了对OOP的全面支持。 现在为什么要在日常编程中使用枚举?为什么?
488 java  enums 

29
如何获取Java文件的文件扩展名?
为了清楚起见,我不是在寻找MIME类型。 假设我输入以下内容: /path/to/file/foo.txt 我想要一种分解此输入的方法,特别.txt是扩展。在Java中是否有任何内置方法可以做到这一点?我想避免编写自己的解析器。
484 java  file  io 

8
在java.time.LocalDateTime和java.util.Date之间进行转换
Java 8具有用于日期和时间的全新API。此API中最有用的类之一是LocalDateTime,用于保存与时区无关的date-with-time值。 java.util.Date为此,可能有数百万行的代码使用遗留类。因此,当连接新旧代码时,将需要在两者之间进行转换。由于似乎没有直接的方法可以完成此操作,因此该怎么办呢?

30
如何从字符串中删除最后一个字符?
我想从字符串中删除最后一个字符。我尝试这样做: public String method(String str) { if (str.charAt(str.length()-1)=='x'){ str = str.replace(str.substring(str.length()-1), ""); return str; } else{ return str; } } 获取字符串的长度-1并用任何内容替换最后一个字母(删除它),但是每次我运行该程序时,它都会删除与最后一个字母相同的中间字母。 例如,单词是“崇拜者”;运行该方法后,我得到“ admie”。我希望它返回佩服一词。
483 java  string 


9
我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?
多次批评我建议使用以下方法: setPreferredSize setMinimumSize setMaximumSize 在Swing组件上。我想在显示的组件之间定义比例时,看不到任何替代方法。有人告诉我: 对于布局,答案始终是相同的:使用合适的LayoutManager 我在网上搜索了一下,但没有找到对该主题的任何全面分析。所以我有以下问题: 我应该完全避免使用那些方法吗? 出于某种原因定义了这些方法。那么我什么时候应该使用它们呢?在哪种情况下?出于什么目的? 使用这些方法的负面后果到底是什么?(我只能考虑在具有不同屏幕分辨率的系统之间增加可移植性)。 我认为任何LayoutManager都无法完全满足所有所需的布局需求。我真的需要为我的布局上的每个小变化实现一个新的LayoutManager吗? 如果对4的回答为“是”,这是否会导致LayoutManager类的泛滥而导致难以维护? 在需要定义子组件之间比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%的空间),是否可以在不实现自定义LayoutManager的情况下实现呢?


18
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
在Java中,我们使用final带变量的关键字来指定其值不被更改。但是我看到您可以在类的构造函数/方法中更改值。同样,如果变量是static,则为编译错误。 这是代码: import java.util.ArrayList; import java.util.List; class Test { private final List foo; public Test() { foo = new ArrayList(); foo.add("foo"); // Modification-1 } public static void main(String[] args) { Test t = new Test(); t.foo.add("bar"); // Modification-2 System.out.println("print - " + t.foo); } } 上面的代码工作正常,没有错误。 现在将变量更改为static: private static final …
480 java  final 

12
为什么Java的String中的hashCode()使用31作为乘数?
每Java文档中,哈希代码的String对象被计算为: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] 使用int算术,其中s[i]是 我字符串的个字符,n是字符串的长度,以及^表示取幂。 为什么将31用作乘数? 我知道乘数应该是一个相对较大的素数。那么为什么不29或37甚至97?
480 java  string  algorithm  hash 


11
使用Java反射更改私有静态最终字段
我有一堂课private static final,但不幸的是,我需要在运行时更改它。 使用反射我得到这个错误: java.lang.IllegalAccessException: Can not set static final boolean field 有什么办法可以改变价值? Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK"); hack.setAccessible(true); hack.set(null, true);



16
尝试从列表中删除元素时,为什么会出现UnsupportedOperationException?
我有以下代码: public static String SelectRandomFromTemplate(String template,int count) { String[] split = template.split("|"); List<String> list=Arrays.asList(split); Random r = new Random(); while( list.size() > count ) { list.remove(r.nextInt(list.size())); } return StringUtils.join(list, ", "); } 我得到这个: 06-03 15:05:29.614: ERROR/AndroidRuntime(7737): java.lang.UnsupportedOperationException 06-03 15:05:29.614: ERROR/AndroidRuntime(7737): at java.util.AbstractList.remove(AbstractList.java:645) 这怎么会是正确的方法?Java 15


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.