第三章 运算符、表达式、语句

内容概括

运算符与表达式

语句概括

if条件分支语句

switch开关语句

循环语句

break和continue语句

数据和for语句

内容详细

1、运算符与表达式

运算符
1.算术运算符
2.关系运算符
3.布尔运算符(逻辑运算符)
4.字符串连接运算符
5.三元运算符
6.赋值运算符

*算数运算符
+求和
-相减
*乘积
/商
%求余

*关系运算符(二目运算符用来比较两个值的关系,运算结果是boolean或者true)
>
>=
<
<=
==
!=

*布尔运算符
&&逻辑与 -两边式子都为真,才为真
||逻辑或 -两边式子有一个为真,即为真
!逻辑非 -取反,真就是假,假就是真
^ 逻辑异或 -两边式子只要不一样就是真
&&短路与
||短路或
逻辑运算符要求式子两边都是布尔类型,并且最终结果也会是布尔类型
短路与与逻辑与是相同的,只是会出现短路现象,第一个表达式为false就会发生短路
短路或与逻辑或是相同的,只是会出现短路现象,第一个表达式为true就会发生短路

*字符串连接运算符
关于java中的“+”运算符
1.两个作用:求和 :数字+数字
           字符串连接 :两边有一个是字符串就是字符串连接

*三元运算符
boolean sex=true;
   char ss=sex? '男':'女';
           sex =false;
        ss =(sex?'男':'女');
      
   System.out.println(ss);

*赋值运算符
不要将赋值运算符和关系运算符混淆,12=12是非法表达式,12==12的值是true
基本赋值运算符=
扩展的赋值运算符 +=
                -=
				*=
				/=
				%=

*自增自减运算符
自增,自减运算符 ++ -- 是单目运算符,可以放在操作单元之前,也可放在之后,操作元必须是一个整型或浮点型变量,作用是使变量的值增1或者减1
++x(表示在使用x的值之前,增1)
x++(在使用x的值之后,增1)
package Charpet3;

public class Plus {
	public static void main (String [] args) {
		int k = 10;
		int l = 10;
		k++;
		++l;
		System.out.println(k);
		System.out.println(l);
		int a = 10;
		int b = a++;
		System.out.println(a);
		System.out.println(b);
		int e = 100;
		System.out.println(e++);
//		System.out.println(--e);
	}

}

package Charpet3;

public class Logic {
	public static void main (String [] args) {
		System.out.println(5>3&5>2);//true
		System.out.println(5>3&5>6);//false
		System.out.println(5>3|5>6);//true
		System.out.println(!true);//false
        System.out.println(false^true);//true
//短路与
        int a=10;
        int b=8;
        System.out.println(a<b&&++a>b);//false
        System.out.println(a);//10
	}
}

package Charpet3;

public class AssignValue {
	public static void main(String [] args) {
		int i =10;
		System.out.println(i);//10
		i=i+5;
		System.out.println(i);//15
		//扩展的赋值运算符
		i+=5;
		System.out.println(i);//20
		byte b=19;
		//b=b+5;编译器报错,运算结果是int类型,b是byte类型
		b+=5;
//		不会报错,相当于byte b = (byte)(b+5);
		
		}

}

package Charpet3;

public interface StringConnect {
	public static void main(String [] args ) {
		//在控制台输入10+20=30
		System.out.println("10+20=30");
		int a = 10;
		int b = 20;
		System.out.println(a+"+"+b+"="+(a+b));
	}

}

1.1运算符综述

java表达式就是用运算符连接起来的符合java规则的式子。
运算符的优先级决定了表达式中运算执行的先后顺序

2、语句概括

2.1.1方法调用语句

System.out.println("HelloWorld");

2.1.2表达式语句

由一个表达式构成一个语句,即表达式尾加上分号。例如赋值语句:

x=23;

2.1.3复合语句

可以用{}把一些语句括起来构成复合语句,例如:

{ z=123+x;

System.out.println("How are you");

}

2.1.4空语句

一条分号一个一条语句,称作为空语句

2.1.5控制语句

控制语句分为条件分支语句,开关语句,循环语句

2.1.6package语句和import语句

package语句和import语句与类,对象有关

2.2if条件分支语句

条件分支语句按照语法格式可细分为三种格式

2.2.1 if语句

if (boolean){
    若干语句;
}
在if 语句中,其中的复合语句中,如果只有一条语句,{}可以省略不写,但为了程序的可读性,最好不要省略

2.2.2 if-else语句

if(表达式){
    若干语句;
}
else(表达式){
    若干语句;
}
关键字if后面的小括号表达式一定要是boolean类型,当值为true时,执行紧跟着的复合语句,结束当前if-else语句的执行;当值为false,执行else跟着的复合语句,结束当前if-else语句的执行;
在if-else语句中,其中的复合语句如果只有一条语句,{}可以省略不写

2.2.3if-else if-else语句

if(){

}
else if(){

}
else {

}
首先计算第一个表达式的值,如果计算结果为true,则执行紧跟着的复合语句,结束当前if-else if-else语句的执行;如果执行结果为false,则继续执行第二个表达式的值;如果所有表达式的值都为false,则执行关键字else后面的复合语句,结束当前语句。

2.3switch开关语句

switch(表达式){
    case 常量值1:
        若干语句;
        break;
     case 常量值2:
        若干语句;
        break;
     case 常量值3:
        若干语句;
        break;
    default:
        若干语句;


}
表达式的值可以为short byte int char 
常量1-3 也是short byte int char,而且要互不相同。
Switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,就执行改case里的若干语句直到碰到braek为止。若表达式的值不与任何case的常量值相等。执行default后面的若干语句。

