「Java 专栏」06-Java 中的基本数据类型
AI悦创
共 8014字,需浏览 17分钟
·
2022-11-04 09:50
你好,我是悦创。
原文首发:https://bornforthis.cn
1. 目录
认识二进制 数字的基本数据类型 布尔和字符数据类型 使用各种基本数据类型
public class BigNumber {
public static void main(String[] args) {
int bigNum = 9999999999; // 会报错:java: 整数太大
long number = 9999999999L; // 解决方法
}
}
从上面的代码,我们引出了几个问题:
long 是个什么东西? L 又是什么东西?
这就是你要学习本届内容的原因!
2. 认识二进制
2.1 十进制
每一位可以是 0~9
这 10 个值,到 10 进位。一百用十进制表示就是 100,十就是 10。
2.2 二进制
每一位可以是 0 和 1 这两个值,到 2 进位。一百用二进制表示就是 1100100,十就是 1010。
2.3 十六进制
每一位可以是 0~F
这15个值,到 16 进位。一百用十六进制表示就是 64,十就是 A。
2.3 bit 和 byte
Bit 意为“位”或“比特”,是计算机运算的基础,属于二进制的范畴; Byte 意为“字节”,是计算机文件大小的基本计算单位;「换算」1 Byte = 8 Bits【1B=8b】 1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB
一个二进制的位叫做一个 bit。俗称小 b。宽带中的单位,都是小 b 八个二进制的位,组成一个 byte,俗称大 B。硬盘等存储的单位,都是大 B Byte 是计算机中基本的衡量存储的单位,计算机在对外使用时不会用小 b(bit) 作为划分存储的单位。
3. 数字的基本数据类型
3.1 整数类型
byte 占用 1 个 byte,值域是 -128~127
short 占用 2 个 byte,值域是 -32768~32767
int 占用 4 个 byte,值域是 -2147483648~2147483647
。Java 中整数缺省是 int 类型【缺省:默认情况下,没有特殊指明类型下,Java 认为是 int】 【缺省,即系统默认状态,意思与“默认”相同。】 【“缺省”最初来源于计算机英文文档中的单词"default","default”有很多意思:违约、缺省、拖欠、默认,由于当时计算机方面的翻译水平不高,于是就把这个词直译成了“缺省”,其实应该取它的引申意思“默认”。后来的人们发现,无论怎么解释,缺省好像都说不通,但是由于之前的人们已经习惯了“缺省”这个用法,故依旧延续了这个用法。后来的新一辈的人们觉得说起来很拗口,就使用了"default”的引申意思,所以现在在大多数计算机技术文档或者软件里面,采用的都是意译之后的“默认”这个用法。】 long 占用 8 个 byte,值域是 -9223372036854774808~9223372036854774807
3.2 浮点(小数)类型
float 占用 4 个 byte ,有精度,值域复杂 ±340282346638528859811704183484516925440
double 精度是 float 的两倍,占用 8 个 byte。Java 中浮点数缺省是 double 类型。
public class FloatCalc {
public static void main(String[] args) {
System.out.println(1 / 3.0);
// 实际来说是无限循环小数,但是对 Java 来说能力有限只能显示/计算范围内的结果
// 也可以说,计算机没有能力把这个无限循环表达出来。在它可能的存储空间里,只能保存到 0.3333333333333333
}
}
3.3 符号位
用 byte 来举例子,一个 1 byte = 8 bit;2【二进制】 的 8 次方是 256,而有一个是符号位,所以最后是:128,也就是上面给出的范围。 参考:https://bornforthis.cn/posts/14.html
4. 布尔和字符数据类型
4.1 布尔和字符数据类型
boolean 占用 4 个 byte,值域是 true,false。 char 占用 2 个 byte,值域是所有字符(最多 65535 个)
public class BooleanAndChar {
public static void main(String[] args) {
System.out.println(1 < 2); // true
System.out.println(1 > 2); // false
System.out.println("ABC");
System.out.println('A'); // 只能有一个字符
}
}
5. 使用各种基本数据类型
例程 L 后缀 感受浮点数精度 整数缺省是 int 类型,浮点数缺省是 double 类型 编译错误的定位和修正
6. 代码实操
public class PrimaryTypes {
public static void main(String[] args) {
byte byteVar = 99;
// byte byteVar = 128; // 超出 byte 范围
System.out.println(byteVar);
short shorVar = -30000;
System.out.println(shorVar);
int intVar = 300000;
System.out.println(intVar);
long longVar = 99;
// long bingLongVar = 9999999999; // 缺省是 int,需要在末尾添加 L
long bingLongVar = 9999999999L; // 缺省是 int,需要在末尾添加 L
// long bingLongVar = 9999999999l; // 不推荐小 l,比如:11111111l,你能发现哪个是 1 哪个是 l 么?
System.out.println(bingLongVar);
float floatVar = 100.1f; // 缺省是 double 需要在后面添加 f/F
// float floatVar = 100.1; // 缺省是 double 需要在后面添加 f/F
System.out.println(floatVar);
/*
* 解析:缺省是 double,也就是说浮点数会被自动识别为 double;
* 但是你前面的变量被声明为 float 这样就和系统相冲突啦,就需要标明数字类型*/
double doubleVar = 100.1;
System.out.println(doubleVar);
boolean condition = true;
boolean fcondition = false;
System.out.println(condition);
char ch = 'A';
System.out.println(ch);
float floatVar1 = 100.1111111111f;
System.out.println("floatVar1:>>>" + floatVar1);
double dobleVar1 = 100.1111111111;
System.out.println("dobleVar1:>>>" + dobleVar1);
}
}
"C:\Program Files\Java\jdk-11.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.2\lib\idea_rt.jar=49882:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.2\bin" -Dfile.encoding=UTF-8 -classpath D:\Java_Coder\Coder06\out\production\Coder06 PrimaryTypes
99
-30000
300000
9999999999
100.1
100.1
true
A
floatVar1:>>>100.111115
dobleVar1:>>>100.1111111111
Process finished with exit code 0
import java.math.BigDecimal;
public class PrimaryTypes {
public static void main(String[] args) {
byte byteVar = 100;
System.out.println(byteVar);
short shortVar = 30000;
System.out.println(shortVar);
int intVar = 1000000000;
System.out.println(intVar);
long longVar = 80000000000L;
System.out.println(longVar);
float floatVar = 100.0000000666F;
System.out.println(floatVar);
double doubleVar = 100.0000000666;
System.out.println(doubleVar);
boolean booleanVar = true;
System.out.println(booleanVar);
char charVar = 'a';
System.out.println(charVar);
}
}
7. 技巧
评论