黑马程序员 02 运算符,判断,循环

来源:互联网 发布:anywhere软件源网址 编辑:程序博客网 时间:2024/05/20 21:20

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

1:运算符

(1)关系运算符
==,!=,>,>=,<,<=

特点:关系运算符的结果都是boolean类型。
     请千万注意:== 不要写成 =
(2)逻辑运算符
&,|,!,^,&&,||
&:有false则false
|:有true则true
!:true变false,false变true
^:相同false,不同true


&&:有false则false
||:有true则true


&&和&的区别是:如果左边有false了,右边将不再执行。
||和|的区别是:如果左边有true了,右边将不再执行。



(3)位运算符
^ : 一个数据对同一个数据^两次,结果还是数据本身。
举例:a ^ b ^ b = a
(4)条件运算符
格式:
条件表达式?表达式1:表达式2


执行流程:
根据条件表达式返回的是true还是false,决定结果是什么。
如果是true,就把表达式1作为结果。
如果是false,就把表达式2作为结果。
举例:
int a = 100;
int b = a > 50 ? 200 : 100;
请问b的值?200



2:if语句

(1)用于做判断使用的。
  常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
(2)格式:
A:第一种格式
if(条件表达式)
{
语句体;
}


执行流程:
如果条件表达式为true,就执行语句体;
否则,什么都不执行。


B:第二种格式
if(条件表达式)
{
语句体1;
}
else
{
语句体2;
}


执行流程:
如果条件表达式为true,就执行语句体1;
否则,就执行语句体2;


特殊:
可以和条件表达式在某些情况下进行替换。
一般是在赋值的情况下可以。


举例:
获取两个数中的最大值。
C:第三种格式
if(条件表达式1)
{
语句体1;
}
else if(条件表达式2)
{
语句体2;
}
...
else
{
语句体n;
}


执行流程:
如果条件表达式1为true,就执行语句体1;
如果条件表达式2为true,就执行语句体2;
...
否则,就执行语句体n;
D:注意事项
a:什么时候时候哪一种if语句。
第一种格式在判断条件为一种情况下使用。
第二种格式在判断条件为两种情况下使用。
第三种格式在判断条件为多种情况下使用。
b:每一种if语句其实都是一个整体,如果有地方执行了,
 其他的就不执行了。
c:如果if或者else里面控制的语句体是一条语句,是可以省略大括号的,
 但是,如果是控制多条语句,就必须写上大括号。
 建议:永远写上大括号。
d:大括号和分号一般不同时出现。
E:作用域
所有变量的定义只在它所属的大括号内有效。



3:switch语句

(1)用于做选择使用的。一般用于几个常量的判断。
switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。
所以,针对几个常量的判断,一般选择switch语句。
(2)switch语句的格式:
switch(表达式)
{
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n;
break;
}


A:针对格式的解释
switch:表示这里使用的是switch语句,后面跟的是选项。
表达式:byte,short,int,char
        
case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
   case后面的值是不能够重复的。
break:
switch语句执行到这里,就结束了。
default:
当所有的case和表达式都不匹配的时候,就走default的内容。
它相当于if语句的else。一般不建议省略。
B:执行流程
进入switch语句后,就会根据表达式的值去找对应的case值。
如果最终没有找到,那么,就执行default的内容。
C:注意事项:
a:default整体可以省略
但是不建议。
b:default的位置可以放到前面
但是不建议。
c:break可以省略
但是不建议。
default在最后,break是可以省略的。
case后面的break可以省略,但是结果可能有问题。
d:switch语句什么时候结束呢?

就是遇到break或者执行到程序的末尾。

4:循环
(1)如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。
  让我们代码看起来简洁了。
(2)循环的组成
A:循环体,就是要做的事情。
B:初始化条件。一般定义的是一个初始变量
C:判断条件。用于控制循环的结束。
D:控制条件。用于控制变量的变化。一般都是一个++/--操作。
(3)循环的分类:
A:for
for(初始化条件;判断条件;控制条件)
{
循环体;
}

执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。

B:while
初始化条件;
while(判断条件)
{
循环体;
控制条件;
}
执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。

C:do...while
初始化条件;
do{
循环体;
控制条件;
}while(判断条件);

执行流程:
a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b。
false:就结束循环。

(5)循环嵌套:
A:也就是循环语句的循环体是一个循环语句。
B:通过输出
****
****
****
 我们不断的改进。发现了一个问题:
外循环控制行数,内循环控制列数。
(6)案例:
A:正三角形
内循环的判断条件:y<=x
for(int x=0; x<5; x++)
{
for(int y=0; y<=x; y++)
{
System.out.print("*");
}
System.out.println();
}


B:倒三角形
内循环的初始化条件:y=x


for(int x=0; x<5; x++)
{
for(int y=x; y<5; y++)
{
System.out.print("*");
}
System.out.println();
}


C:九九乘法表

class ForForTest 
{
public static void main(String[] args) 
{
for(int x=1; x<=9; x++)
{
for(int y=1; y<=x; y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}


2:break和continue
(1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:
break和continue
(2)特点:
A:它们都必须在循环中(break还可以在switch中。)。
 一般在循环的判断中。
B:如果单独使用break和continue,后面是不能有语句的。
(3)区别:
A:break 结束当前循环。
B:continue 结束本次循环,进入下一次循环。
3:应用场景
(1)变量:发现有一个数据是变化的时候,就要用变量。
(2)if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。
(3)switch语句:几个数据的判断。一般这种情况,有限选择switch。
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

0 0