在Java中有8大基本数据类型,可分为3类:数值型、字符型、布尔型,而数值型又可以分为整型和浮点型。由于Java和C++都属于强类型的语言,定义一个变量时必须指定该变量的类型,而且在之后的赋值过程中只能赋相应类型的值。
目录
1.基本数据类型
8大基本类型:byte、short、int、long、float、double、char、boolean(如图)
2.变量和类型
变量:指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据
类型:是对变量的种类进行了划分, 不同的类型的变量具有不同的特性
2.1整型变量
2.1.1字节变量
语法格式:
byte 变量名 = 初始值 ;
代码示例:
byte num =10;
System.out.println(num);
注意:
1.字节类型表示的也是整数,只占一个字节, 表示范围较小[-128,127]
2.byte一般用在文件和网络传输中
3.变量名是变量的标识, 后续都是通过这个名字来使用变量
4.Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值
5.初始化操作是可选的,但是建议创建变量的时候都显式初始化
6. 最后不要忘记分号,否则会编译失败
7. // 表示注释,注释作为代码的解释说明部分,不参与编译运行
8.在java中变量在定义时可以不赋值,但是一般推荐定义时赋予初始化值。在方法中定义的变量(局部变量)必须赋值后才能使用
补充:
字节是计算机中表示空间大小的基本单位,计算机使用二进制表示数据,认为 8 个二进制位(bit) 为一个字节(Byte)。我们平时的计算机为 8GB 内存,意思是 8G 个字节。其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB,所以 8GB 相当于 80 多亿个字节。
2.1.2短整型变量(基本不用)
语法格式:
short 变量名 = 初始值;
代码示例:
short num =10;
System.out.println(num);
2.1.3整型变量(重点)
语法格式:
int 变量名 = 初始值;
代码示例:
int num =10;
System.out.println(num);
注意:
1.在 Java 中,一个 int 变量占 4 个字节,与操作系统和JVM版本都无关
2.4 个字节表示的数据范围是 -2^31~2^31-1 , 也就大概是 -21亿 到 21亿
如果运算的结果超出了 int 的最大范围,就会出现溢出的情况。
先使用以下代码查看一下 Java 中的整型数据范围:
System.out.println(Integer.MAX_VALUE);//int的最大值
System.out.println(Integer.MIN_VALUE);//int的最小值
结果如图:
int a = Integer.MAX_VALUE;
//a已经超出了int的最大值范围
a = a + 1;
System.out.println(a);
结果如图:(会发现输出了最小值)
21亿这样的数字对于当前的大数据时代来说,是很容易超出的。针对这种情况,我们就需要使用更大范围的数据类型来表示了,Java 中提供了 long 类型
2.1.4长整型变量
语法格式:
long 变量名 = 初始值 ;
代码示例:
long a = 10L;//定义一个长整型变量, 初始值写作10L也可以是小写的l, 不是数字1
System.out.println(a);
补充:
1.字面量,就是在程序中直接写出来的值,整型字面量默认为int型,浮点数字面量默认为double型。
2.Java 中 long 类型占 8 个字节,表示的数据范围 -2^63 ~ 2^63-1
2.2浮点型变量
2.2.1单精度浮点型变量
语法格式:
float 变量名 = 初始值 ;
代码示例:
float a = 1.0f; // 也可以写作 1.0F,因为浮点型默认为double型
System.out.println(a);
float 类型在 Java 中占四个字节, 由于表示的数据精度范围较小, 一般在工程上用到浮点数都 优先考虑 double, 不太推荐使用 float。
2.2.2双精度浮点型变量(重点)
语法格式:
double 变量名 = 初始值 ;
代码示例:
double a = 1.0;
System.out.println(a)
特殊点
代码1:
int a = 1;
int b = 2;
System.out.println(a / b);
//执行结果
0
代码2:
double a = 1.0;
double b = 2.0;
System.out.println(a / b);
//执行结果
0.5
解释:在Java中,int/int=int,会直接舍弃小数部分,如代码1所示;如果想得到 0.5,需要使用 double 类型计算,如代码2 所示
代码3:
double a = 1.1;
double b = 1.1;
System.out.println(a * b);
//执行结果
1.2100000000000002
Q:为什么结果不是精确值1.21呢?
A:浮点数在计算机的内部实际上是通过整数模拟的, 虽然double也是 8 个字节,但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围。double 类型的内存布局遵守 IEEE 754 标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数, 势 必会存在一定的精度误差。
解决办法:
1.仍然使用double,但我们一般只看小数点后6 位左右为有效数字,剩下的小数位忽略不计
2.使用BigDecimal类来代替double使用
2.3字符型变量
语法格式:
char 变量名 = 初始值 ;
代码示例:
char ch = 'A';
注意:
1.Java 中使用 单引号 '' + 单个字母 的形式表示字符字面值
2.计算机中的字符本质上是一个整数,在 C 语言中使用 ASCII 表示字符,而 Java 中使用 Unicode 表示字符. 因此1个字符占用2个字节即16bit,表示的字符种类更多,包括中文
3.用 '' 括起来的值都是字符字面量,默认char型
2.4布尔型变量
语法格式:
boolean 变量名 = 初始值 ;
代码示例:
boolean a = true;
System.out.println(a);
注意:
1.boolean 类型的变量只有两种取值,true 表示真,false 表示假
2.boolean 类型和 int 不能相互转换,不存在1表示 true,0 表示 false 这样的用法
3.boolean 类型有些 JVM 的实现是占 1 个字节,有些是占 1 个比特位,这个没有明确规定
2.5字符串变量
语法格式:
String 变量名 = " 初始值";
代码示例:
String name = "张三";
System.out.println(name);
注意:
1.Java 使用 双引号" " + 若干字符 的方式表示字符串字面值," "默认String型
2.String 不是基本类型,而是引用数据类型
3.字符串中的一些特定的不太方便直接表示的字符需要进行转义
常见的转义字符有:
转义字符 | 解释 |
\n | 换行 |
\t | 水平制表符 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
字符串的 + 操作,表示字符串的拼接,如代码所示:
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
//执行结果为
result = 1020
说明:在Java中,任意数据类型只要和字符串进行 + ,都会把其他数据类型转变为字符串然后进行字符串的拼接操作。因此我们可以很方便的使用 System.out.println 同时打印多个字符串或数字,代码如下:
int a = 10;
int b = 20;
System.out.println("a=" + a + ", b=" + b);
//执行结果为
a=10, b=20
2.6变量的作用域
就是该变量能生效的范围,一般是变量定义所在的代码块{},一旦变量出了{}后变量就会被销毁。
代码示例:
2.7变量的命名规则
硬性指标:
1. 一个变量名只能包含数字, 字母, 下划线
2. 数字不能开头
3. 变量名是大小写敏感的, 即 num 和 Num 是两个不同的变量4.不能使用Java中的关键字作为变量命名注: 虽然语法上也允许使用中文/美元符($)命名变量, 但是强烈不推荐这样做软性指标:1. 变量命名要具有描述性,见名知意2. 变量名不宜使用拼音(但是不绝对)
3. 变量名的词性推荐使用名词
4. 变量命名推荐使用“小驼峰命名法”,即 当一个变量名只有一个单词时全小写,当由多个单词构成时,除了第一个单词之外,其他单词首字母大写总结:变量命名使用小驼峰且有意义的英文单词组成
举例:
double $a = 10.1; //在语法上是对的,但不推荐
int new = 10; //声明错误,因为使用了关键字new
补充:常量
10 // int 字面值常量 ( 十进制 )010 // int 字面值常量 ( 八进制 ) 由数字 0 开头, 010 也就是十进制的 80x10 // int 字面值常量 ( 十六进制 ) 由数字 0x 开头, 0x10 也就是十进制的 1610L // long 字面值常量, 也可以写作 10l (或大 写的 L)1.0 // double 字面值常量, 也可以写作 1.0d 或者 1.0D1.5e2 // double 字面值常量, 科学计数法表示, 相当于 1.5 * 10^21.0f // float 字面值常量, 也可以写作 1.0Ftrue // boolen 字面值常量, 同样的还有 false'a' // char 字面值常量, 单引号中只能有一个字符"abc" // String 字面值常量, 双引号中可以有多个字符 .
2.用final关键字修饰的常量
final int a = 10;
a = 20;//编译错误,无法为最终变量a分配值
3.小结
基本类型 | 关键字 | 包装类 | 内存占用 | 范围 |
字节型 | byte | Byte | 1字节 | -128~127 |
短整型 | short | Short | 2字节 | -32768~32767 |
整型 | int | Integer | 4字节 | -2^31~2^31-1 |
长整型 | long | Long | 8字节 | -2^63~2^63-1 |
单精度浮点数 | float | Float | 4字节 | 有范围 |
双精度浮点数 | double | Double | 8字节 | 有范围 |
字符型 | char | Character | 2字节 | 0~65535 |
布尔型 | boolean | Boolean | 无明确规定 | true/false |
今天的内容就到这里啦~
初学Java,有不对的地方希望大家多多指教,一起进步成长~