What is the volatile keyword useful for?

volatile has semantics for memory visibility. Basically, the value of a volatile field becomes visible to all readers (other threads in particular) after a write operation completes on it. Without volatile, readers could see some non-updated value. To answer your question: Yes, I use a volatile variable to control whether some code continues a loop. … Read more

How to convert a byte array to a hex string in Java?

From the discussion here, and especially this answer, this is the function I currently use: private static final char[] HEX_ARRAY = “0123456789ABCDEF”.toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = … Read more

How do I convert from int to String?

Normal ways would be Integer.toString(i) or String.valueOf(i). The concatenation will work, but it is unconventional and could be a bad smell as it suggests the author doesn’t know about the two methods above (what else might they not know?). Java has special support for the + operator when used with strings (see the documentation) which … Read more

Converting ISO 8601-compliant String to java.util.Date

Unfortunately, the time zone formats available to SimpleDateFormat (Java 6 and earlier) are not ISO 8601 compliant. SimpleDateFormat understands time zone strings like “GMT+01:00” or “+0100”, the latter according to RFC # 822. Even if Java 7 added support for time zone descriptors according to ISO 8601, SimpleDateFormat is still not able to properly parse … Read more

How do I save a String to a text file using Java?

If you’re simply outputting text, rather than any binary data, the following will work: PrintWriter out = new PrintWriter(“filename.txt”); Then, write your String to it, just like you would to any output stream: out.println(text); You’ll need exception handling, as ever. Be sure to call out.close() when you’ve finished writing. If you are using Java 7 … Read more

Why does array[idx++]+=”a” increase idx once in Java 8 but twice in Java 9 and 10?

This is a bug in javac starting from JDK 9 (which made some changes with regard to string concatenation, which I suspect is part of the problem), as confirmed by the javac team under the bug id JDK-8204322. If you look at the corresponding bytecode for the line: array[i++%size] += i + ” “; It … Read more

Differences between Oracle JDK and OpenJDK

Both OpenJDK and Oracle JDK are created and maintained currently by Oracle only. OpenJDK and Oracle JDK are implementations of the same Java specification passed the TCK (Java Technology Certification Kit). Most of the vendors of JDK are written on top of OpenJDK by doing a few tweaks to [mostly to replace licensed proprietary parts … Read more