JAVATM - The Beginnings
Foreword |
1 |
Terminology |
2 |
The HelloWorld Program |
4 |
Section 1 - Creating and Running the HelloWorld Program | 4 |
Section 2 - Analyzing the HelloWorld Program | 5 |
Short Problems | 6 |
Comments and Indentation |
8 |
Section 1 - Defining Java-style Comments | 8 |
Section 2 - Defining C-style Comments | 9 |
Section 3 - Indentation | 10 |
Short Problems | 12 |
Types |
13 |
Section 1 - Variables | 13 |
Section 2 - Types | 14 |
Section 3 - Primitive Types | 14 |
Section 3a - The Integer Types | 14 |
Section 3b - The Floating Point Types | 16 |
Section 3c - The char Type | 16 |
Section 3d - The boolean Type | 17 |
Section 4 - Strings | 17 |
Short Problems | 17 |
Literals |
17 |
Section 1 - Integer Literals | 18 |
Section 1a - Integer Literals in Different Numeric Bases | 18 |
Section 2 - Floating Point Literals | 18 |
Section 3 - Boolean Literals | 19 |
Section 4 - Character Literals | 19 |
Section 5 - String Literals | 19 |
Short Problems | 20 |
println and print |
21 |
Section 1 - Creating Longer String Literals | 21 |
Section 2 - The Newline Character ‘\n’ | 22 |
Section 3 - The print Method | 22 |
Section 4 - The Tab Character ‘\t’ | 23 |
Short Problems | 24 |
Long Problems | 24 |
Variables |
26 |
Section 1 - Keywords | 26 |
Section 2 - Identifiers | 26 |
Section 3 - Variable Declarations | 27 |
Section 3a - Declaring Multiple Variables in a Single Statement | 28 |
Section 4- Using Variable Declarations | 29 |
Section 5- The Lifetime of a Variable | 30 |
Section 6- String Variables | 30 |
Short Problems | 31 |
Long Problems | 32 |
Constants |
34 |
Section 1 - Using the final Keyword to Define Constants | 35 |
Section 2 - Constants Make your Programs Easier to Maintain | 35 |
Section 3 - String Constants | 36 |
Short Problems | 36 |
Long Problems | 37 |
Expressions |
38 |
Section 1 - Assignment Statements | 38 |
Section 2 - Expressions Defined | 39 |
Section 3 - Arithmetic Expressions | 39 |
Section 3a - Division | 39 |
Section 3b - Remainder | 40 |
Section 3c - Parentheses | 40 |
Section 3d - Order of Operations | 40 |
Section 3e - The Unary -, ++, and -- Operators | 41 |
Section 3f - Prefix and Postfix Form | 41 |
Section 3g - Shorthand | 42 |
Section 4 - Boolean Expressions | 42 |
Section 4a - Equality | 43 |
Section 4b - Relational Operators | 43 |
Section 4c - Logical Operators | 44 |
Section 5 - Bitwise Expressions | 45 |
Section 5a - Shifting | 45 |
Section 6 - Concatenation | 46 |
Section 7 - String Equality | 47 |
Short Problems | 48 |
Long Problems | 49 |
Conversion |
51 |
Section 1 - Widening Conversions | 51 |
Section 2 - Narrowing Conversions | 52 |
Section 3 - Conversions involving char | 52 |
Section 4 - Conversions involving boolean | 53 |
Section 5 - Conversions involving String | 53 |
Section 6 - Promotion | 54 |
Section 7 - Typecasting | 54 |
Short Problems | 55 |
if Statements |
56 |
Section 1 - The if Statement | 56 |
Section 2 - The if-else Statement | 57 |
Section 3 - The if-else if Statement | 58 |
Section 4 - Statement Blocks | 60 |
Section 5 - Nested if Statements | 61 |
Short Problems | 63 |
Long Problems | 63 |
switch Statements |
66 |
Section 1 - switch Statements | 66 |
Section 2 - Execution Flow in a switch Statement | 67 |
Section 3 - The Default Case | 67 |
Section 4 - Fallthrough in switch Statements | 68 |
Section 5 - Sharing Statement Blocks | 69 |
Section 6 - Switching on Strings | 69 |
Short Problems | 70 |
Long Problems | 71 |
Loops |
73 |
Section 1 - while Loops | 73 |
Section 2 - do-while Loops | 75 |
Section 3 - for Loops | 76 |
Section 3a - Decrementing for Loops | 77 |
Section 3b - Computing a Sum with a for Loop | 77 |
Section 3c - More Complex Exit Conditions | 77 |
Section 3d - Performing Larger Increments per Iteration | 78 |
Section 3e - Nested for Loops | 78 |
Short Problems | 79 |
Long Problems | 80 |
Methods |
81 |
Section 1 - Writing Your Own Methods | 81 |
Section 2 - Method Definition | 82 |
Section 3 - Calling a Method | 83 |
Section 4 - Method Parameters | 84 |
Section 5 - Passing by Value | 85 |
Section 6 - Returning a Value from a Method | 86 |
Section 7 - Premature Returns | 88 |
Section 8 - Return Statements in void Methods | 88 |
Short Problems | 89 |
Long Problems | 89 |
Local Variables |
92 |
Section 1 - Variables Local to Methods | 92 |
Section 2 - Variables Local to if Clauses | 93 |
Section 3 - Variables Local to Loops | 94 |
Section 4 - Variables Local to Arbitrary Scopes | 95 |
Short Problems | 96 |
Long Problems | 97 |
Classes |
99 |
Section 1 - Classes Defined | 99 |
Section 2 - Defining Your Own Classes | 101 |
Section 3 - The Reason We Need Classes | 101 |
Section 4 - The State of a Class | 102 |
Section 5 - Class Fields | 103 |
Section 5a - Determining the Fields of a Class | 106 |
Section 5b - Default Initialization of Class Fields | 107 |
Section 6 - Class Methods | 107 |
Section 7 - Mutators | 109 |
Section 7a - Validation in Mutators | 111 |
Short Problems | 112 |
Long Problems | 113 |
Objects and References |
116 |
Section 1 - Objects Defined | 116 |
Section 2 - Object Declarations | 116 |
Section 3 - The new Operator | 117 |
Section 4 - Reference Variables | 117 |
Section 5 - Multiple References to the Same Object | 118 |
Section 6 - String Objects are Immutable | 119 |
Section 7 - The Java Application Programming Interface (API) | 119 |
Section 8 - The Object Class | 120 |
Section 8a - The toString Method | 120 |
Section 8b - The equals Method | 121 |
Short Problems | 122 |
Long Problems | 122 |
Encapsulation |
124 |
Section 1 - Encapsulation Defined | 125 |
Section 2 - Accessors | 126 |
Short Problems | 128 |
Long Problems | 128 |
Constructors |
130 |
Section 1 - Constructors Defined | 130 |
Section 2 - Calling a Constructor | 130 |
Section 3 - Overloading Constructors | 131 |
Section 4 - The Default Constructor | 131 |
Section 5 - Default Constructor Generation | 132 |
Section 6 - Constructors with no Arguments | 132 |
Section 7 - The this Reference | 133 |
Section 8 - Using this to Call Another Constructor | 134 |
Section 9 - Constructors and final Fields | 134 |
Short Problems | 136 |
Long Problems | 137 |
Static Fields and Methods |
139 |
Section 1 - Static Fields | 140 |
Section 2 - Static Field Declarations | 140 |
Section 3 - Static Field Initialization | 141 |
Section 4 - Implementing an Object Counter using a Static Field | 142 |
Section 5 - Static versus Instance Fields | 143 |
Section 6 - Defining Class Constants using Static Fields | 143 |
Section 7 - Static Methods | 145 |
Section 8 - Referencing Static Fields and Methods from Outside Defining Classes | 146 |
Section 9 - Helper Classes | 147 |
Short Problems | 148 |
Long Problems | 148 |
Passing and Returning Object References |
151 |
Section 1- Passing an Object Reference to a Method | 151 |
Section 2- Modifying the Fields of a Object Passed into a Method | 152 |
Section 3- Returning an Object Reference from a Method | 153 |
Short Problems | 155 |
Long Problems | 155 |
Arrays |
159 |
Section 1 - Arrays Defined | 159 |
Section 2 - Array Declarations | 160 |
Section 3 - Array Subscripts | 160 |
Section 4 - The Bounds of an Array | 161 |
Section 5 - Arrays are Objects | 161 |
Section 6 - Array Initialization | 162 |
Section 7 - Arrays and Loops | 162 |
Section 8 - The length Field | 162 |
Section 9 - Array References as Class Fields | 164 |
Section 10 - The Size of a Java Array is Constant | 166 |
Section 11 - Enhanced For Loops | 167 |
Section 12 - Two Dimensional Arrays | 168 |
Short Problems | 170 |
Long Problems | 170 |
Arrays of Object References |
174 |
Section 1 - Declaring an Array of Object References | 174 |
Section 2 - Populating an Array of Object References using Assign Statements | 176 |
Section 3 - Populating an Array of Object References using an Initialization List | 177 |
Section 4 - Declaring Arrays of String References | 178 |
Section 5 - Passing an Array of Object References to a Method | 179 |
Section 6 - Returning an Array of Object References from a Method | 181 |
Short Problems | 182 |
Long Problems | 182 |
Wrapper Classes |
186 |
Section 1 - The Integer Class | 186 |
Section 1a - The parseInt Method | 186 |
Section 1b - The parseUnsignedInt Method | 187 |
Section 1c - The toString Methods | 187 |
Section 1d - Displaying in Different Numeric Bases | 187 |
Section 1e - Converting to a Different Primitive Type | 188 |
Section 1f - The MIN_VALUE and MAX_VALUE Constants | 189 |
Section 1g - The min and max Methods | 190 |
Section 1h - The toUnsignedLong Method | 190 |
Section 2 - The Double Class | 191 |
Section 2a - The POSITIVE_INFINITY, NEGATIVE_INFINITY, and NaN Constants | 191 |
Section 2b - The isInfinite, isFinite, and isNaN Methods | 191 |
Section 3 - The Float, Long, Short, and Byte Classes | 192 |
Section 4 - The Boolean Class | 193 |
Section 5 - Autoboxing | 193 |
Section 6 - Unboxing | 194 |
Section 7 - Wrapper Objects are Immutable | 194 |
Section 8 - The Character Class | 195 |
Short Problems | 200 |
Long Problems | 200 |
ArrayLists |
203 |
Section 1 - ArrayList Definition | 203 |
Section 2 - ArrayList Declarations | 203 |
Section 3 - ArrayLists Contain Object References | 204 |
Section 4 - Adding Elements to the End of an ArrayList | 204 |
Section 5 - Retrieving Elements from an ArrayList | 204 |
Section 6 - Looping Through an ArrayList | 204 |
Section 7 - import Statements | 205 |
Section 8 - Autoboxing and Unboxing with ArrayLists | 206 |
Section 9 - Adding Elements to an ArrayList at a Specified Index | 206 |
Section 10 - Removing Elements from an ArrayList | 207 |
Section 11 - Replacing an Element at a Specified Index | 207 |
Section 12 - Finding a Value in an ArrayList | 208 |
Section 13 - Determining if an ArrayList is Empty | 208 |
Section 14 - Copying ArrayLists | 208 |
Section 15 - Clearing an ArrayList | 209 |
Section 16 - Converting an ArrayList to a Java Array | 209 |
Section 17 - Passing an ArrayList to a Method | 210 |
Section 18 - Returning an ArrayList from a Method | 210 |
Short Problems | 211 |
Long Problems | 211 |
User Interaction |
215 |
Section 1 - System.in | 216 |
Section 2 - The Scanner Class | 216 |
Section 3 - Prompting | 217 |
Section 4 - The nextDouble, nextFloat, nextLong, nextShort, nextByte, and nextBoolean Methods | 218 |
Section 5 - Delimiters and the next Method | 219 |
Section 6 - The nextLine Method | 220 |
Section 7 - Scanner Use inside While Loops | 222 |
Section 8 - Using a Scanner to Play a Game | 223 |
Section 9 - Using a Scanner to Read a File | 224 |
Section 9a - The hasNext Method | 225 |
Section 10 - Using a Scanner to Read a String | 226 |
Section 11 - Changing a Scanner’s Delimiter | 227 |
Short Problems | 228 |
Long Problems | 228 |
String Operations |
232 |
Section 1 - Obtaining the Length of a String | 232 |
Section 2 - Retrieving the Character at an Index in a String Object | 232 |
Section 3 - Retrieving the Last Character of a String Object | 233 |
Section 4 - Finding the Position of a Character or String in a String Object | 233 |
Section 5 - Retrieving a Portion of a String Object | 235 |
Section 6 - The startsWith and endsWith Methods | 236 |
Section 7 - The isEmpty Method | 236 |
Section 8 - The toUpperCase and toLowerCase Methods | 236 |
Section 9 - The valueOf Methods | 237 |
Section 10 - The trim Method | 238 |
Section 11 - Matching a Region of two Strings | 238 |
Section 12 - Comparing two String Objects Lexicographically | 238 |
Section 13 - Strings and char Arrays | 240 |
Section 14 - Replacing a Portion of a String Object | 240 |
Section 15 - The StringBuilder Class | 241 |
Section 16 - The StringTokenizer Class | 245 |
Short Problems | 247 |
Long Problems | 248 |
Random Numbers |
251 |
Section 1 - The Random Class | 251 |
Section 2 - Limiting Random Numbers to a Range | 252 |
Section 3 - Specifying the Seed Value | 252 |
Section 4 - The nextFloat Method | 253 |
Section 5 - Computer Guessing Games | 254 |
Short Problems | 256 |
Long Problems | 256 |
Formatting Output |
258 |
Section 1 - The NumberFormat Class | 258 |
Section 1a - The getNumberInstance Method | 258 |
Section 1a1 - Grouping | 259 |
Section 1a2 - Rounding | 260 |
Section 1b - The getCurrencyInstance Method | 260 |
Section 1c - The getPercentInstance Formatter | 261 |
Section 2 - The DecimalFormat Class | 262 |
Section 3 - The printf Method | 263 |
Short Problems | 263 |
Long Problems | 264 |
Math Operations |
266 |
Section 1 - The Math Class | 266 |
Section 2 - Math Class Constants | 266 |
Section 3 - The abs Method | 267 |
Section 4 - The floor Method | 267 |
Section 5 - The ceil Method | 267 |
Section 6 - The round Method | 267 |
Section 7 - The min Method | 268 |
Section 8 - The max Method | 268 |
Section 9 - The pow Method | 268 |
Section 10 - The log, log10, and exp Methods | 269 |
Section 11 - The hypot Method | 269 |
Section 12 - Trigonometric Functions | 269 |
Section 12a - The toRadians and toDegrees Methods | 269 |
Section 12b - The sin, cos, and tan Methods | 270 |
Section 12c - The asin, acos, and atan Methods | 270 |
Short Problems | 271 |
Long Problems | 272 |
Enum Types |
274 |
Section 1 - Defining an Enum Type | 275 |
Section 2 - Enum Types are Classes | 276 |
Section 3 - The ordinal Method | 276 |
Section 4 - The toString and name Methods | 277 |
Section 5 - The equals Method | 277 |
Section 6 - The compareTo Method | 277 |
Section 7 - The values Method | 278 |
Section 8 - Placing an Enum Type in a Separate File | 278 |
Section 9 - Switching on an Enum Reference Variable | 279 |
Section 10 - Enum Reference Variables as Fields in other Classes | 280 |
Short Problems | 281 |
Long Problems | 282 |
Copyright ©2017 by Ralph Lecessi Incorporated. All rights reserved.