黑马程序员 条件运算符、判断结构和函数

来源:互联网 发布:高分数据正射校正 编辑:程序博客网 时间:2024/05/16 13:54
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一、条件运算符

格式

(逻辑表达式)?   表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

示例:

获取两个数中大数
intx=3,y=4,z;z =(x>y)?x:y;//z变量存储的就是两个数的大数

运算符的优先级

运算符的优先级(从高到低)

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

二、判断结构(重点)

1、if

第一种:if(条件表达式){

 执行语句;

      }

int age = 17;if (age >= 18)   System.out.println("可以浏览本网站");      System.out.println("完了");

     

第二种:if(条件表达式){//if else和三元运算符的区别
执行语句;//三元运算符是一个运算符号,ifelse是一个语句
      }else{//三元运算符运算后必须有结果,而且不能有语句
//ifelse可以没有结果,可以有语句
               执行语句;
       }

  int x = 1;if (x == 1){System.out.println("男厕所欢迎您");}else {System.out.println("女厕所欢迎您");}

第三种:if(条件表达式){
                执行语句;
       }else if (条件表达式){
             执行语句;
       }else{
              执行语句;

int x = 1;if (x == 1){System.out.println("男厕所欢迎您");}else if(x == 0){System.out.println("女厕所欢迎您");}else {System.out.println("无法识别您的性别");}

if语句特点:

  a,每一种格式都是单条语句。

  b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。

 c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;

2:switch

格式:
int x = 10;
switch (表达式){//byte,short,int,char,String 枚举

case 表达式里对应的值:
执行语句;
//break;
case 表达式里对应的值:
执行语句;
break;
......
default:
执行语句;
break;//最后一句的break可写可不写,因为程序已经执行到了末尾

String name = "张三";String gender = "先生";switch (gender){case "先生":System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");//break;case "女士":System.out.println(name + "是一位" + gender + "逛街购物美容");break;default:System.out.println(name + "是一位" + gender + "打雌性激素保持美貌容颜");}

重点:switch 结束只有两种情况
1,当程序执行过程中遇到了break
2,当程序执行到了末尾处
应用 switch需要注意的两个细节
1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里
的执行语句,不会再对case值进行判断,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break
例如:我们做一年有四季的例子:


int month = 4;switch (month){case 3:case 4:case 5:System.out.println(month+"月是春季");break;case 6:case 7:case 8:System.out.println(month+"月是夏季");break;case 9:case 10:case 11:System.out.println(month+"月是秋季");break;case 12:case 1:case 2:System.out.println(month+"月是冬季");break;default:System.out.println(month+"月没有这样的月份")}//上述例子就是三个case里面的值输出都一样的,所以我们省略了break;这样会少写几行代码,提高效率

2,当我们把 default 不是写在最后,default 里面还没有写break的是时候,switch里的表达式与各个case里
的值都不匹配的时候,上面两个条件同时满足的话,程序在default里执行完了还会再去执行case里的语句
例如:


int x = 3;switch (x){case 4:System.out.print("a");break;default:System.out.print("b");//当程序执行到了default但是他没有break,下面的case值不再判断,程序继续执行case 5:System.out.print("c");case 6:System.out.print("d");//break;//遇到break,程序跳出case 7:System.out.print("e");}

3、while


格式:
while (条件表达式){
循环体;

}

int x = 3;while (x<6){System.out.println("x="+x);//循环体x++;//用x自增来控制循环次数}

(2)do while 循环
格式:
do{
循环体;
控制循环次数
}
while (条件表达式);
例如:

int x = 3;do{System.out.println("x="+x);//循环体x++;//用x自增来控制循环次数}while (x<6);


 

while和do while的区别:
dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行
再判断
while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.
4、for

格式:
for(初始化表达式1;循环条件表达式2;循环后的操作表达式4){
执行语句;(循环体)3
}
例如:

for(int x=0; x< 3;x++ ){System.out.println("x="+x);}

(4)for 的嵌套循环,建议做题的时候就弄个双层嵌套就可以,不要弄太多层,影响效率
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环
执行语句;(循环体)
//下面是内存循环
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;(循环体)
}

}

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

5:continue和break
a,这两个语句离开应用范围,存在是没有意义的。
b,这两个语句单独存在下面都不可以有语句,因为执行不到。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围

6:标签

class Demo2 {public static void main(String[] args) {loop1:for(){loop2:while(){continue loop2;continue loop1;continue loop3;//错误continue loop4;//错误}loop3:do{loop3;loop1;loop2;//错误loop4;//错误}while();}loop4:while(){loop4;loop1;//错误}}}

语句的最后总结
(1)什么时候用变量? 当数据不确定的时候,就定义变量来存储数据。
(2)什么情况下,使用哪个语句?
A:当对某几个值进行判断的时候,可以使用if语句,或者switch语句。
  建议使用switch。但是,使用switch要注意,它只能操作六种类型的值,byte,short,int,char,String,枚举。
  如果是六种以外的值,需要使用if。
B:如果对数据区间进行判断,或者对运算结果是boolean类型的进行判断,用if语句。
C:当需要某些语句执行很多次的时候,使用循环结构。如果定义变量只为循环增量存在时,可以使用for语句。
         如果对一个条件进行一次判断使用if,如果对该条件进行多次判断,使用while
D:如果要结束循环,可以控制循环条件,或者通过break语句完成。
  如果要控制循环的流程,是否该继续执行,可以通过continue或者break来完成。
E:break结束当前所在循环。continue结束本次循环,进入下一次循环。

三、函数

函数:


1.函数就是定义在类中的具有特定功能的一段独立小程序
2.函数最大的作用:代码重用(一次定义,多次反复使用)


函数的定义:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,…)
{ 执行语句;
return 返回值;
}


1.修饰符:public static
2.返回值类型:由方法制定者来指定;可以是Java的任何数据类型;
3.函数名:自定义标识符;遵循自定义标识符的命名规则和命名规范;
 首字母小写,多个单词,从第二个单词开始首字母大写
  见名知意,驼峰命名
4.():小括号是必须的,函数的形参列表;
5.形参列表:形式上的参数,是一种"定义"。每一个参数由两部分组成:形参类型形参名
            多个参数间用,号隔开

A:修饰符 后面会重点讲。public static
B:返回值类型 这个特定的功能完成后,需要返回一个结果。这个地方就是返回结果的类型。
C:函数名 为了方便使用这个函数,给它起个名字。这个名字要符合标识符命名规则。
D:参数类型 形式参数的数据类型
**:形式参数 自定义的接收方
**:实际参数 发出方add(3,5)
E:执行语句 那么这个语句是由多条语句组成。
F:return 这个功能执行完以后,需要有一个返回值,那么这个值有关键字return带回。


public static int getMax(int num1,int num2,int num3){int m=(num1>num2)?(num1>num3?num1:num3):(num2>num3?num2:num3);return m;}

函数的特点
A:一般函数只有被调用后,才执行。
B:void 表示没有返回。在这个函数的结尾可以不写return。
**其实jvm会自动的结尾处加上return;
(1)如果定义自己的函数 两个明确
A:明确该功能的结果 其实就是该功能的返回类型。
B:明确该功能的参数 其实就是明确该功能中是否需要未知内容(形式参数)参与运算。
    明确未知内容的类型和个数。
(2)函数的重载
A:函数名相同,参数列表不同。
**参数类型不同。int add(int i)void add(double d)
**参数个数不同。add(int a,int b);add(int a,int b,int c)
**参数顺序不同  print(String name, int age)//参数顺序不同的重载是可以存在的,但是没有什么实际意义
print(int age,String name)
B:特点:与返回值类型无关,只看参数列表。
C:好处:便于阅读,优化程序设计。

class domeOverLood{public static void main(String[] args) {fun('a',10);}public static viod fun(){System.out.println("int");}public static viod fun(int a, intb){System.out.println("int int");}public static viod fun(int a, intb){System.out.println("long int");}public static viod fun(float a, intb){System.out.println("fioat int");}public static viod fun(double a, intb){System.out.println("double int");}}

Scanner类

Scanner类:接收用户输入:
使用Scanner需要三步:
1.在定义类之前
import java.util.Scanner;
2.在main方法中:
Scanner sc = new Scanner(System.in);
3.需要从控制台接收用户输入时:
int num = sc.nextInt();

import java.util.Scanner;class ScannerTest {public static void main(String[] args) {//第二步:Scanner sc = new Scanner(System.in);//第三步,接收用户输入:loop:do{System.out.print("请输入一个数:");//给用户的提示信息int num1 = sc.nextInt();//System.out.println("你输入的数是:" + num1);System.out.print("请输入第二个数:");int num2 = sc.nextInt();//System.out.println("你输入的第二个数是:" + num2);System.out.print("1:+  2:-   3:*   4:/ :");int op = sc.nextInt();int result = 0;switch(op){case 1:result = num1 + num2;break;case 2:result = num1 - num2;break;case 3:result = num1 * num2;break;case 4:result = num1 / num2;break;default:System.out.println("非法的选项!");break;}System.out.println("运算结果:" + result);do{System.out.print("1:继续     2:退出:");int op2 = sc.nextInt();if(op2==2){System.out.println("谢谢使用!拜拜!!");break loop;}else if(op2 == 1){continue loop;}System.out.println("请输入1或者2的数字!");}while(true);}while(true);}}








0 0