Java charAt用于具有两个代码单元的字符

来自Core Java ,第一卷。 1,第9版,p。 69: 字符ℤ需要两个UTF-16编码的代码单元。 调用 String sentence = “ℤ is the set of integers”; // for clarity; not in book char ch = sentence.charAt(1) 不返回空格而是返回second的第二个代码单元。 但似乎sentence.charAt(1) 确实返回了一个空格。 例如,以下代码中的if语句的计算结果为true 。 String sentence = “ℤ is the set of integers”; if (sentence.charAt(1) == ‘ ‘) System.out.println(“sentence.charAt(1) returns a space”); 为什么? 我在Ubuntu 12.10上使用JDK SE 1.7.0_09,如果它是相关的。

转义序列无效(有效转义序列为\ b \ t \ n \ f \ r \“\ \ \ \)

我在java中使用正则表达式有问题。 当我尝试使用这个正则表达式时: ^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$ 我收到以下错误 “Invalid escape sequence (valid ones are \b \t \n \f \r \” \’ \ )” 我不知道如何处理这个错误。 我已经尝试将反斜杠加倍,但它没有用。 我希望有人可以帮助我。 谢谢

Comparator.comparing(…)嵌套字段

假设我有一个这样的域模型: class Lecture { Course course; … // getters } class Course { Teacher teacher; int studentSize; … // getters } class Teacher { int age; … // getters } 现在我可以像这样创建一个教师比较器: return Comparator .comparing(Teacher::getAge); 但是如何比较Lecture在嵌套字段上的比例呢? return Comparator .comparing(Lecture::getCourse::getTeacher:getAge) .thenComparing(Lecture::getCourse::getStudentSize); 我无法在模型上添加方法Lecture.getTeacherAge() 。

Java中的十进制到hex转换器

我有一个家庭作业,我需要在十进制,二进制和hex之间进行三向转换。 我需要帮助的函数是将十进制转换为hex。 我几乎不了解hex,但仍然如何将十进制转换为hex。 我需要一个接受int dec并返回String hex的函数。 不幸的是我没有这个function的任何草稿,我完全迷失了。 我只有这个。 public static String decToHex(int dec) { String hex = “”; return hex; } 此外,我不能使用像Integer.toHexString()或其他任何东西的预制函数,我需要实际制作算法,否则我就不会学到任何东西。

我应该如何阅读缓冲读卡器?

我有以下从缓冲读取器读取的示例: while ((inputLine = input.readLine()) != null) { System.out.println(“I got a message from a client: ” + inputLine); } 只要缓冲读卡器中出现某些内容(本例中为input ,就会执行循环println的代码。 在我的例子中,如果客户端应用程序向套接字写入内容,则将执行循环中的代码(在服务器应用程序中)。 但我不明白它是如何工作的。 inputLine = input.readLine()等待缓冲读取器中出现某些内容,当出现某些内容时,它返回true并执行循环中的代码。 但是当null可以返回。 还有一个问题。 上面的代码取自throws Exception的方法,我在Thread的run方法中使用了这段代码。 当我在run之前尝试放置throws Exception ,编译器会抱怨:重写方法不会抛出exception。 没有throws exception我还有另一个来自编译器的抱怨:未报告的exception。 那么,我该怎么办?

为什么Java的try-with-resource需要声明

Java7的try-with-resources非常棒,但是我无法理解为什么需要在try语句中包含资源声明。 我的直觉说以下应该是可能的: CloseableResource thing; try (thing = methodThatCreatesAThingAndDoesSomeSideEffect()) { // do some interesting things } thing.collectSomeStats(); 唉,这会导致语法错误(密码期待a ; )。 将类型定义/声明移动到try语句中,这当然会将事物移动到相应的范围中。 我可以弄清楚如何解决这个问题,当我想要更多来自我的AutoClosable不是关闭时,我很感兴趣为什么编译器需要它这样。

获取java JRE的路径

它可以获得用于当前过程的jre的位置。 需要启动其他java应用程序作为单独的进程。 有不同的jre可用(并且没有路径变量设置)我想问,例如。 这个装载机。 在Solaris,Linux,Windows上运行。

REST Webservice返回415 – 不支持的媒体类型

我使用jax-rs和jersey创建了一个REST Web服务,它应该在POST请求中使用JSON。 我的Web服务类看起来像这样: @Path(“/webhookservice”) public class Webhook { @POST @Consumes(MediaType.APPLICATION_JSON) public Response readData (Song song) { // Prints out the song info System.out.println(“SONG INFO \n=======================”); System.out.println(“songname: ” + song.getSongname()); System.out.println(“artist: ” + song.getArtist()); // Repsonse with a HTTP 200 OK Response response = Response.status(200).build(); return response; } } 我的歌class: public class Song { private String […]

Java RegEx Matcher.groupCount返回0

我知道这已被问到但我无法修复它 对于身体(西class牙语)的书籍对象: “quiero mas dinero” (实际上相当长一点) 我的Matcher一直返回0表示: String s=”mas”; // this is for testing, comes from a List int hit=0; Pattern p=Pattern.compile(s,Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(mybooks.get(i).getBody()); m.find(); System.out.println(s+” “+m.groupCount()+” ” +mybooks.get(i).getBody()); hit+=m.groupCount(); 我一直在控制台上获得”mas 0 quiero mas dinero” 。 为什么哦为什么?

java不正确的时区

我有一个Java实例,它似乎使用了一个完全不正确的时区。 它使用的是美国/加拉加斯时区,而不是使用Windows正在使用的澳大利亚/悉尼时区。 我首先通过系统时钟检查了Windows时间,然后检查了HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/和ControlSet001 , ControlSet002 。 所有都设在悉尼时区。 有人知道这是Java中的错误,还是指其他地方设置的时间? Java版本是1.6.0_06