笔记
第二章 Java基础语法
2.6 数据类型
2.6.1 概述
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,不同类型的数据在内存中分配了不同大小的内存空间
2.6.2 分类
分为两个大类:基本数据类型和引用数据类型
2.6.2.1 基本数据类型(4类8种)
- 整数型
字节——byte(占用1个字节)
短整型——short(占用2个字节)
整型——int(占用4个字节)
长整型——long(占用8个字节)
- 浮点型
单精度——float(占用4个字节)
双精度——double(占用8个字节)
思考:表数范围怎么来的?
- 字符型
char(占用2个字节)
- 布尔型
boolean(一般来说占用1个字节)
2.6.2.2 引用数据类型(后面补充)
- 类(class)
- 接口(interface)
- 数组( [ ] )
2.6.3 不同数据类型的变量定义
变量定义格式:数据类型 变量名 = 初始化值;
变量的数据类型 | 案例 |
---|---|
字节(byte) | byte b = 10; System.out.println(b); //输出结果为10 |
短整型(short) | short s = 100; System.out.println(s);//输出结果为100 |
整型(int) | int i = 1000; System.out.println(i);//输出结果为1000 |
长整型(long) | long h = 1000000000000L;System.out.println(h); //输出结果为1000000000000 |
编译的时候,整数默认为int类型
首先检测数值是否在int的表数范围内,
不在则报错:过大的整数(eg:long h = 1000000000000;);
否则继续检测是否在要定义的数据类型范围里
超出则报错:不兼容的类型,会损失精度(eg:byte b = 128;);
否则继续运行。
变量的数据类型 | 案例 |
---|---|
单精度(float) | float f = 12.345F;System.out.println(f); //输出结果12.345(不加F报错) |
双精度(double) | double d = 12.345;System.out.println(d); //输出结果12.345 |
字符变量(char) | char ch = ‘a’;System.out.println(ch); //输出结果为a |
布尔变量(boolean) | boolean flag = true;System.out.println(falg);//输出结果为true |
注意:
A:整数默认int,浮点数默认double
B:长整型的值(long)建议使用L或l标记。如果不标记一旦初始值超出int范围就会报错
C:单精度的值(float)要使用F或f标记
关于作用域
变量定义在哪一级大括号中,那个大括号的范围就是这个变量的作用域
相同的作用域中不能定义两个同名变量
关于初始值
没有初始化值的变量不能直接使用
关于代码习惯
建议在一行上只定义一个变量
int a,b;//代码正确,但不建议
int a,int b;//代码错误
2.7 数据转换
2.7.1 默认转换
在参与运算时,如果有byte、short、char类型的数据,首先转换为int类型再参与运算
byte、short、char相互之间不转换
转换顺序(从小到大):byte,short,char—int—long—float—double
- 字符(char数据类型)参与运算
首先根据ASCII码表找出字符对应的数字值,再与其他数据做运算
常见char运算符:
‘a’:97
‘A’:65
‘0’:48 -
字符串参与运算
字符串数据与其他类型数据做+,结果为字符串,此时的+为字符串连接符
2.7.2 强制转换
从大的数据类型转换到小的数据类型
格式:目标类型 变量名=(目标类型)(被转换的数据);
隐含了精度损失问题