java基本数据类型byte short int long float double char

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 中提取的值。
  • 注:如文中有错误及不合理的地方,欢迎指出!

猜你喜欢

转载自blog.csdn.net/mawei7510/article/details/84949975