java基础3:Java数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
Java总共有两种数据类型,主要有基本类型和引用类型,基本类型有8种,引用数据类型(数组、类、接口)有3种。
在计算机内部,所有信息都采用二进制表示,每个二进制由0和1两种状态,一个字节有8位,也就是由8个0或1构成,如果short类型的6在计算机中是如何存储的,short是两个字节,那么short 6的二进制为:00000000 00000110,int类型的6在计算机中存储为32位:00000000 00000000 00000000 00000110。
如:
byte score;//保存单科分数
short age;//保存年龄
int sumScore;//保存总分
long fileSize;//保存文件长度
foat x,y;
double result;//保存运算结果
char sex;//保存性别
boolean isContinue;//表示是否继续
String name;//表示姓名
1.整数型
byte/short/int/long
Java语言整数型常量有三种表示方法
l 十进制
l 八进制,八进制0开头,如:013
l 十六进制,十六进制0x开头,如:0x23
Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如:
long l = 999999999999L
2.浮点型
Java语言中浮点类型包括:float/double
Java语言中浮点类型默认为double
3.布尔类型(true、false)
4.基本类型的转换
(1)默认转换:byte-short-int-long-float-double。
(2)强制转化:大转小,注意:只要不超出范围可以将整型值直接赋值给byte,short,char。
【示例代码】
public class DataTypeTest06 {
public static void main(String[] args) {
//出现错误,1000超出了byte的范围 //byte a = 1000;
//正确,因为20没有超出byte范围 //所以赋值 byte a = 20;
//变量不能重名 //short a = 1000;
//正确,因为数值1000没有超出short类型的范围 //所以赋值正确 short b = 1000;
//正确,因为默认就是int,并且没有超出int范围 int c = 1000;
//正确,可以自动转换 long d = c;
//错误,出现精度丢失问题,大类型-->>小类型会出现问题 //int e = d;
//将long强制转换成int类型 //因为值1000,没有超出int范围,所以转换是正确的 int e = (int)d;
//因为java中的运算会会转成最大类型 //而10和3默认为int,所以运算后的最大类型也是int //所以是正确的 int f = 10/3;
//声明10为long类型 long g = 10;
//出现错误,多个数值在运算过程中,会转换成容量最大的类型 //以下示例最大的类型为double,而h为int,所以就会出现大类型(long)到小类型(int) //的转换,将会出现精度丢失问题 //int h = g/3;
//可以强制转换,因为运算结果没有超出int范围 //int h = (int)g/3;
//可以采用long类型来接收运算结果 //long h = g/3;
//出现精度损失问题,以下问题主要是优先级的问题 //将g转换成int,然后又将int类型的g转换成byte,最后byte类型的g和3运算,那么 //它的运算结果类型就是int,所以int赋值给byte就出现了精度损失问题 //byte h = (byte)(int)g/3;
//正确 //byte h = (byte)(int)(g/3);
//不能转换,还有因为优先级的问题 //byte h = (byte)g/3;
//可以转换,因为运算结果没有超出byte范围 //byte h = (byte)(g/3);
//可以转换,因为运算结果没有超出short范围 short h = (short)(g/3);
short i = 10;
byte j = 5;
//错误,short和byte运算,首先会转换成int再运算 //所以运算结果为int,int赋值给short就会出现精度丢失问题 //short k = i + j;
//可以将运算结果强制转换成short //short k = (short)(i + j);
//因为运算结果为int,所以可以采用int类型接收 int k = i + j;
char l = 'a'; System.out.println(l);
//输出结果为97,也就是a的ascii值 System.out.println((byte)l);
int m = l + 100; //输出结构为197,取得a的ascii码值,让后与100进行相加运算 System.out.println(m);
} } |