学习目标:
- 一些常见的问题
- 字符串拼接符号
- java语言中常见的运算符
- 键盘录入数据
学习内容:
- 一些常见的问题:
byte b1=10,b2=20,b;
b=b1+b2;
b=10+20;
哪句是编译失败的呢?为什么呢?
第一句是编译失败的,因为第一句是byte+byte类型在进行计算,此时会隐式转换为int类型,等号左边是byte类型,等号右边是int类型,不兼容,所以此时要强制转换右边的位byte类型才正确. - 字符串的拼接.
字符+字符串->字符串[拼接]
字符+数字->字符转换为ASCII进行计算
数字+字符串->字符串[拼接] - java语言中,常见的运算符划分为算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符
算数运算符: 基本的算数运算符:+,-,*,/[默认向下取整],%
扩展的算数运算符:++或者–在数据前面
单独使用:对当面值本身进行自增1或者自减1
参与运算:先自增或自减再进行运算
++或者–在数据后面
单独使用:对当面值本身进行自增1或者自减1
参与运算:先运算再自增或自减
赋值运算符: 基本赋值运算符: = 将=右边的数值赋予左边的变量
扩展的赋值运算符:+=,-=,*=,/=,%=(会默认一个强制转换类型在里面)
比较运算符–关系运算符:<,<=,==,!=,>,>=,最终的结果肯定是boolean类型,要么true要么false,
逻辑运算符:基本的逻辑运算符:
逻辑单与&:并列关系,有false则false
逻辑单或|:或关系,有true则true
逻辑异或^:相同则为fals,不同则为true
逻辑非!: true变false,false变true
扩展的逻辑运算符:
逻辑双与&&:前面是false则不会看后面直接出false(效率比单与高)
逻辑双或||:前面有true,则直接出true,后面不运行(效率比单或高)
位运算符:基本的符号:将两个变量或者数据本身[补码]进行计算的
位与&:(2&3) [0010 & 0011]->[0010]有0则0
位或 |:(2|3) [0010 | 0011]->[0011]有1则1
位异或^:(2 ^ 3)[0010 ^ 0011]->[0001]相同为0不同为1 一个数据被另外一个数据位异或两次,其值为它本身.
反码~:( ~ 2)[ ~ 0010]->[1101]不分符号位 1为0,0为1
eg:将两个变量的值进行交换:
int a=10;
int b=20;
System.out.println(a ^ b ^ a) //10
System.out.println(a^ a ^ b)//20
a=a ^ b;
b= a^b;
a=a ^b;
移位符号:
<<:左移 右边空位补0,被移除的最高位移弃[左边数据乘以2的移动次方]
> >:右移 向右边移动.左边空缺最高位是1则最位补1,空缺位补充0[左边数据/2移动的次方]
>>> 无符号右移,无论最高位是1还是0,都补0
eg:
3<<2:左2位
3的原码为:
00000000 … 00000011
正数原,反,补相同:
补码为上面的原码,左移2位则:
(00[丢弃])00000000 … 00001100
=12=32的2次方
24>>2:
24的原码是:
00000000…00011000
正数补码与原码相同,补码向右两个:
00000000…00000110(00[丢弃])
三元运算符(三目运算符):(表达式)?如果true执行这个结果:false执行这个结果