Tag: java

扫描仪与StringTokenizer与String.Split

我刚刚了解了Java的Scanner类,现在我想知道它如何与StringTokenizer和String.Split进行比较/竞争。 我知道StringTokenizer和String.Split只能在字符串上工作,所以我为什么要使用扫描器的字符串? Scanner只是为了一站式购物而分拆?

^运算符在Java中做什么?

^ (caret)运算符在Java中有什么作用? 当我尝试这个: int a = 5^n; 它给了我: 对于n = 5,返回0 对于n = 4,返回1 对于n = 6,返回3 …所以我猜测它不会执行幂运算。 但那是什么呢?

从java中的URL读取json最简单的方法

这可能是一个愚蠢的问题,但是从Java中的 URL读取和解析JSON最简单的方法是什么? 在Groovy中,这是几行代码的问题。 我发现Java的例子是可笑的(并有巨大的异常处理块)。 我想要做的就是阅读这个链接的内容。

如何在Java中使用Comparator进行排序

我学会了如何使用可比较的,但是我对比较器有困难。 我在我的代码中有一个错误: Exception in thread "main" java.lang.ClassCastException: New.People cannot be cast to java.lang.Comparable at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.Collections.sort(Unknown Source) at New.TestPeople.main(TestPeople.java:18) 这是我的代码: import java.util.Comparator; public class People implements Comparator { private int id; private String info; private double price; public People(int newid, String newinfo, double newprice) { setid(newid); setinfo(newinfo); setprice(newprice); } public […]

我应该在声明或构造函数中实例化实例变量吗?

这两种方法有没有优势? 例1: class A { B b = new B(); } 例2: class A { B b; A() { b = new B(); } }

什么时候在Java中使用StringBuilder

在Java中,通常应该使用StringBuilder进行字符串连接。 这总是如此吗? 我的意思是这样的:是创建一个StringBuilder对象的开销,调用append()方法,最后toString()已经小,然后连接现有的字符串与两个字符串的+运算符,还是只建议更多)字符串? 如果有这样一个门槛,它依赖于什么(可能是字符串长度,但是以哪种方式)? 最后,你会交换字符串的可读性和简洁性的StringBuilder的性能在较小的情况下,如两个,三个或四个字符串? 在过时的Java优化技巧以及Java都市神话中,已经提到了将StringBuilder用于常规连接的显式使用。

如何在Java中使用servlet过滤器来更改传入的servlet请求url?

如何使用servlet过滤器来更改传入的servlet请求url http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123 至 http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123 ? 更新 :根据BalusC的步骤,我想出了以下代码: public class UrlRewriteFilter implements Filter { @Override public void init(FilterConfig config) throws ServletException { // } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; String requestURI = request.getRequestURI(); if (requestURI.startsWith("/Check_License/Dir_My_App/")) { String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1); […]

我应该使用哪个@NotNull Java注释?

我正在寻找使我的代码更具可读性,并使用工具如IDE代码检查和/或静态代码分析(FindBugs和声纳),以避免NullPointerExceptions。 许多工具看起来与@NotNull / @NonNull / @Nonnull注解不兼容,并且在我的代码中列出所有这些工具将会很糟糕。 任何建议哪一个是最好的? 以下是我找到的等效注释列表: javax.validation.constraints.NotNull 创建运行时验证,而不是静态分析。 文件 edu.umd.cs.findbugs.annotations.NonNull Findbugs使用静态分析,因此Sonar(现在是Sonarqube ) 文件 javax.annotation.Nonnull 这可能也适用于Findbugs,但JSR-305是不活动的。 (另见: JSR 305的状态是什么? ) 来源 org.jetbrains.annotations.NotNull IntelliJ IDEA IDE用于静态分析。 文件 lombok.NonNull 用于控制Project Lombok中的代码生成。 因为没有标准的占位符注释。 来源 , 文件 android.support.annotation.NonNull Android中提供的标记注释,由支持注释包提供 文件 org.eclipse.jdt.annotation.NonNull Eclipse用于静态代码分析 文件

ConcurrentHashMap和Collections.synchronizedMap(Map)有什么区别?

我有一个地图是由多个线程同时修改。 Java API中似乎有三种不同的同步Map实现: Hashtable Collections.synchronizedMap(Map) ConcurrentHashMap 据我所知, Hashtable是一个旧的实现(扩展了过时的Dictionary类),后来为适应Map接口而进行了修改。 虽然它是同步的,但它似乎有严重的可扩展性问题 ,并且不鼓励新项目。 但是另外两个呢? Collections.synchronizedMap(Map)和ConcurrentHashMap s返回的Maps之间有什么区别? 哪一个适合哪种情况?

如何使图像在Java中按键时移动。

我开始学习java编程,我认为通过游戏开发来学习java很酷。 我知道如何绘制图像,听按键然后移动那个图像。 但是当窗口正在按键时,是否有可能使图像来回移动到窗口? 例如,当图像或物体(如太空飞船)在窗口中从左到右移动时,如果按下空格键,则激光将在屏幕底部发射(冷却:D)。 但基本上我只是想知道如何让图像左右移动,而窗口正在听按键。 我在想,我会添加一个关键的侦听器到我的窗口,然后启动一个无限循环来移动图像。 或者我需要了解线程,以便另一个线程将移动该对象? 请指教。 非常感谢。