逻辑运算符:
概述:就是用于连接结果是boolean类型的表达式的。
表达式:由运算符连接起来的式子。(由变量或者常量组成)
&:逻辑与。并且。有假则假。
|:逻辑或。或者。有真则真。
!:逻辑非。以前为假,现在为真,以前为真,现在为假。正对同一个表达式来操作的。
^:逻辑异或。 相同为假,不同为真。
&&:短路与 前边如果出现了false,后边将不再执行。
||:短路或 前边如果出现了true,后边将不再执行。
&&跟&的区别:
&&是短路与,&是逻辑与。他们的特点都是有假则假。但是,
短路与的时候,前边的表达式如果出现了false,后边将不再执行。
逻辑与的时候,所有的表达式都会执行。
开发常用:
&&,||,!
位运算符:
概述:就是用来计算二进制数据的(可以把0看做false,1看做是true)。
&:按位与 有0则0。
|: 按位或 有1则1。
^: 按位异或 相同为0,不同为1.
~: 按位取反 针对所有的二进制位,1变0,0变1。
结果其实相当于该值+1,然后取反。
00001010 10 按位取反:-11
1、求它的原码00001010,
2、求它的反码00001010,
3、求他的补码00001010。
4、针对第3步的补码,进行取反操作。11110101
5、把第四步得到的结果作为补码再来运算,求出它的反码:11110100。
6、求第5步的原码。
11110100
10001011
<<:左移。最高位舍弃,右边的空缺位用0补齐。
>>:右移。看最高位是0,还是1,如果是0,空缺位就用0补齐,如果是1,空缺位就用1补齐。
>>>:无符号右移。 不管最高位是0还是1,空缺位都用0补齐。
总结:
向左移动(增大)或者向右移动(减小),就是增大或者减小2的指定次幂。
思考:
1、请用高效的形式写出:2*8 2<<3
2、交换两个变量。
int a = 10;
int b = 20;
第一种做法:用第三方变量来做。(开发用)
int temp = a;
a = b;
b = temp;
第二种做法:用位异或来做。(面试用)
特点:一个数据对同一个数据位异或两次,值不变。
a = a^b; //a=a^b b的值不发生变化
b = a^b; //b= a^b^b b=a,a=a^b
a = a^b; // a= a^b^a a=b;
第三种做法:
仅适用于基本类型(boolean类型除外)。
用算术运算符。
a = a + b; //a=30,b=20
b = a - b; //a=30,b=10,
a = a - b; //a=20,b=10
条件运算符:
格式:
条件表达式?表达式1:表达式2;
注意:
条件表达式的结果必须为boolean类型。
执行顺序:
如果条件表达式的结果是true,就执行表达式1,
如果天健表示的结果是false,就执行表达式2。
int y = 10;
int x = y>5?'a':20;
思考:
表达式1和表达式2的数据类型必须一样吗?
不一定。只要包含隐式类型转换就可以。
推荐:一般写同样的数据类型。
Java中的流程控制语句(结构)
1、顺序结构:代码是从上往下,从左往右依次逐行来执行的。
2、选择结构:根据给定的判断或者选择语句从而来决定执行顺序.
A:判断语句
if
B:选择语句
switch-case
3、循环结构:就是重复的做某件事情。
if语句的第一种形式:
if(条件表达式)
{
语句体;
}
执行顺序:
根据条件表达式的结果来决定是否执行语句体。
如果结果为true,执行语句体,
注意事项:
A:不管条件表达式简单还是复杂,结果只能是boolean类型。
B:if后边的大括号{}可以省略,省略的话该if只能控制它后边的一行语句。
如果想控制多行语句,必须写{},
不管if的语句体是一行还是多行,都推荐写上{}。
C:if的{}前最好不要加;,否则结果可能不是我们想要的。
变量的作用域:
定义的变量,只能在它所属的那对{}内使用。
if的第二种格式:
if(条件表达式)
{
语句体1;
}
else
{
语句体2;
}
if的第三种格式:
int score;
if(条件表达式1)
{
语句体1;
}
else if(条件表达式2)
{
语句体2;
]
。。。。这里可以写多个else if
else
{
语句体3;
}
sop(score);
注意事项;
1、else后边不能直接写条件表达式。
2、最后一个else可以省略。
推荐:一般都写上。
3、if体系,只要其中一个if满足了,整个if体系不会再往下执行。
总结:
在if体系的上边定义了一个变量,如果想在if体系的下边使用这个变量,怎么办?
1、直接在if体系的上边给这个变量赋值。
2、在if体系的每一个大括号{}内,都对该变量进行赋值。
总结;
if可以用来处理几个固定值的问题,也可以用来处理范围的问题。
一般,if都用来处理范围的问题。
if的嵌套:
概述:if语句的语句体本身又是一个if语句。
if语句的第二种形式和条件运算符的关系?
没有关系,if是语句,条件运算符是运算符。
在某些情况下,条件运算符可以用来替代if语句,更简洁。
选择语句:
switch-case:
格式:
switch(表达式)
{
case 取值1:
执行语句1;
break;
case 取值2:
执行语句2;
break;
case 取值3:执行语句3;break;
.....此处可以写多个case
default:
执行语句4;
break;
}
简答的描述:
表达式:byte,short,char,int
JDK5.0以后,表达式支持枚举类型。(就业班讲)
JDK7.0以后,表达式支持字符串。
break: 程序执行到break,就会结束switch-case语句。
执行顺序:
从上往下,依次逐行来执行。
会拿表达式的值来和第一个case来匹配,匹配不上,接着匹配其他的case,
如果都匹配不上,执行default中的语句。
使用switch-case的时候的注意事项;
1、default可以省略吗?
可以。
但是default相当于if-else中的else,可以控制所有非正常的情况,
一般不省略,当我们明确知道可以省略的时候,可以不写。
2、break可以省略吗?
A:放在最后的default的break可以省略,对整个语句的结果没有影响。
B:放在case后边的break也可以省略,语法不报错,但是,结果可能不是我们想要的。
3、default必须放最后吗?
不一定,一般放最后。
4、switch语句什么时候结束?
当遇到break或者执行到语句的末尾的时候。
补充:
当表达式匹配上对应的case或者default后,但是他们后边没有break,程序会继续向下执行
可以执行的语句,知道遇到break或者switch语句的末尾。
考试成绩分等级。
int score = 10;
90-100 A等。
80-89 B等。
70-79 C等。
60-69 D等。
60以下 E等。
请根据给定成绩,输出对应的等级。
Scanner的使用步骤:
1、导包。
import java.util.Scanner; 这行代码写到类的上边。
2、创建对象。
Scanner sc = new Scanner(System.in); //这行代码写main函数里边
3、调用方法。
int score = sc.nextInt(); //这行代码写main函数里边
一年有12个月,每个月分别对应于不同的季节。
请根据给定的月份,输出对应的季节。
春:3,4,5
夏:6,7,8
秋:9,10,11
冬:1,2,12
//导包
import java.util.Scanner;
class IfTest
{
public static void main(String[] args)
{
//创建一个Scanner类的对象,对象名为:sc
Scanner sc = new Scanner(System.in);
//提示用户进行键盘录入数据
System.out.println("请输入一个月份");
//通过sc对象,调用它的nextInt()方法,接收用户输入的数字
String month = sc.nextInt();
}
}
|
|