I have most of these common patterns built-in as SlickEdit macros so I don’t have to remember the patterns. I just click a custom icon for the pattern I want. Unfortunately, I thus don’t remember them. Without my editor, I would be at a loss to remember where the parentheses and semicolons go.
|Try/Catch/Finally||Regex cheat sheet|
|Literals||HTML cheat sheet|
// splitting a string literal over more than one line String s = "abcdefghijklmnopqrst" + "uvwxyz";
There is no speed penalty for the + concatenation. It is done at compile time. String literals can be used anywhere you might use a String reference, e. g. "abc".charAt(1) is legal. For problematic/awkward/reserved/quotable characters like embedded ", see escape sequences below.
|char||unsigned Unicode||16||2||4:5||'\u0000'  aka Character. MIN_VALUE||'\uffff' [216-1] aka Character. MAX_VALUE||Unicode chars are twice as big as C’s.|
|byte||signed||8||1||2:3||-128 [-27] aka Byte. MIN_VALUE||+127 [27-1]aka Byte. MAX_VALUE||Bytes are signed, so half the usual 255 range.|
|short||signed||16||2||4:5||-32,768 [-215] aka Short. MIN_VALUE||+32,767 [215-1] aka Short. MAX_VALUE||32K|
|int||signed||32||4||9:10||-2,147,483,648 [-231] aka Integer.MIN_VALUE aka -2 gig, roughly -2 billion||+2,147,483,647 [231-1] aka Integer. MAX_VALUE. aka 2 gig, roughly 2 billion||2 gig|
|long||signed||64||8||1:19||-9,223,372,036,854,775,807 [-263] aka Long. MIN_VALUE about -9×1018||9,223,372,036,854,775,808 [+263-1] aka Long. MAX_VALUE about 9×1018||9 exabytes, or 9 billion gig|
|float||signed exponent and mantissa||32||4||7||±1.40129846432481707e-45 aka Float. MIN_VALUE||±3.40282346638528860e+38 aka Float.
or roughly ±2127
with about 7 significant digits of accuracy.
A float can exactly represent integers
in the range -224 to +224.
|rough, compact float|
|double||signed exponent and mantissa||64||8||16||±4.94065645841246544e-324 aka Double. MIN_VALUE||±1.79769313486231570e+308 aka Double.
or roughly ±21023
with 15 significant digits of accuracy, almost 16 with 15.95 significant digits.
A double can exactly represent integers
in the range -253 to +253.
|high precision float|
|Mutable Primitives||Immutable Objects|
|ordinary signed byte||Byte|
|Java Operator Precedence|
|0||new||Right||new, according to the JLS is not officially an operator. It is not usually considered to have precedence since it can occur in only one context, immediately followed by a class name. IIRC (If I Recall Correctly) it was considered to be an operator in the Java 1.0 days.|
|Right (prefix)||++ prefix means preincrement (add 1).
-- prefix means predecrement (subtract 1).
Preincrement increments before sampling the value to use in evaluating the rest of the expression. ! is logical not for booleans. Nearly always, you have to put the expression after ! in parentheses. You might as well make a habit of always doing it.
(cast) and parenthesis are not officially operators, according the JLS .
~ is bitwise not for ints.
(cast) has a multitude of purposes, lumped together under the term casting
|Right (postfix)||++ postfix means postincrement (add 1).
-- postfix means postdecrement (subtract 1 ).
Postincrement increments immediately after sampling the value to use in evaluating the rest of the expression.
Be very careful about using a pre/post inc/decremented variable elsewhere in an expression. You may be in for a surprise. for example
// Be very careful reusing a pre or post increment variable in an expression. int x = 2; int y = x++ * ++x; // result is y = 8; // it works as if you had coded: int x = 2; int a = x++; // a=2; x=3; int b = ++x; // b=4; x=4 int y = a * b; // y = 8
is integer multiplication for ints and
% is the remainder operator, informally and incorrectly called the modulus operator.
/ is integer division for ints and floating point division for doubles.
|Left (infix)||+ is ordinary addition, integer or floating point.
- is ordinary subtraction, integer or floating point. .
a - b - c means (a - b) - c not a - ( b - c ), additive operations are performed left to right. + also means concatenation.
|Left (infix)||There is no <<< operator because it would be identical to <<. You have to keep your wits about you when doing unsigned shifts to remember all right shifts must be done with >>>. In Java version 1.5 or later the following methods are built-in letting you avoid much low-level bit fiddling: e.g. Integer.highestOneBit, lowestOneBit, numberOfLeadingZeros, numberOfTrailingZeros, bitCount, rotateLeft, rotateRight, reverse, signum and reverseBytes. .|
|Left (infix)||oddly instanceof is considered an operator, even though it cannot operate on expressions.|
|Left (infix)||== is for comparison. != means not equal.= is for assignment. Pascal’s <> not equal will not work. == and != work on booleans too, often saving a forest of if/elses.|
|7||&||Left (infix)||Bitwise AND masking mostly for for ints.|
XOR (exclusive OR) for ints. It is the difference operator. It is true if the boolean operands are different, e. g.
false ^ false == false false ^ true == true true ^ false == true true ^ true == false
It is useful in cryptography because of this magic property of encryption and decryption with a random scrambler number.
long encrypted = message ^ scrambler; long decryped = encrypted ^ scrambler;
|9|||||Left (infix)||bitwise OR mostly for ints.
int e = ( a & b << 2 ) | ( c & ( d >>> 1 ) ); // if you trust precedence can be written more tersely: int e = a & b << 2 | c & d >>> 1;
|10||&&||Left (infix)||short circuit logical AND for booleans.|
|11||||||Left (infix)||short circuit logical OR for booleans. So when you say:
if ( ( ( lowest <= a ) && ( a <= biggest ) ) || notNeeded )
all those parentheses are nugatory (computer jargon for not necessary but won’t hurt). You could just as easily have written it, trusting precedence, as:
if ( lowest <= a && a <= biggest || notNeeded )
|12||? :||Right (ternary)|
|Right (infix)||a += b means a = a + b; a *= b means a = a * b; etc. These make proofreading easier by eliminating typing a variable name twice.|
The most important extra rule is that parameters to a method are evaluated left to right.
|Reserved keywords (not currently in use)|
The bold ones I consider more important since they demark major blocks of code. assert arrived with JDK (Java Development Kit) 1.4. enum arrived with JDK 1.5. const and goto are not currently used. They may be there just in case C++ programmers use them by mistake to enable the compiler to give a more meaningful error message.
available on the web at:
optional Replicator mirror
Please email your feedback for publication, letters to the editor, errors, omissions, typos, formatting errors, ambiguities, unclear wording, broken/redirected link reports, suggestions to improve this page or comments to Roedy Green : . If you want your message, your name or email kept confidential, not considered for public posting, please explicitly specify that. Unless you state otherwise, I will treat your message as a letter to the editor that I may or may not publish in the feedback section. After that, it will be too late to retract it. If you disagree with something I said, especially when sending an ad-hominem attack, a rant composed mainly of obscenities or a death threat, please quote the offending passage and cite the web page where you found it, tell me why you think it is wrong, and, if possible, provide some supporting evidence. I can’t very well fix erroneous or ambiguous text if I can’t find it.
Your face IP:[184.108.40.206]
|Feedback||You are visitor number 366,391.|