📜 ⬆️ ⬇️

Java Tricks

I have been working on java for many years and have seen quite a lot of other people's code. It’s not strange, but constantly I see the same problems from one project to another. This topic is an educational attempt in the most commonly used language constructs. Part of the above is rather trivial things, however, as my experience shows, all these platitudes are still relevant. I hope this article is useful to many java programmers. So, let's go:

new vs valueOf

//
Integer i = new Integer(100);
Long l = new Long(100);
String s = new String("A");

//
Integer i = Integer.valueOf(100);
Long l = 100L;//    Long.valueOf(100L);
String s = "A";


valueOf , , . , , , Byte Long . -128 127. , , . 3.5 + . , . , , Integer «java.lang.Integer.IntegerCache.high», -XX:AutoBoxCacheMax=<size>.

+ vs append

//
String[] fields = new String[] {"a","b","c","d","e","f","g"};
String s = "";
for (int i = 0; i < fields.length; i++) {
	s = s + fields[i];
}
return s;

//
String[] fields = new String[] {"a","b","c","d","e","f","g"};
StringBuilder s = new StringBuilder();
for (int i = 0; i < fields.length; i++) {
	s.append(fields[i]);
}
return s.toString();


( +) , , . , «s = s + fileds[i]» 3 : StringBuilder s, append, toString ( : s = new StringBuilder(s).append(fields[i]).toString();). 3 ! s + fileds[i] , .

StringBuilder vs StringBuffer

StringBuilder, , StringBuffer, StringBuilder StringBuffer , .

instanceOf

instanceOf. java . — , . .
P. S. « java ». . , , , , , instanceOf , , '*'.

Generics

//
List a = new ArrayList();

//
List<String> a = new ArrayList<String>();


, . 2- : . . - . — <?>, <? extends someType> / instanceOf.

Interface for Consts

//
interface A {
	public static final String A = "a";
}

//
final class A {
	public static final String A = "a";
}

. . , . , , java .

Override

Override , . ( , ).

null vs empty

null , null- . Collections :
Collections.emptyList();
Collections.emptyMap();
Collections.emptySet();

. :

Set<Document> docs = getDocuments(plan);
for (Document doc : docs) {
	sendMessage(doc.getOwner());
}
public static Set<Document> getDocuments(Plan plan) {
	//some logic
	if (isDoSomethingOk() && hasAccessToDocuments(user)) {
		return plan.getDocuments();
	}
	return Collections.emptySet();
}

, . , , null . — « » , .


//
int a = 12;
String s = a + "";
//
int a = 12;
String s = String.valueOf(a);

.


, , , , , .

')

Source: https://habr.com/ru/post/132241/


All Articles