天天看点

黑马程序员 条件运算符、判断结构和函数一、条件运算符二、判断结构(重点)三、函数

------<a href="http://www.itheima.com" target="_blank" rel="external nofollow" 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);

	}
}
           

继续阅读