Java基础--数据类型之整数类型

一、数据类型的分类

1、基本数据类型(primitive data type) 最基础的数据类型 八种

       整数型  byte  short int long

       浮点型  float  double  小数

       字符型  char

       布尔型  boolean   true false  做逻辑判断

2、引用数据类型(reference data type)类 抽象类 接口 枚举 …. …

二、整数类型

byte   short   int   long

各自的范围:

类型

占用存储空间

表数范围

byte

1字节

-27 ~ 27-1(-128~127)

short

2字节

-215 ~ 215-1 (-32768~32767)

int

4字节

-231 ~ 231-1 (-2147483648~2147483647) 约21亿

long

8字节

-263 ~ 263-1

十进制整数,如:99, -500, 0

八进制整数,要求以 0 开头,如:015

十六进制数,要求 0x 或 0X 开头,如:0x15

二进制:要求0b或者0B开头,如:0b11

Q1:这四个整数类型有什么区别吗?

我们先来定义四个不同整数类型的变量,然后输出,可以看到:

public class Test5{
	public static void main(String[] args){
		byte b=10;
		short c=10;
		int i=10;
		long l=10;
		System.out.println(b);
		System.out.println(c);
		System.out.println(i);
		System.out.println(l);
	}
}

Java基础--数据类型之整数类型_第1张图片

我们可以看到,输出结果都是10,并没有什么区别啊?

我们现在将变量b的值改为“ -129 ”:

Java基础--数据类型之整数类型_第2张图片 

开始报错了!

我们来看一下各个整数类型的范围吧:

byte  字节型整数。电脑存储数据,并不是用无限位的二进制来表现的,一定是有限制的。

         1字节  8位  存储一个整数       00000000 ~ 11111111     一共能存储2 ^ 8 = 256个数字

         256个数字,正负数区分一下,它的范围就是:

         - 128(2^7)~ 127(2^7 -1)

         如果存储数据超过这个范围,就存不了啦!

short  短整型整数。

           2字节 16位  存储一个整数   一共能存储2 ^ 16= 65536个数字   

          - 32768(2^15)~ 32767 (2^15 -1)

int       整数型整数。

           4字节 32  存储一个整数   一共能存储2 ^ 32= 4294967296个数字  

            - 2,147,483,648(2^31)~ 2,147,483,647 (2^31 -1)

            默认存储整数常量的类型。

long    长整型整数。

             8字节 64  存储一个整数   一共能存储2 ^ 64= 18446744073709551616个数字

              - 9223372036854775808(2^63)~ 9223372036854775807 (2^63 -1)

上面报错的原因,也就是赋的值超出了byte的范围。 

Q2:为什么要有这么多数据类型?

 我们在完成同样一个计算功能的时候,程序所占用的内存越少越好。

在底层转码的时候,可能会用到byte和short,正常情况下,我们用int就可以啦。

Q3:计算机默认存储整数常量的类型是int,那我们存储数据过大时,如何告诉计算机我们存储的是long类型呢?

我们先来看看,在long类型存储范围内,咱们存储一个较大的数字:

Java基础--数据类型之整数类型_第3张图片

编译器报错:过大的整数! 

不是说long类型过大,而是说数字过大了。

默认存储整数常量的类型是int类型。

但此时int已经装不下这个数字了,我们就要告诉计算机这么大的数据,要用long类型来存储!

如何告诉计算机呢?   在数字后面写一个L,大写小写均可。(推荐大写L,小写和数字1太像了

我们来看一看:

Java基础--数据类型之整数类型_第4张图片

  

 Q4:如果在创建整数变量的时候。想用二进制或者八进制、十六进制来写,分别如何去写呢?

public class Test6{
	public static void main(String[] args){
	    //十进制整数,如:99, -500, 0
		int a=99;
		
		//八进制整数,要求以 0 开头,如:015((八进制))-->5*(8^0)+1*(8^1)=13(十进制)
		int b=015;  //直接写15的话,会被当做十进制的15。
					//以0开头的话,是告诉Java,这个15是一个八进制的15,即13。
		
		//十六进制数,要求 0x 或 0X 开头,如:0x15(十六进制)-->5*(16^0)+1*(16^1)=21(十进制)
		int c=0x15; //以0x开头的话,是告诉Java,这个15是一个十六进制的15,即21。
		
		//二进制:要求0b或者0B开头,如:0b11(二进制)-->1*(2^0)+1*(2^1)=3 (十进制)
		int d=0b11; //以0b开头的话,是告诉Java,这个15是一个二进制的11,即3。
		
		//输出时还是以十进制的值输出!
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
	}
}

我们可以看一下输出结果: 

Java基础--数据类型之整数类型_第5张图片

 

          

你可能感兴趣的:(Java基础,java,开发语言)