数据类型
数据类型及数据的类型,有两个作用,开辟内存空间以及决定存放的数据类型,Java的基本数据类型有八种,具体情况如下。
一、整形数据(byte、short、int、long)
Java整形数据有四种表示形式,byte,short,int,long,他们的区别为取值范围不同,之所以不同是为了节省空间,例如年龄变量,我们只需要用short型即可(byte最大为127),没必要采用int型,占内存。
Java整数有四种表示形式,分别如下:
1、十进制整数:如127,-5等
2、二进制整数:以0b开头,如0b011(十进制3)0~1
3、八进制整数:以0开头,如011(十进制9)0~7
4、十六进制数:以0x开头,如0x01f(十进制31)0~9,a~f/A~F相同意义
二、浮点型数据(float、double)
浮点型数据有以下两种形式
1、十进制形式:如3.14
2、科学计数法:如3e8(表示3*10的8次方)E,e均可
注:float型精度要比double小,float a=1.3,会出错,1.3默认类型为double,故应为double a=1.3(亦可进行强制类型转换,下面会提及)
三、字符型数据(char)
与C语言不同的是,C语言字符型数据采用的是ASCII码,一个字符一个字节,表示范围为0到2的8次方-1(0-255),而Java字符采用的是Unicode编码,一个字符两个字节,表示范围为0到2的16次方-1(0-65535),前256位都相同,后面相当于ASCII的扩展。
该种数据类型的变量可以有以下几种赋值方式:
1、 使用英文单引号(' ')括起单个字符;例如:
char c1 = 'a';
char c2 = '中';//char可以存储一个中文(一个中文也占2个字节);
2、 使用英文单引号括起来十六进制字符代码值来表示单个字符,格式为'\uXXXX',其中u是约定的前缀,为Unicode的第一个字母,例如:
char c1 ='\u0061';// 实质代表a字母
3、可以直接使用数字表示单个字符,例如:
char c2 = 97;//表示a字母
4、 某些特殊的字符可以采用转义符'\'来表示,以将其后面的字符转变为其它含义,例如:
char c1 = '\t';//制表符
char c2 = '\n';//换行符-New Line
char c3 = '\r';//回车符-Carriage Return
四、布尔型数据(boolean)
布尔型,又称逻辑类型,只有true和false两个取值,默认初始值为false。这区别与C语言,在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。
但在二进制逻辑中Java规定1为真0为假。
类型转换
类型转换有两种:自动类型转换与强制类型转换
1、将表示范围小的数据类型赋值给表示范围大的数据类型时,Java自动使用隐式类型完成数据类型转换
2、而将表示范围大的数据类型赋值给表示范围小的数据类型时,只能进行强制类型转换,且会导致数据精度受损。
强制类型转换可能导致数据精度损失或溢出
转换格式:(要转换的类型)被转换的值
其中34.98f指float型34.98,不可省
编程实验:
public class HelloWorld{ public static void main(String[] args){ //整形byte short int long int age1=12;//十进制 System.out.println(age1); int age2=0b0111;//二进制0 1 System.out.println(age2); int age3=017;//八进制0~7 System.out.println(age3); int age4=0x01f;//十六进制0~9 a~f System.out.println(age4); int age_4=0x01F; System.out.println(age_4); System.out.println("~~~~~~~~~~~~~~~"); //浮点型float double double price=9.9;//十进制 System.out.println(price); double pi=3.14e2;//科学计数法 System.out.println(pi); System.out.println("~~~~~~~~~~~~~~~"); //字符型char char letter1='a'; System.out.println(letter1); char letter2=65; System.out.println(letter2); char letter3='\u0041'; System.out.println(letter3); //转义字符 System.out.println("HelloWorld"); System.out.println("\tHello\nWorld"); System.out.println("~~~~~~~~~~~~~~~"); //boolean型true false boolean flag=true; System.out.println(flag); System.out.println("~~~~~~~~~~~~~~~"); //数据类型转换 byte a=12; int b=a;//小范围数据可以直接赋给大范围数据类型的变量,自动类型转换 System.out.println(b); float c=0.1f;//0.1为double型,64位,大范围不能直接赋值给小范围 System.out.println(c); int d=(int)3.14;//强制类型转换 System.out.println(d); } }编译结果: