大家好,小乐又来了,上一篇:乐字节 Java 变量与数据类型之二:Java 常量与变量,
今天接着讲 Java 变量与数据类型之三:数据类型与转义字符。
一、数据类型
1、定义
Java 是一种强类型语言,针对每种数据都提供了对应的数据类型。
Java 数据类型
2、分类
A: 基本数据类型:4 类 8 种
B: 引用数据类型:类,接口,数组。
3、基本数据类型
①整型 占用字节数 比特 / 位 取值范围
byte(字节型) 1 8 位 [-128 , 127]
short(短整型) 2 16 位 [-32768,32767]
int (整型) 4 32 位 [-21 亿, 21 亿]
long(长整型) 8 64 位 很大很大
注意:整数数值默认为 int 类型,如果需要定义一个 long 类型的变量,当超出 int 的范围时,需要在该值后加 l 或者 L
②浮点型
float(单精度) 4
double(双精度) 8
float 有效位是 7 位,double 有效位是 14 位
注意:浮点数默认为 double 类型,如果需要定义一个 float 类型的变量,则数值后需要加 f 或者 F
③字符型 (0~65535)
char(字符型) 2 一个字符能存储一个中文汉字
要求:用 ‘ ‘ 将字符括起来
④逻辑型 (布尔型)
boolean(布尔类型) 1 位
4、注意:
整数默认是 int 类型,浮点数默认是 double。
长整数要加 L 或者 l,单精度的浮点数要加 F 或者 f。
二、数据类型转换
1、定义
boolean 类型不参与转换
2、默认转换
A: 从小到大
B:byte,short,char –> int long float double
C:byte,short,char 之间是平级的,不相互转换,直接转成 int 类型参与运算。
3、强制转换
A: 从大到小
B: 可能会有精度的损失,一般不建议这样使用。
C: 格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
4、思考题和面试题:
A: 下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345; 向下类型转换,浮点数默认是 double 类型
B: 下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
short s1=3;
short s2=3;
short s3=s1+s2;
char c1=3;
char c2=4;
char c3=c1+c2;
byte、short、char 在运算时,会自动向上转型为 int 型,所以返回的结果是 int 类型,而接收的类型均不是 int,由于类型不匹配,所以报错
byte b4 = 3 + 4;
short s=3+4;
常量进行计算后的值,预编译时能够判断其是否超出范围
int a=1;
int b=2;
int c=a+b;
long l1=3l;
long l2=3l;
long l3=l1+l2;
float f1=2.3f;
float f2=2.3f;
float f3=f1+f2;
double d1=3.7;
double d2=3.9;
double d3=d1+d2;
均不会报错,java 进行了优化。
C: 下面的操作结果是什么呢?
byte b = (byte)130;
D: 字符参与运算
是查找 ASCII 里面的值
‘a’ 97
‘A’ 65
‘0’ 48
空格 32
System.out.println(‘a’);
System.out.println(‘a’ + 1);
E: 字符串参与运算
这里其实是字符串的连接
System.out.println(“hello”+’a’+1);
System.out.println(‘a’+1+”hello”);
System.out.println(“5+5=”+5+5);
System.out.println(5+5+”=5+5″);
运行结果:helloa1
98hello
5+5=55
10=5+5
三、转义字符
’: 代表一个单引号
\: 代表一个反斜线字符””
”: 代表一个双引号字符
b: 退格,是将光标移动到当前字符的前一个字符,并不会删除当前字符。
注意:eclipse 当中不识别,需要在 DOS 环境下运行
n: 换行,将当前位置移到下一行的开头
r: 回车,将当前位置移到本行的本行开头
注意:n、r 在 eclipse 没有区别,需要在 DOS 环境下运行
t: 水平制表位:跳到下一个 Tab 位置