Java基本数据类型
整数类型:byte、short、int、long
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。
说明
- 定义long类型的变量,赋值时需要以"l"或"L"作为后缀。
- Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。
- Java的整型常量默认为 int 型。
补充:计算机存储单位
字节(Byte):是计算机用于计量存储容量的基本单位,一个字节等于8 bit。
位(bit):是数据存储的最小单位。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8 bit 就称为一个字节(Byte)。
转换关系:
8 bit = 1 Byte
1024 Byte = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
浮点类型:float、double
与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。
浮点型常量有两种表示形式:
十进制数形式。如:5.12 512.0f .512 (必须有小数点)
科学计数法形式。如:5.12e2 512E2 100E-2
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
定义float类型的变量,赋值时需要以"f"或"F"作为后缀。
Java 的浮点型常量默认为double型。
说明
- 并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。
- 浮点类型float、double的数据不适合在不容许舍入误差的金融计算领域。如果需要精确数字计算或保留指定位数的精度,需要使用BigDecimal类。
测试1
//测试1 System.out.println(0.1 + 0.2);//0.30000000000000004 //测试2 float f1 = 123123123f; float f2 = f1 + 1; System.out.println(f1); //1.2312312E8 System.out.println(f2); //1.2312312E8 System.out.println(f1 == f2); //true
测试2:定义圆周率并赋值为3.14,现有3个圆的半径分别为1.2、2.5、6,求它们的面积。
double PI = 3.14;//圆周率 double radius1 = 1.2; double radius2 = 2.5; int radius3 = 3; System.out.println("第一个⚪的面积 " + PI * radius1 * radius1); //4.521599999999999 System.out.println("第二个⚪的面积 " + PI * radius2 * radius2); //19.625 System.out.println("第三个⚪的面积 " + PI * radius3 * radius3); //28.259999999999998
测试3:依琳要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度
//℃ = (℉ - 32) / 1.8 double hua = 80; double she = (hua - 32) / 1.8; System.out.println("华氏度 " + hua + " 转换摄氏度是 " + she);//26.666666666666664
字符类型:char
char 型数据用来表示通常意义上“字符”(占2字节)
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
字符型变量的三种表现形式:
形式1:使用单引号(' ')括起来的单个字符。
例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
形式2:直接使用 Unicode值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。
例如:\u0023 表示 '#'。
形式3:Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。
例如:char c3 = '\n'; // '\n'表示换行符
转义字符 |
说明 |
Unicode表示方式 |
\n |
换行符 |
\u000a |
\t |
制表符 |
\u0009 |
\" |
双引号 |
\u0022 |
\' |
单引号 |
\u0027 |
\\ |
反斜线 |
\u005c |
\b |
退格符 |
\u0008 |
\r |
回车符 |
\u000d |
char类型是可以进行运算的。因为它都对应有Unicode码,可以看做是一个数值。
布尔类型:boolean
boolean 类型用来判断逻辑条件,一般用于流程控制语句中:
if条件控制语句;
while循环控制语句;
for循环控制语句;
do-while循环控制语句;
boolean类型数据只有两个值:true、false,无其它
不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
拓展:Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示。——《java虚拟机规范 8版》
boolean isFlag = true; if(isFlag){ //true分支 }else{ //false分支 }
编码时建议不要这样写:if ( isFlag = = true ),只有新手才如此。关键也很容易写错成if(isFlag = true),这样就变成赋值isFlag为true而不是判断!老鸟的写法是if (isFlag)或者if ( !isFlag)。