【Java】聊一聊数据类型
首先介绍一件事,Java是强类型语言,那么什么是强类型语言呢?
1、所有的变量在使用之前必须声明,声明变量比较简单,比如:int a;boolean b;char c=’0’;
2、指定类型的变量只能接受类型与之匹配的值。
Java的数据类型可以分为两大类,包括基本类型和引用类型。
引用类型主要包括类、接口、数组、null类型。所有的引用类型都是对对象的引用,对象包括实例和数组两种,这个就像C语言里面的指针,只是Java里面没有指针这个说法。在实际开发过程中,我们可以无视null类型,假定null只是引用类型的一个特殊直接量。
注意一点,字符串不是基本数据类型,字符串是一个类,也就是一个引用数据类型。
基本类型
基本类型分为boolean和数值类型,数值类型又主要分为整数类型和浮点类型。整数类型包括int、long、char,浮点类型包括float和double。说白了浮点型就是带小数的类型,整数就是不带小数的类型。
很多同学都讲char是字符型,实际上字符型也是一种整数类型,相当于无符号整数类型,毕竟每个字符都有一个对应的ASCII码。
整数类型
int类型是最常用的整数类型,但是要注意一下,如果一个数超过了int类型的表示范围,系统不会自动把这个整数当成long类型来处理,需要手动处理,在整数值后面增加L,如下:
long value1 = 999999999999999;//这是错误的
long value2=999999999999999L;//这是正确的
Java的整数有四种表示方式:十进制、二进制(0b或者0B开头)、八进制(以0开头)、十六进制(0x或者0X开头)。
字符型
字符型表示单个字符,使用单引号(‘)括起来,java语言使用16位的Unicode字符集作为编码方式。字符型值主要包括下面三种表示形式:
1、直接通过单个字符来指定字符型值,例如’A’;
2、转义字符表示特殊字符型值,如’\n’(换行符);
3、直接使用Unicode值,表示字符型值,格式为’\uXXXX’,其中XXXX表示一个十六进制的整数。
浮点型
double表示双精度浮点数,一个double的数值占8字节,64位;float表示单精度浮点数,一个float的数值占4字节,32位。Java语言的浮点型默认是double类型,如果希望一个浮点型值当做float类型处理,应当在这个浮点类型后紧跟f或F。
在jdk1.7以后,程序猿可以在数值中自由使用下划线分割数值。如下:
double a = 3.14_15_92_65;
double b = 1_2_3_4.5;
Boolean类型
Java中,boolean类型的数值只有true和false,不能使用0和非0的表示。因为计算机分配内存的单元是字节,因此该类型大多数时候占用8位。
基本类型的转换
在Java里面,类型范围小的值可以直接赋给类型范围大的变量,系统自动进行类型转换,反之需要强制转换。就像两个瓶子,小瓶子里面的水可以直接倒进大瓶子里面,不会出现问题,大瓶子里面的水不能自动倒进小瓶子里面,因为系统不知道小瓶子的容量够不够,这就需要程序猿自己去判断一下,再进行倒水的操作,如果小瓶子容量不够,那么数据会和水一样溢出,造成数据的丢失。例如:浮点数强制转换成整数类型时,会丢失小数部分,所以在强制转换的时候,大家要多加注意。
当一个算数表达式中包含多个基本类型的值是,整个算术表达式的数据类型将会自动提升:
1、所有的byte、short、char类型被提升为int类型;
2、整个算术表达式的数据类型自动提升为与表达式中最高等级操作数同样的类型。
最后留一个问题,如果一个表达式中含有字符串,那么这个表达是会怎么运算呢????