1.Java中的基本数据类型
Java中的基本数据类型与C语言中的基本数据类型很相似,但又不完全一样。特别是float常量的格式与C语言中的有很大区别。
2.Java基本数据类型种类
在Java中有8种基本数据类型,可以借助下图了解
2.1逻辑类型
常量:true、false。
变量:使用关键字boolean来声明逻辑变量,在声明时也可以赋初值。
public class B {
public static void main(String[] args) {
boolean o = true, n = true,off = false,isTriangle;
System.out.println(o);
System.out.println(n);
System.out.println(off);
}
}
boolean类型在内存中占一位(不是一个字节),在Java中不可以使用0或者非0的整数代替true和false,例如:表达式10>20-17的结果是1,这句话就是错误的正确结果应该为true。它用来判断条件,一般实现程序流程控制。
public class B {
public static void main(String[] args) {
boolean flag = true;
if(true){
System.out.println("正确");
}else{
System.out.println("错误");
}
}
}
2.2整数类型
整数类型有:int、byte、short、long四种
2.2.1 int型
常量:
变量:使用关键字int来声明int型变量,在声明时也可以赋初值。例如:int x = 13,y = 0x77ab, z = 0b11;
对于int型变量,分配4字节内存,所以取值范围是( - 2)^ 31 ~ ( 2)^31 -1
2.2.2 byte型
变量:使用关键字byte来声明byte变量。例如:
byte x = 12,t = 22,漂亮 = 98;
常量:Java中不存在byte型常量的表示法,但能把一定范围的int型常量赋值给byte型变量。对于byte型变量,分配1个字节内存,占8位,取值范围为:( - 2)^7~(2)^7-1
2.2.3 short型
变量:可以用关键字short来声明short型变量。例如:short x = 12,y=1123;
常量:Java中不存在short型常量表示法,但可以把一定范围的int型常量赋值给short型变量。
2.2.4 long型
常量:long型常量后用后缀L表示,例如108L、07123L(八进制)
变量:使用关键字long来声明long型变量,例如:long width = 12L;
对于long型变量分配8字节内存,占64位,取值范围为:( - 2)^ 63 ~ (2)^63 - 1
2.3 字符类型
常量:'A'、'B'、'\t'等等,即使用单引号括起的Unicode表中的一个字符。
变量:使用关键字char来声明的char型变量,例如:char ch = 'A';
对于char变量,分配2字节内存占16位,最高位不是符号位,没有负数的char。取值范围:0~65535。
2.4 浮点类型
2.4.1 float型
常量:像345.234f、213.45F、213.0f(小数表示法)、2e40f(2乘10的40次方,指数表示法)等等都是float类型。注意:常量后面必须有f或F后缀。
变量:使用float关键字来声明。
3.数据类型转换
当把一种基本数据类型变量的值赋给另一种基本数据类型变量时会涉及数据转换。在了解数据类型转换前需先了解前面所说的几种基本数据类型的精度大小。如图从左到右精度逐渐升高。
赋值时会有两种情况:1.将精度低的赋值给精度高的,2.将精度高的赋值给精度低的。
当把精度低的变量的值赋值给精度高的变量时,系统自动完成数据类型的转换。但当把精度高的变量的值赋给精度低的变量时,必须使用类型转换运算:
(类型名)要转换的值;例如:
由运行结果可知,类型转换运算后的结果的精度可能低于原数据的精度。
注意:将一个int型常量赋值给一个byte、short和char型变量时,不可以超出这些变量的取值范围
,否则必须进行类型转换运算。比如将int型常量128赋值给byte型变量,必须进行类型转换运算(将导致精度损失)。
a,b输出-128,127是因为都发生了数值溢出,计算机在进行运算时,会将所有进制转换为2进制,以-129为例转化为二进制int型数据占32位即:10000000 00000000 00000000 10000001存储用补码,负数补码=原码取反+1。11111111 11111111 11111111 01111111。byte型占8位,截取01111111部分,取反码再转原码,(正数反码等于原码),再转二进制得127。
不足之处还请多多指点。