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

------<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);

	}
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值