JavaSE-变量、数据类型、表达式、运算符


变量、数据类型、表达式、运算符


一、数据类型(基础重点)
1.基本数据类型
(1)整数类型
byte 1B -128~127
short 2B -32768~32767
int 4B -2147483648~2147483647
long 8B -922京 ~ 922京-1
注意:
字面值:程序中可以赋值的数据。
long字面值后面需要加l或是L,建议加L,用于区分数
字1和字母l。
Java是强类型的语言。
(2)小数类型
float 单精度 4B
double 双精度 8B
a. 注意:float字面值后面必须加 f或是F。
double字面值后面可以加 d或是D,也可以省略。
b. float 和 double 可以采用科学技术进行存储,近似值存储方式
面试题目:分析:8B的long和4Bfloat哪一个存储的数据范围更大?
解析:float存储的数据范围更大,因为float和double采用科学计数法的形式进行存储。(1.2345679E19)
(3)字符类型
a. char 2B unicode编码(万国码)
字面值形式:
a. 单引号引起来的一个字符:【开发重点】
char c1 = ‘A’;
char c2 = ‘中’;
b. 以整数形式进行存储:0~65535 【面试】
char c = 65; // ‘A’
c. 以十六进制的 unicode形式存储:【了解】
char c3 = ‘\u0041’; // A
转义字符:
单引号: ’
换行: \n
缩进: \t (tab)
反斜杠: \
双引号: "
注意:更改了原有字符的含义。
以上字符 都是英文字符。
(4)布尔类型
boolean 字面值 true/false
注意:Java的布尔类型的变量只有true和false两个字面值;
区别于 c 语言的boolean类型。
2.引用型数据类型/对象数据类型对象数据类型/引用数据 类型:数组、类、接口等类型的数据。
String : 字符串是引用数据。
(1) 含义:用“ ”(双引号)引起来的一个或是多个字符。
(2) 字面值:
String str=“abcd”;
String str2=“中国”;
二、数据类型的提升
1.自动类型提升
(1) 变量之间相互兼容
(2) 小数据类型的变量 赋值给 大数据类型的变量 —>直接赋值
(存储的数据范围大的称之为大数据类型)
(3) 提升规则:
a. byte —> short --> int —>long —> float —> double
b. char --> int —>long—>float—>double
2.强制转换
(1) 变量之间相互兼容
(2) 大数据类型的变量 赋值 小数据类型的变量 通过强制类型转换
(3) 语法:
目标类型 变量名 = (目标类型)源数据类型的变量 ;
同下:
小数据类型 变量名 = (小数据类型)大数据类型的变量;
(4) 结果:
a. 小数强制转换为整数,直接将小数截断,取整数部分
double d = 12.8;
int i = (int)d; // 12
b. 大数据类型的变量中存储的数据在小数据类型的存储范围内,则数据完整保存
c. boolean 不能参与数据类型转换,强制类型转换也不可以。
三、表达式
1.概念
由变量、字面值、运算符等组成的一个式子,通常会有一个结果产生。
2.表达式的结果处理
(1) 如果表达式的结果仅一次应用,则直接将表达式写在应用的位置即可
(2) 如果表达式的结果被多次应用,通常会将表达式的结果存储在一个变量中,存储结果的变量数据类型规则如下:
a. 如果表达式中有一个为double,则结果类型为double;
b. 如果表达式中没有double类型,有一个为 float,则结果类型 为float;
c. 如果表达式中没有double/float类型,有一个为long类型,则结果为long类型;
d. 如果表达式中没有double/float/long,其余结果类型都是int。
包含: byte和byte byte和short short和short byte和int short和int int 和int
面试题目:分析以下代码编译是否能通过,通过写出结果,不同解释原因。
byte b = 1;
b = b+1;
分析:此代码编译报错,原因:表达式中byte和int类型进行运算,结果类型为int,所以应将结果存储在int 类型的变量中。
四、运算符
1.算数运算符
+(加法) 、 -(减法) * (乘法) /(除法) %(取余/取模)
注意:Java中的boolean类型不能参与运算。
扩充:如果 + 两端有一端为String类型,则+不再是进行加法运算,而是字符串的拼接,结果类型为字符串类型。
2.赋值运算符
= (直接赋值) 、 += (求和之后值)、-=(减法之后赋值)*=(乘法之后赋值)、/= (除法之后赋值)、%=(取模之后的赋值)
注意:复合赋值运算(+= -= *= /= %=)进行运算时,基于应用层没有自动类型提升。
面试题目:分析一下两个代码编译否能通过,通过-写出结果;否则解释原因。
① byte b = 1; ② byte b2=1;
b = b+1; b2+=1;
分析:第一个代码编译报错, 原因:表达式中byte和int参与运算,结果类型为int类型,所以存储byte类型的变量报错,应该存储在int类型的变量中; 第二个代码编译成
功,+= 复合赋值运算符应用层没有自动类型提升(底层原理:先提升,再强转为 存储的变量类型)。
3.一元运算符
++(自增) --(自减)
使用:面试题目
a++:先使用a原始的数据作为表达式的结果,再将a变量自身加1(先使用,再赋值)
++a:先将a的自身加1操作,然后将a中的数据作为表达式的结果。
开发应用点:开发时一般不会区分于 使用a++; 还是++a;通常应用++/-- 运算时,都是完成自身加1或是减1操作,表达式的结果一般不做处理。
4.关系运算符
== : 等于
< : 小于
<= : 小于等于
注意:被关系运算符连接的表达式结果类型为boolean,关系成立-true;关系不成立-false;结果类型为布尔类型的表达式,被称为布尔表达式。
5.逻辑运算符
&& : 逻辑与,如果两端的布尔表达式的结果都为true,最终结果为true;但是如果有一端结果为false,则最终结果就为false。[短路]
|| : 逻辑或,如果两端布尔表达式的结果有一个为true,最终结果就为true;如果两端同时为false,结果就为false。[短路]
&:与,如果两端布尔表达式的结果都为true,最终结果是true;但是如果有一端为false,则结果为false。[非短路]
| : 或,如果两端布尔表达式的结果有一个为true,最终结果就为true;如果两端同时为false,结果就为false[非短路]
注意:逻辑运算符两端连接的都是个布尔表达式。
概念理解:
&& 短路的理解:如果左端表达式的结果为false,则不再进行右端表达式的计算,原因:通过左端表达式的false结果可以确定
整个表达式的结果为false,所以右端表达式的结果不再具有作用。
& 非短路的理解:不管表达式的左端结果是true/false,右端的表达式的一定会被执行。
面试题目: 写出 && 和 & 的区别。
6.三元运算符
语法: 布尔表达式 ? 表达式1:表达式2
执行原理:执行布尔表达式,布尔表达式的结果true,执行表达式1;否则-布尔表达式的结果为false,执行表达式2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值