你们好,小乐又来了,上一篇:乐字节Java变量与数据类型之二:Java常量与变量,java
今天接着讲Java变量与数据类型之三:数据类型与转义字符面试
一、定义数组
Java是一种强类型语言,针对每种数据都提供了对应的数据类型。eclipse
Java数据类型优化
二、分类blog
A:基本数据类型:4类8种接口
B:引用数据类型:类,接口,数组。ip
三、基本数据类型字符串
①整型 占用字节数 比特/位 取值范围io
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位
四、注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l,单精度的浮点数要加F或者f。
一、定义
boolean类型不参与转换
二、默认转换
A:从小到大
B:byte,short,char --> int long float double
C:byte,short,char之间是平级的,不相互转换,直接转成int类型参与运算。
三、强制转换
A:从大到小
B:可能会有精度的损失,通常不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
四、思考题和面试题:
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位置