数据类型
数据类型及数据的类型,有两个作用,开辟内存空间以及决定存放的数据类型,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);
}
}
编译结果: