Java Tutorials - Herong's Tutorial Examples - v8.22, by Herong Yang
"byte" Data Type and Implicit Casting
This section provides a tutorial example on how 'byte' variables can be assigned with 'byte' values with implicit and explicit casting from other compatible types of values.
byte - A primitive data type in Java that can store 256 possible integer values from -128 to 127.
There is no explicit data literals for "byte" data type. If you want to assign values to "byte" data type variables, you can:
To verify how values can be assigned to "byte" data type variables, I wrote the following sample program, ByteValues.java:
/* ByteValues.java
* Copyright (c) HerongYang.com. All Rights Reserved.
*/
public class ByteValues {
public static void main(String[] arg) {
// Good "byte" assignments
byte b1, b2, b3, b4, b5, b6, b7, b8;
b1 = 127; // "int" literal and implicit casting
b2 = 0x0000007F; // "int" literal and implicit casting
b3 = (byte) 127; // "int" literal and explicit casting
b4 = (byte) 0x0000007F; // literal and explicit casting
b5 = 254/2; // "int" expression and implicit casting
b6 = 256127%256; // "int" expression and implicit casting
b7 = (byte) 127.14157; // "float" literal and explicit casting
b8 = (byte) 'A'; // "char" literal and explicit casting
System.out.println("b1: "+b1);
System.out.println("b2: "+b2);
System.out.println("b3: "+b3);
System.out.println("b4: "+b4);
System.out.println("b5: "+b5);
System.out.println("b6: "+b6);
System.out.println("b7: "+b7);
System.out.println("b8: "+b8);
// Bad "byte" assignments
byte d1, d2, d3, d4, d5, d6;
// d1 = 128; // out of range
// d2 = -129; // out of range
// d3 = (byte) (1==1); // type not compatible
// d4 = (byte) "A"; // type not compatible
// d5 = (byte) null; // type not compatible
// d6 = (byte) new Date(); // type not compatible
}
}
After executing this program, I got the following output:
b1: 127 b2: 127 b3: 127 b4: 127 b5: 127 b6: 127 b7: 127 b8: 65
The output shows that:
"ByteValues.java" also contains some hidden bad assignment expressions. If you un-comment those statement, you will get compilation errors.
Here are compilation errors from JDK 13 compiler:
ByteValues.java:28: error: incompatible types: possible lossy conversion
from int to byte
d1 = 128; // out of range
^
ByteValues.java:29: error: incompatible types: possible lossy conversion
from int to byte
d2 = -129; // out of range
^
ByteValues.java:30: error: incompatible types: boolean cannot be converted
to byte
d3 = (byte) (1==1); // type not compatible
^
ByteValues.java:31: error: incompatible types: String cannot be converted
to byte
d4 = (byte) "A"; // type not compatible
^
ByteValues.java:32: error: incompatible types: <null> cannot be
converted to byte
d5 = (byte) null; // type not compatible
^
ByteValues.java:33: error: cannot find symbol
d6 = (byte) new Date(); // type not compatible
^
symbol: class Date
location: class ByteValues
6 errors
Here are compilation errors from JDK 8 compiler:
ByteValues.java:28: error: incompatible types:
possible lossy conversion from int to byte
d1 = 128; // out of range
^
ByteValues.java:29: error: incompatible types:
possible lossy conversion from int to byte
d2 = -129; // out of range
^
ByteValues.java:30: error: incompatible types:
boolean cannot be converted to byte
d3 = (byte) (1==1); // type not compatible
^
ByteValues.java:31: error: incompatible types:
String cannot be converted to byte
d4 = (byte) "A"; // type not compatible
^
ByteValues.java:32: error: incompatible types:
<null> cannot be converted to byte
d5 = (byte) null; // type not compatible
^
ByteValues.java:33: error: cannot find symbol
d6 = (byte) new Date(); // type not compatible
^
symbol: class Date
location: class ByteValues
6 errors
Here are compilation errors from JDK 7 compiler:
ByteValues.java:28: possible loss of precision
found : int
required: byte
d1 = 128; // out of range
^
ByteValues.java:29: possible loss of precision
found : int
required: byte
d2 = -129; // out of range
^
ByteValues.java:30: inconvertible types
found : boolean
required: byte
d3 = (byte) (1==1); // type not compatible
^
ByteValues.java:31: inconvertible types
found : java.lang.String
required: byte
d4 = (byte) "A"; // type not compatible
^
ByteValues.java:32: inconvertible types
found : <nulltype>
required: byte
d5 = (byte) null; // type not compatible
^
ByteValues.java:33: cannot find symbol
symbol : class Date
location: class ByteValues
d6 = (byte) new Date(); // type not compatible
^
6 errors
Table of Contents
Execution Process, Entry Point, Input and Output
Primitive Data Types and Literals
►Bits, Bytes, Bitwise and Shift Operations
►"byte" Data Type and Implicit Casting
Operations on "byte" Data Type Values
Bitwise Operations on "byte" Values
Bitwise Operations on "byte" Values - Example Program
Shift Operations - Left, Right or Unsigned Right
Managing Bit Strings in Byte Arrays
Reference Data Types and Variables
StringBuffer - The String Buffer Class
System Properties and Runtime Object Methods
Generic Classes and Parameterized Types
Generic Methods and Type Inference
Lambda Expressions and Method References
Java Modules - Java Package Aggregation
Execution Threads and Multi-Threading Java Programs
ThreadGroup Class and "system" ThreadGroup Tree
Synchronization Technique and Synchronized Code Blocks
Deadlock Condition Example Programs
Garbage Collection and the gc() Method
Assert Statements and -ea" Option