目录
前言:
基本数据类型
1、int
2、byte(字节型)
3、short
4、long
5、float
6、double
7、boolean(布尔型)
8、char
引用数据类型
String类型
总结:
前言:
数据类型是一门语言中最基础的东西,当然也很简单。毕竟简单,因此我们以后再敲代码的时候就尽量不要犯这种低级错误。当然我写文章的目的主要是为了和C的数据类型区分开来,加强记忆才写的,都是一些我自已的理解。(如有问题,欢迎指正!!!)
数据类型分为两类,一类是基本数据类型,一类是引用类型。
而基本数据类型中整形有int short long和C语言区别不大,所以这部分没什么可讲的。
但是byte boolean是新增的类型 float和char和long与C语言中稍有不同,引用类型也是要重点学习的。而且不论是在32还是64位操作系统,数据类型的大小都是一样的
基本数据类型
1、int
int型也叫整形,和C一样,在定义的变量为整数时使用。例如:int a = 1;
int占4个字节
int没有 有无符号之分 所以我们也可以算出int的范围。
这个地方不懂的话,可以看一下我的数据类型在内存中存储那篇文章。
剩下的和C一样了
2、byte(字节型)
byte是我们在C语言中没有的数据类型,所以要认真学习byte型。
byte虽然叫字节型,但它也是定义整数的时候使用的。
byte占用1个字节
最大值为:-2^7 最小值为:2^7-1
所以byte的表示范围就是-128~127 数据不大建议记下来!!!
如果你在定义变量的值超过了byte的表示范围 ,编译器会报错。
所以在定义变量时不要超过数据类型的表示范围。
再给大家补充一点,看上图,b的那一行报错了,但是此时报错的原因不是因为b超过了byte的表示范围。而是因为在a+1的时候,编译器会认为1是int型,两个是不同的数据类型,一个占1个字节,另外一个占4个字节。 会进行类型的提升,a+1就会变成4个字节,b是一个字节,所以无法赋值。所以无法相加。此时我们就需要类型的转换。看下图
此时长得帅的小伙伴就要问了,现在b不也超过了byte的范围了吗?为什么没报错?
别急,既然它没有报错,我们就可以打印一下b,看一下b的值。
此时b的值不是128而是-128,这是为什么呢?
因为这是强制类型转换,而且后面是一个表达式,不是字面常量,编译器在没编译的时候也不知道它是多少,只有在运行的时候才知道b是多少,所以127+1就变成了128。可以把它想象成一个圆就像上图那样,只要是表达式,不是字面常量都可以算出来,且不会报错。
3、short
short就是短整型,占2个字节,所以表示范围比整形小,我们也可以算出short的表示范围。
最大值为:2^15-1
最小值为: -2^15
4、long
long是长整型,占8个字节,表示范围比int 大
最大值为: 2^63-1
最小值为:2^63
与C稍有不同的是 long 在定义变量时 要在后面加L或l
//long a = 10 //如果不加L或l 编译器汇报错 编译会认为10是int 型
long a = 10L ; long b = 10l;一般情况下都加L 不加l是因为怕看成1 造成不必要的误会。
5、float
float是单精度浮点数 的数据类型,与C稍微有点不同。
float在Java中占4个字节,在定义变量赋值时,不能直接赋值。举个例子:
float a = 1.2 //err
在C语言中,我们可以这么使用。但在Java中不能够这么使用,因为1.2在编译器看来它是一个double类型的数据,而double在Java中占8个字节。8个字节的数赋值给4个字节的变量,会造成数据丢失,编译器会报错。
怎么定义变量呢?只需要在1.2后面加f 变成 float a = 1.2f;
这样1.2就变成float类型的数据了,编译器就不会报错了。
6、double
double是双精度浮点数的数据类型,占8个字节。用法与C语言相同,就不在详细展开了。
7、boolean(布尔型)
C语言中非0即真,只有0是假,除了0之外都是真
java中ture为真,flase为假。
既然是数据类型,怎么给变量赋值?看下面
boolean flag1 = ture; boolean flag2 = false;
flag1表示为真,flag2表示为假
boolean非常特殊,JVM并没有明确大小
8、char
char是字符型,不是整型,在C语言中,char属于整型,但在java中它就是字符型。
char的取值范围是 0~65535 不能表示负数
char在java中占2个字节,众所周知一个汉字也占2个字节,所以char可以直接赋值汉字。
在java中,char的字符集与C语言不同。
C语言中char的取值范围是0~255 而Java的取值范围更大
C语言char 的 字符集是ASCII码字符集 java使用的是Unicode字符集.
引用数据类型
String类型
String是字符串类型!
没错,java中有字符串类型,不像C语言那样,要存放字符串需要定义一个字符数组,String的出现,特别方便!看下图:
字符串用String类型的变量直接赋值,而且也可以直接打印出来,不需要用循环也能完成 还有特别重要的一点,它可以直接算出字符串的长度 只需要变量名.length 不需要在用sizeof算长度了
总结:
虽然数据类型很简单,不过这些是最基础的东西,不可忽视基础!!!(如有错误,欢迎大佬指正!)



