|
|
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Page 2 of 10
The JVM supports seven primitive data types. Java programmers can declare and use variables of these data types, and Java bytecodes operate upon these data types. The seven primitive types are listed in the following table:
| Type | Definition |
|---|---|
byte |
one-byte signed two's complement integer |
short |
two-byte signed two's complement integer |
int |
4-byte signed two's complement integer |
long |
8-byte signed two's complement integer |
float |
4-byte IEEE 754 single-precision float |
double |
8-byte IEEE 754 double-precision float |
char |
2-byte unsigned Unicode character |
The primitive types appear as operands in bytecode streams. All primitive types that occupy more than 1 byte are stored in
big-endian order in the bytecode stream, which means higher-order bytes precede lower-order bytes. For example, to push the
constant value 256 (hex 0100) onto the stack, you would use the sipush opcode followed by a short operand. The short appears in the bytecode stream, shown below, as "01 00" because the JVM is
big-endian. If the JVM were little-endian, the short would appear as "00 01".
// Bytecode stream: 17 01 00 // Dissassembly: sipush 256; // 17 01 00
Java opcodes generally indicate the type of their operands. This allows operands to just be themselves, with no need to identify
their type to the JVM. For example, instead of having one opcode that pushes a local variable onto the stack, the JVM has
several. Opcodes iload, lload, fload, and dload push local variables of type int, long, float, and double, respectively, onto the stack.
Many opcodes push constants onto the stack. Opcodes indicate the constant value to push in three different ways. The constant value is either implicit in the opcode itself, follows the opcode in the bytecode stream as an operand, or is taken from the constant pool.
Some opcodes by themselves indicate a type and constant value to push. For example, the iconst_1 opcode tells the JVM to push integer value one. Such bytecodes are defined for some commonly pushed numbers of various types.
These instructions occupy only 1 byte in the bytecode stream. They increase the efficiency of bytecode execution and reduce
the size of bytecode streams. The opcodes that push ints and floats are shown in the following table: