- 3.1. A Simple Java Program
- 3.2. Comments
- 3.3. Data Types
- 3.4. Variables and Constants
- 3.5. Operators
- 3.6. Strings
- 3.7. Input and Output
- 3.8. Control Flow
- 3.9. Big Numbers
- 3.10. Arrays
3.4. Variables and Constants
As in every programming language, variables are used to store values. Constants are variables whose values don’t change. In the following sections, you will learn how to declare variables and constants.
3.4.1. Declaring Variables
In Java, every variable has a type. You declare a variable by placing the type first, followed by the name of the variable. Here are some examples:
double salary; int vacationDays; long earthPopulation; boolean done;
Notice the semicolon at the end of each declaration. The semicolon is necessary because a declaration is a complete Java statement, which must end in a semicolon.
The identifier for a variable name (as well as for other names) is made up of letters, digits, currency symbols, and “punctuation connectors.” The first character cannot be a digit.
Symbols like '+' or '©' cannot be used inside variable names, nor can spaces. Letter case is significant: main and Main are distinct identifiers. The length of an identifier is essentially unlimited.
The terms “letter,” “digit,” and “currency symbol” are much broader in Java than in most languages. A letter is any Unicode character that denotes a letter in a language. For example, German users can use umlauts such as ä in variable names; Greek speakers could use a π. Similarly, digits are 0–9 and any Unicode characters that denote a digit. Currency symbols are $, €, ¥, and so on. Punctuation connectors include the underscore character _, a “wavy low line” ﹏, and a few others. In practice, most programmers stick to A-Z, a-z, 0-9, and the underscore _.
You also cannot use a Java keyword such as class as a variable name.
Underscores can be parts of identifiers. This is common for constant names, such as Double.POSITIVE_INFINITY. However, a single underscore _ is a keyword.
You can declare multiple variables on a single line:
int i, j; // both are integers
I don’t recommend this style. If you declare each variable separately, your programs are easier to read.
3.4.2. Initializing Variables
After you declare a variable, you must explicitly initialize it by means of an assignment statement—you can never use the value of an uninitialized variable. For example, the Java compiler flags the following sequence of statements as an error:
int vacationDays; IO.println(vacationDays); // ERROR--variable not initialized
You assign to a previously declared variable by using the variable name on the left, an equal sign (=), and then some Java expression with an appropriate value on the right.
int vacationDays; vacationDays = 12;
You can both declare and initialize a variable on the same line. For example:
int vacationDays = 12;
Finally, in Java you can put declarations anywhere in your code. For example, the following is valid code in Java:
double salary = 65000.0; IO.println(salary); int vacationDays = 12; // OK to declare a variable here
In Java, it is considered good style to declare variables as closely as possible to the point where they are first used.
3.4.3. Constants
In Java, you use the keyword final to denote a constant. For example:
void main() {
final double CM_PER_INCH = 2.54;
double paperWidth = 8.5;
double paperHeight = 11;
IO.println("Paper size in centimeters: "
+ paperWidth * CM_PER_INCH + " by " + paperHeight * CM_PER_INCH);
}
The keyword final indicates that you can assign to the variable once, and then its value is set once and for all. It is customary to name constants in all uppercase.
It is probably more common in Java to create a constant so it’s available to all methods of a class:
final double CM_PER_INCH = 2.54;
void main() {
double paperWidth = 8.5;
double paperHeight = 11;
IO.println("Paper size in centimeters: "
+ paperWidth * CM_PER_INCH + " by " + paperHeight * CM_PER_INCH);
}
// CM_PER_INCH also accessible in other methods
You will see in Chapter 4 how a class can declare constants that are usable in other classes. For example, the Math class declares a constant PI that you can use as Math.PI.
3.4.4. Enumerated Types
Sometimes, a variable should only hold a restricted set of values. For example, you may sell clothes or pizza in four sizes: small, medium, large, and extra large. Of course, you could encode these sizes as integers 1, 2, 3, 4 or characters S, M, L, and X. But that is an error-prone setup. It is too easy for a variable to hold a wrong value (such as 0 or m).
You can define your own enumerated type whenever such a situation arises. An enumerated type has a finite number of named values. For example,
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
Now you can declare variables of this type:
Size s = Size.MEDIUM;
A variable of type Size can hold only one of the values listed in the type declaration, or the special value null that indicates that the variable is not set to any value at all. (See Chapter 4 for more information about null.)
Enumerated types are discussed in greater detail in Chapter 5.