2.3.1Example3_4

package Charpet3;
import java.util.Scanner;
public class Example3_4 {
	public static void main (String [] args) {
		int number = 0;
		System.out.println("输入正整数(回车确认)");
		Scanner reader = new Scanner(System.in);
		number = reader.nextInt();
		switch(number){
			case 9:
			case 131:
			case 12:
				System.out.println(number+"是三等奖");
				break;
			case 209:
			case 596:
			case 27:
				System.out.println(number+"是二等奖");
				break;
			case 875:
			case 316:
			case 59:
			System.out.println(number+"是一等奖");
				break;
			default:
				System.out.println(number+"未中奖");
		}
	

}
}

2.4for循环语句

2.4.1基础知识

把需要反复编写的代码放到循环体中,联合计算器共同控制这段需要反复编写的代码
for(初始表达式;布尔表达式;更新表达式){}
1.初始表达式 布尔表达式 更新表达式都不是必须写但是 ;是必须要写
2.初始表达式最先执行,并且只能执行一次
3.布尔表达式必须是 false true
4.for执行过程
执行初始表达式,只执行一次
判断布尔表达式true--执行循环体--更新表达式--布尔--
              false 循环体结束

2.4.2死循环

public class ForTest01 {
    public static void main (String [] args ) {

	for(;;){
		System.out.println("死循环");
	}
}
}	

2.4.2循环测试需求

输出1-10内的所有奇数

public class ForTest03 {
      public static void main (String [] args ) {
	//输出1到10中的所有奇数
	for (int i =1; i<=10;i+=2) {
		System.out.println(i);
	}
}
}

输出1-10内的所有偶数

public class ForTest03 {
      public static void main (String [] args ) {
	
	//输出1到10中的所有偶数
	for (int i =2; i<=10;i+=2) {
		System.out.println(i);
	}
	
}
}
	
        

计算8+88+888+8888....的前12项和

package Charpet3;

public class Example3_5 {
	public static void main(String [] args) {
		long sum = 0,a=8,item=a,n=12,i=1;
		for(i=1;i<=n;i++) {
			sum = sum+item;
			item = item*10+a;
			
		}
		System.out.println(sum);
		
		}
	}

2.5while循环语句

2.5.1基础知识

1.语法结构
while(布尔值){
  循环体
}
2.执行原理
判断布尔类型true--执行循环体
            false--循环结束

2.5.2相关需求编写

死循环

public class WhileTest01 {
      public static void main (String [] args ) {
	while (true ) {
		System.out.println("死循环");
	}
	
}
}

编译报错

public class WhileTest01 {
      public static void main (String [] args ) {
	/*while (true ) {
		System.out.println("死循环");
	}
	*/	//System.out.println("helloworld");语句永远无法访问编译报错
	//int i = 10;
	//int j = 3;
 	/*while (i>j ) {//编译器只检查语法不运行,变量的内存空间是在运行阶段开辟的,关系运算符在运行阶段才出现结果
			//while语句其实不知道真假,程序简单脆弱
		System.out.println("死循环");
	}
		System.out.println("helloworld");
                 */
	int i = 10;
	int j = 3;
 	while (10>3 ) {//不是变量内存知道真假,所以进行编译,出现和第一种情况一样
		System.out.println("死循环");
	}
             
		System.out.println("helloworld");
}
}

2.6break和continue语句

在循环体中可以使用break语句和continue语句,执行了break语句,当前循环结束;执行了continue,本次循环结束,不执行continue后面的语句,直接进入下一次循环。

2.7for语句与数组

2.7.1基础知识

for(声明循环变量:数组的名字){
    ...

}
声明循环变量的类型必须和数组的类型相同
翻译为:对于循环变量依次取数组的每一个元素的值
package Charpet3;

public class Example3_8 {
	public static void main(String [] args) {
		int a [] = {1,2,3};
		char b [] = {'a','b','c','d'};
//		for(int n = 0;n<a.length;n++) {
//			System.out.println(a[n]);
//		}
//		for(int n = 0;n<b.length;n++) {
//			System.out.println(a[n]);
//			System.out.println(n);
		for(int i:a) { //循环变量i依次取数组a的每一个元素的值
			System.out.println(i);
			
		}
		for(char ch:b) { //循环变量ch依次取数组b的每一个元素的值
			System.out.println(ch);
		}
		}
	}

3、scanner类

可以使用该类创建一个对象

Scanner reader = new Scanner (System.in);

然后reader对象调用下列方法,读取用户在命令行输入的各种基本数据类型的数据

nextBoolean()
nextByte()
nextShort()
nextInt()
nextLong()
nextfloat()
nextDouble()

上述方法在执行时都会阻塞,等待用户在命令行输入数据回车确认。例如,如果用户在键盘输入一个byte取值范围的整数89,那么reader对象调用hasNextByte()是true

在键盘上输入数据时,经常让reader对象先调用hasNextXXX方法等待用户在键盘输入数据,然后调用nextXXX()方法获取用户输入的数据。

package Charpet3;
import java.util.*;
public class Example3_9 {

	public static void main(String[] args) {
		Scanner reader = new Scanner(System.in);
		double sum =0;
		int m =0;
		while(reader.hasNextDouble()) {
			double x = reader.nextDouble();
			m = m + 1;
			sum = sum+x;
		}
		System.out.printf("%d个数的和为%f\n",m,sum);
		System.out.printf("%d个数的平均值为%f\n",m,sum/m);
			
		
	}

}

4、课后习题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右耳要加油

你们的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值