byte 是 Java 原始类型。byte类型简称“字节型”,用于表示整数。
int 是 Java 原始类型。 int类型简称“整型”,用于表示整数。
short是java原始类型。 short类型简称“短整型”,用于表示整数。
long是java原始类型。 long类型简称“长整型”,用于表示整数。
byte、short、int、long 的初始默认值皆为 0 。
1. 取值范围
(1) byte
- byte类型占1个字节,即8位,其中最高位为符号位。
所以,byte类型的取值范围为−28−28
(2) int
- int类型 占4个字节,即32位,其中最高位为符号位。
所以,int类型的整数取值范围为: −231−231
(3) short
- short类型占2个字节,即16位,其中最高位为符号位。
所以,short类型的整数取值范围为: −215−215
(4) long
- long类型占8个字节,即64位,其中最高位为符号位。
所以,short类型的整数取值范围为: −263−263
2. 数据溢出
这里讨论的“数据溢出”是指数据超出所定义数据类型的范围。
先看 一段代码(代码1):
byte a=127;
byte b=-128;
System.out.println("a+1="+(a+1));
System.out.println("b+1="+(b-1));
- 1
- 2
- 3
- 4
- 5
运行结果为:
a+1=128
b-1=-129
再看另一段代码(代码2):
byte a=127;
byte b=-128;
System.out.println("(byte)(a+1)="+(byte)(a+1));
System.out.println("(byte)(b-1)="+(byte)(b-1));
- 1
- 2
- 3
- 4
- 5
运行结果为:
(byte)(a+1)=-128
(byte)(b-1)=127
讨论1:为什么代码1的运行结果能超出byte类型的取值范围?
当溢出使得数据结果超过 8 位,则只取低 8 位进行计算:”127 + 256 = 383“ ,388 用二进制表示为 1 0111 1111 ,已经超过 8 为,所以只去低 8 位 0111 1111 。0111 1111 首位为 0 ,代表整数。因为 0111 1111 为 127,所以”127 + 256 = 127“。
(short、int、long 类型数据溢出后规律与 byte 类型一样)
三. int 与 Integer 的区别
(byte 与 Byte 、short 与 Short 、long 与 Long 的区别皆和 int 与 Integer 的区别类似)
int 是语言本身的最基本的类型,而 Integer 是基于 int 的一个包装类,它有属性及方法。
对于包装类说,这些类的用途主要包含两种:
a. 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
b. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
Interger 在 java.lang 包中是这样定义的(代码3):
public Integer(int value) {
throw new RuntimeException("Stub!");
}
- 1
- 2
- 3
因此在程序中创建一个 Integer 对象的方式为(代码4):
Integer in=new Integer(5);
- 1
- Integer 类中的字段、方法
字段摘要
类型 | 字段名 | 意义 |
---|---|---|
static int | MAX_VALUE | 保持 int 类型的最大值的常量可取的值为 231-1。 |
static int | MIN_VALUE | 保持 int 类型的最小值的常量可取的值为 -231。 |
static int | SIZE | 以二进制补码形式表示 int 值的位数。 |
static Class | TYPE | 表示基本类型 int 的 Class 实例。 |
方法摘要
返回值类型 | 方法名(参数) | 作用 |
---|---|---|
static int | bitCount(int i) | 返回指定 int 值的二进制补码表示形式的 1 位的数量。 |
byte | byteValue() | 以 byte 类型返回该 Integer 的值 |
int | compareTo(Integer anotherInteger) | 在数字上比较两个 Integer 对象。 |
static Integer | decode(String nm) | 将 String 解码为 Integer。 |
double | doubleValue() | 以 double 类型返回该 Integer 的值。 |
boolean | equals(Object obj) | 比较此对象与指定对象。 |
float | floatValue() | 以 float 类型返回该 Integer 的值。 |
static Integer | getInteger(String nm) | 确定具有指定名称的系统属性的整数值。 |
static Integer | getInteger(String nm, int val) | 定具有指定名称的系统属性的整数值。 |
static Integer | getInteger(String nm, Integer val) | 返回具有指定名称的系统属性的整数值。 |
int | hashCode() | 返回此 Integer 的哈希码。 |
static int | highestOneBit(int i) | 返回具有至多单个 1 位的 int 值,在指定的 int 值中最高位(最左边)的 1 位的位置。 |
int | intValue() | 以 int 类型返回该 Integer 的值。 |
long | longValue() | 以 long 类型返回该 Integer 的值。 |
static int | lowestOneBit(int i) | 返回具有至多单个 1 位的 int 值,在指定的 int 值中最低位(最右边)的 1 位的位置。 |
static int | numberOfLeadingZeros(int i) | 在指定 int 值的二进制补码表示形式中最高位(最左边)的 1 位之前,返回零位的数量。 |
static int | numberOfTrailingZeros(int i) | 返回指定的 int 值的二进制补码表示形式中最低(“最右”)的为 1 的位后面的零位个数。 |
static int | parseInt(String s) | 将字符串参数作为有符号的十进制整数进行分析。 |
static int | parseInt(String s, int radix) | 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 |
static int | reverse(int i) | 返回通过反转指定 int 值的二进制补码表示形式中位的顺序而获得的值。 |
static int | reverseBytes(int i) | 返回通过反转指定 int 值的二进制补码表示形式中字节的顺序而获得的值。 |
static int | rotateLeft(int i, int distance) | 返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。 |
static int | rotateRight(int i, int distance) | 返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。 |
short | shortValue() | 以 short 类型返回该 Integer 的值。 |
static int | signum(int i) | 返回指定 int 值的符号函数。 |
static String | toBinaryString(int i) | 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 |
static String | toHexString(int i) | 以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 |
static String | toOctalString(int i) | 以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 |
String | toString() | 返回一个表示该 Integer 值的 String 对象。 |
static String | toString(int i) | 返回一个表示指定整数的 String 对象。 |
static String | toString(int i, int radix) | 用第二个参数指定的基数返回第一个参数的字符串表示形式。 |
static Integer | valueOf(int i) | 返回一个表示指定的 int 值的 Integer 实例。 |
static Integer | valueOf(String s) | 返回保持指定的 String 的值的 Integer 对象。 |
static Integer | valueOf(String s, int radix) | 返回一个 Integer 对象,该对象中保持了用第二个参数提供的基数进行分析时从指定的 String 中提取的值。 |
- 注:如文中有错误及不合理的地方,欢迎指出!