JavaSE学习笔记——运算符、控制语句

一、运算符

1、赋值运算符

  • 符号:=
    (1). 当两侧数据类型不一致时,可以使用自动类型转换或强制类型转换进行处理。
    (2).支持连续赋值。
  • 拓展赋值运算符: +=,-=,*=,/=,%=

思考:

int i = 1;
i *= 0.1;
System.out.println(i);
i++;
System.out.println(i);

结果:0 1 ( i 是 int 型)

注意:

short s = 2;
s = (short)(s + 3);
s += 3;

结果:s 都为 5
原因:当使用拓展运算符时,系统会自动将参与运算的变量转换为当前被赋值变量(s)的类型。

2、逻辑运算符

  • 逻辑运算符用于连结布尔型表达式时,在Java中不可以写成 3<x<6,应该写成 x>3 && x<6。
  • " & " 与 " && " 的区别:
    (1) " & " :对于表达式 x & y,无论 x 是真是假,y 都会进行判断。
    (2) " && " :对于表达式 x & y,如果 x 为真,判断 y 真假;如果 x 为假,y 不进行判断。
  • " | " 与 " || " 的区别:
    (1) " | " :对于表达式 x | y,无论 x 是真是假,y 都会进行判断。
    (2) " || " :对于表达式 x || y,如果 x 为真,y 不进行判断, 如果 x 为假,判断 y 真假。
  • 在不需要逻辑运算两边都参与运算的时候,尽量使用 && 和 ||。
  • 异或( ^ )和或( | )的区别是:当左右都为 true 时,异或的结果为false。理解:异或,既左右不同时为真。

3、练习

写出每题的输出结果
在这里插入图片描述

4、三目运算符

  • x > y ? x : y

  • 三目运算符输出两个数、三个数中的最大值:

    i > j ? i : j;//两个数中的最大值
    i > j ? ( i > k ? i : k ) : ( j > k ? j : k );//三个数中的最大值
    

二、控制语句

switch语句

1. 基本用法

  • switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String。
  • case子句中的值必须是常量,且所有case语句中的值应不同。
  • default子句是可选择的,当没有匹配的case时,执行default。
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。

2. switch语句和if语句对比

  • 如果判断的具体数值不多,而且符合byte,short,int,char这四种类型,虽然两种语句都可以使用,但建议使用switch语句。
  • 对区间判断、对结果为boolean类型判断时,使用if语句。

3. break、continue、return

  • break: 终止当前所在循环的所有循环;
  • continue: 终止本次循环,继续下一次循环;
  • return: 结束一个方法。
for(int i = 0; i < 3; i++){
    for(int j = 0; i < 9; j++){
        if( j > 2){
           break;// 当j > 2 时,终止内层循环,继续执行外层循环
        }
        System.out.println(j);
    }
}

结果:0 1 2 0 1 2 0 1 2

for(int i = 0; i < 9; i++){
    if(i % 2 == 0){
       continue;//结束当前这次循环,直接进入下一次循环
    }
    System.out.println(i);
}

结果:1 3 5 7

for(int i = 0; i < 2; i++){
    for(int j = 0; i < 2; j++){
        if( j == 1){
           return;//终止当前方法,没有输出
//         break;//只结束内层循环,外层不受影响,结果:0 1
        }
    }
    System.out.println(i);
}

4. 注意

  • break只能用于switch语句和循环语句中;
  • continue只能用于循环语句中;
  • break终止本层循环,continue终止本次循环;
  • break、continue之后不能有其他语句(本层{ }之外可以有),因为程序永远不会执行其后的语句。

三、练习

1、 打印九九乘法表

public class Test6 {
// 输出九九乘法表
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
//		String str = "";
		for(int i = 1; i <= 9; i++) {
			for(int j = 1; j <= i; j++) {
//				str = str + j + " * " + i + " = ";
				System.out.print(j + " * " + i + " = " + i*j + "\t");//'\t'也可以
//				str = "";
			}
			System.out.println();
		}
	}
}

2、 输出1-100之间的所有质数

public class Test7 {
// 打印1-100之间的所有质数
// 质数只能被 1 和它本身整除,故设置计数器k,记录被整除的次数,k = 2 的就是质数
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		for(int i = 1; i <= 100; i++) {
			int k = 0;// 记录被整除的次数
			for(int j = 1; j <= i; j++) {
				if(i % j == 0) {
					k++;
				}
			}
			if(k == 2) { // 只有被整除的次数为2的才是质数
				System.out.println(i);
			}
		}
	}
}

3、 编写程序,要求如下:

  • 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出"foo",每个5的倍数行上打印出"biz",每个7的倍数行上打印出"baz"。
  • 输出结果如下:
    1
    2
    3 foo
    4
    5 biz

    15 foo biz

    105 foo biz baz
package practice1;
/**
 * 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,
 * 另外在每个3的倍数行上打印出"foo",每个5的倍数行上打印出"biz",每个7的倍数行上打印出"baz"。
 * @author MCC
 *
 */

public class FooBizBaz {
	public static void main(String[] args) {
		for(int i = 1; i <= 150; i++) {
			String str = "";
			if(i % 3 == 0) {
				str += " foo ";
			}
			if(i % 5 == 0) {
				str += " biz ";
			}
			if(i % 7 == 0) {
				str += " baz ";
			}
			System.out.println(i + str);
		}
	}
}

4、 打印1-100之间所有奇数的和

package practice1;
/**
 * 打印1-100之间所有奇数的和
 * @author MCC
 *
 */

public class CountOdd {
	public static void main(String[] args) {
		int res = 0;
		for(int i = 1; i <= 100; i++) {
			if(i % 2 != 0) {
				res += i;
			}
		}
		System.out.println(res);
	}
}

5、 打印1-100之间所有7的倍数的个数以及总和

package practice1;
/**
 * 打印1-100之间所有7的倍数的个数以及总和
 * @author MCC
 *
 */
public class MultipieOfSeven {
	public static void main(String[] args) {
		int count = 0; //计数器
		int sum = 0; //计算和
		for(int i = 0; i <= 100; i++) {
			if(i % 7 ==0) {
				count += 1;
				sum += i;
			}
		}
		System.out.println("7的倍数的个数有:" + count + "个" + "\n总和为:" + sum);
	}
}

6、 输出所有的水仙花数。水仙花数是指一个三位数,其各个数位上的数的立方和等于其本身,
例如 153 = 111 + 555 + 333

package practice1;
/**
 * 输出所有的水仙花数。水仙花数是指一个三位数,其各个数位上的数的立方和等于其本身,
例如 153 = 1*1*1 + 5*5*5 + 3*3*3
 * @author MCC
 *
 */

public class ShuiXianHuaShu {
	public static void main(String[] args) {
		for(int i = 100; i < 1000; i++) {
			//int类型除法,把小数部分省略
			int m = i / 100; //百位数字
			int n = (i - m*100) / 10; //十位数字
			int k = i - m*100 - n*10; //个位数字
			if(m*m*m + n*n*n + k*k*k == i) {
				System.out.println(i);
			}
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值