1.1算术运算符加减乘除
1. 运算符:对常量或者变量进行操作/ 运算的符号
2. 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
3. 数学运算符:
( 1 ) + : 加法运算
( 2 ) - : 减法运算
( 3 ) * : 乘法运算
( 4 ) / : 除法运算
被除数 ÷ 除数 = 商( / : 获取除法运算中的商) . . . 余数( % : 获取除法运算中的余数)
1.2算术运算符%
% 运算符( 取余数运算符)
% 的作用:
1. 判断数字的奇偶性
偶数( 可以被2 整除) : 数字% 2 的 结果是0
奇数( 不可以被2 整除) : 数字% 2 的 结果不是0 == > 结果是1
2. 判断一个数字能否被另外一个数字整除
结果为0 : 说明可以被整除
结果不为0 : 说明不可以被整除
% ( 取余数) 运算符
被除数 ÷ 除数 = 商( / : 获取的是除法运算中的商) . . . 余数( % : 获取的是除法运算中的余数)
总结:
/ 和% 都是做数学中的除法运算, 只不过/ 获取到的是除法运算中的商, % 获取到的是除法运算中的余数
作用:
1. 判断数字的奇偶性:
偶数: 可以被2 整除, 余数是0
奇数: 不可以被2 整除, 余数是1
2. 判断一个数字能否被另一个数字整除
结果是0 : 可以被整除
结果不是0 : 不可以被整除
思考:
int 变量num中存储四位数字1234 , 利用/ 和% 计算个位十位百位千位?
个位: 4
十位: 3
百位: 2
千位: 1
int 变量num中存储四位数字1234 , 利用/ 和% 计算个位十位百位千位?
个位: 4
十位: 3
百位: 2
千位: 1
总结:
个位: num% 10
十位: num/ 10 % 10
百位: num/ 100 % 10
千位: num/ 1000 % 10 如果确定是四位数字, 可以省略% 10
1.3赋值运算符
+= 加后赋值 a+= b,将a+ b的值给a a = a + b
-= 减后赋值 a-= b,将a- b的值给a a = a - b
*= 乘后赋值 a*= b,将a×b的值给a a = a * b
/= 除后赋值 a/= b,将a÷b的商给a a = a / b
%= 取余后赋值 a%= b,将a÷b的余数给a a = a % b
注意:
1. = : 表示的是赋值运算
2. == : 表示的是判断是否相同
1.4自增自减运算符
自增( ++ ) 自减( -- ) 运算符
1. 作用: 就是让变量的值增加1 ( ++ ) 或者减少1 ( -- )
2. 使用格式:
( 1 ) 可以写在变量的前面: ++ a, -- a
( 2 ) 可以写在变量的后面: a++ , a--
3. 使用注意事项:
( 1 ) 单独使用: ++ 或者-- 自己独占一行, 没有其它多余的操作
此时:
前++ 和后++ 效果一样, 都是让变量的值增加1
前-- 和后-- 效果一样, 都是让变量的值减少1
( 2 ) 混合使用: ++ 或者-- 和其它操作( 赋值/ 打印) 一起进行运算
将产生重大区别:
前++ : 先进行变量的加1 ,在进行表达式的运算
后++ : 先进行表达式的运算后进行变量的加1
前-- 和 后-- 操作和前++ 后++ 操作一样
1.5关系运算符
1. 作用:
用来比较两个数据之间的大小关系, 结果是boolean 类型的数据
2. 特点:
关系表达式不管写的多么复杂, 或者多么简单, 最终结果要么是true ( 成立) , 要么是false ( 不成立)
3. 分类:
== a== b, 判断a和b的值是否相等,成立为true ,不成立为false
> a> b, 判断a是否大于b,成立为true ,不成立为false
>= a>= b, 判断a是否大于或者等于b,成立为true ,不成立为false
< a< b, 判断a是否小于b,成立为true ,不成立为false
<= a<= b, 判断a是否小于或者等于b,成立为true ,不成立为false
!= a!= b, 判断a和b的值是否不相等,成立为true ,不成立为false
4. 注意:
1. = : 表示的是赋值运算
2. == : 表示的是判断是否相同
1.6逻辑运算符
1. 作用:
用来连接多个布尔表达式的, 结果也是布尔类型
2. 分类:
( 1 ) 逻辑与【有false ,则false 】:
表示并且的意思, 同时成立的意思
多个条件都为true , 结果才为true
多个条件只要有一个为false , 结果就是false
( 2 ) 逻辑或【有true ,则true 】:
表示或者的意思
多个条件只要有一个为true , 结果就是true
多个条件都是false , 结果就是false
( 3 ) 逻辑异或:
相同为false , 不同为true
( 4 ) 逻辑非:
! true : 就是false
! false : 就是true
1.7逻辑运算符的短路效果
逻辑运算符的短路效果
1. 基本使用
( 1 ) 短路逻辑与( && ) : 左侧为false , 右侧不进行计算
( 2 ) 短路逻辑或( || ) : 左侧为true , 右侧不进行计算
2. 使用区别) :
( 1 ) && 和& : 最终的结果是相同的, 但是&& 具有短路的效果, 效率高
( 2 ) || 和| : 最终的结果是相同的, 但是|| 具有短路的效果, 效率高
3. 注意:
以后实际学习/ 开发过程中, 需要连接多个条件时, 强烈建议使用&& 或者 ||
1.8三元运算符格式
1. 格式:
数据类型 变量名称 = 布尔表达式1 ? 表达式2 : 表达式3 ;
注意:
?号前面的式子的结果必须是布尔类型
2. 执行流程:
(1 )计算布尔表达式1 的结果,看是true ,还是false
(2 )如果布尔表达式1 的结果是true ,取表达式2 的结果赋值给左侧的变量
(3 )如果布尔表达式1 的结果是false ,取表达式3 的结果赋值给左侧的变量
1.9键盘录入
( 1 ) 导包: import java. util. Scanner
( 2 ) 创建键盘录入Scanner 类的对象sc
Scanner sc = new Scanner ( System . in)
( 3 ) 获取到键盘录入的int 数字, 赋值给变量b
int b = sc. nextInt ( ) ;
1.10数据类型转换
1. 自动类型转换概念:
取值范围小的数据/ 变量, 可以直接赋值给取值范围大的变量( 小萝卜可以直接放入大坑中)
Java 程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
举例:
int + int : 类型一直, 可以直接计算
int + long : 类型不一致, 不可以直接计算
解决方案一:
int + long -- > long + long : 转换后类型一直, 可以直接计算
把int 类型转换成long 类型, 从小到大, 叫做自动类型转换( 自动完成)
2. 特点:
( 1 ) 是自动完成的, 不需要代码的特殊处理
( 2 ) byte / short / char 类型, 至少会自动类型转换为int 类型
( 3 ) 转换规则: byte 、short 、char -- > int -- > long -- > float -- > double
总结:
整个表达式中的所有类型, 都会自动转换成表达式中最大的类型, 结果也是最大的类型
举例: 00000000
有一个byte 类型( 1 个字节) 的数字5 : 00000101
byte 类型自动类型转换成short 类型( 2 个字节) :
在左侧补充一个字节的0 , 因为补充的是0 , 对于原有数据大小没有影响
00000000 00000101
byte 类型自动类型转换成int 类型( 4 个字节) :
在左侧补充三个字节的0 , 因为补充的是0 , 对于原有数据大小没有影响
00000000 00000000 00000000 00000101
byte 类型自动类型转换成long 类型( 8 个字节) :
在左侧补充七个字节的0 , 因为补充的是0 , 对于原有数据大小没有影响
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000101
1. 强制类型转换概念:
取值范围大的数据或者变量, 不能直接赋值给取值范围小的变量,
必须进行强制类型转换( 大萝卜不能直接放入小坑当中)
long 类型的847 :
00000000 00000000 00000000 00000000 00000000 00000000 00000011 01001111
强制类型转换为byte 类型:
01001111 : 79
long num = 847L ;
byte b = ( byte ) num;
2. 格式:
转后类型 变量名称 = ( 转后类型) 转前数字/ 变量;
3. 问题:
可能损失精度
举例: 00000000
有一个long 类型( 8 个字节) 的数字5 :
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000101
long 类型强制类型转换成int 类型( 4 个字节) :
砍掉左侧的四个字节的内容, 目前砍掉都是0 , 对数据大小没有影响, 只要砍掉的有1 , 就会影响数据大小
00000000 00000000 00000000 00000101
long 类型强制类型转换成short 类型( 2 个字节) :
砍掉左侧的六个字节的内容, 目前砍掉都是0 , 对数据大小没有影响, 只要砍掉的有1 , 就会影响数据大小
00000000 00000101
long 类型强制类型转换成byte 类型( 1 个字节) :
砍掉左侧的七个字节的内容, 目前砍掉都是0 , 对数据大小没有影响, 只要砍掉的有1 , 就会影响数据大小
00000101
总结:
根据需求, 砍掉左侧的若干字节的内容, 如果砍掉都是0 , 对数据大小没有影响,
只要砍掉的有1 , 就会影响数据大小
public class Demo10 {
public static void main ( String [ ] args) {
short s = 1 ;
s = ( short ) ( s + 1 ) ;
System . out. println ( s) ;
}
}
1.11ASCLL码表
总结: byte / short / char 类型, 至少会自动类型转换为int 类型
存储字符时:
'a' -- > 97 -- > 1100001 26 个小写字母的ASCII码值是连续的, 相差1
'A' -- > 65 -- > 1000001 26 个大写字母的ASCII码值是连续的, 相差1
'0' -- > 48 -- > 110000 10 个数字字符的ASCII码值是连续的, 相差1
小写字母的ASCII码值比对应的大写字母多32
使用字符时
1100001 -- > 97 -- > 'a'
1000001 -- > 65 -- > 'A'
110000 -- > 48 -- > '0'