初学Java---运算符和语句的使用


第四单元 语句与运算符


第一部分 运算符


一、动手任务

(一).如何使用算术运算符(opertor)?
  • 1.加法(+):连接字符串,加法本意

    • 示例如下:
    //China34
    System.out.println("China" + 3 + 4 + "   ");
    //7China
    System.out.println(3 + 4 + "China");
  • 2.减法(-):

    • 示例如下:
    //0.09999999999999998
    System.out.println(1 - 0.9);
    //0.10000000000000009
    System.out.println(2.0 - 1.9);
注:由于浮点型在十进制转化成二进制的过程中产生了误差导致,所以只能接近于正确结果 。Java可以实现精确计算。
  • 3.乘法(*):两个数相乘

  • 4.除法(/):两个整数相除等于整数

    • 示例如下:
    //1
    System.out.println(3 / 2);
    //0
    System.out.println(2 / 3);
    //0.66666666666667
    System.out.println(2.0 / 3);
    //下边的那个输出语句错误
    System.out.println(3 / 0);
    //Infinity:无穷大
    System.out.println(3.0 / 0);
  • 5.取余(%):

    • 示例如下:
  	//1
  	System.out.println(3 % 2);
  	//-1
  	System.out.println(-3 % 2);
  	//2
  	System.out.println(2 % 3);
  	//下边的那个输出语句错误
  	System.out.println(3 % 0);
  	//NAN(Not a Number)
  	System.out.println(3.0 %0);
  • 6.自加(++)或自减(–):常量不能自加或自减,age++是先用age再+1;++age是先+1再用

  • 7.编程实现两个整数的加减乘除求余运算,要求用户输入两个整数。

  • 8.用户输入学生姓名、学号、年龄、成绩,要求一句话输出。

(二).使用赋值运算符?
  • 1.赋值(=):注意两方面问题:

    • (1)两侧类型问题
    • (2)超范围问题
  • 2.Java扩展赋值运算符(效率高)

    • 常用扩展的赋值运算符:隐含强制类型转换

      在这里插入图片描述

    • 示例如下:

    short num = 20;
    num +=1;//可行,相当于在栈区内num这本单元里直接+1
    num = num + 1;//错误!这意味着num+1,num+1再占用了一个栈的内存,为int型,再赋给short,需要进行强制转换   
  • 3.如何使用关系运算符?http://c.biancheng.net/view/778.html

    • 常见的关系运算符:

      在这里插入图片描述

    • 示例如下:

    //false
    System.out.println(3 == 2);
    //true
    System.out.println(3 != 7);
    //true
    System.out.println(3 >= 0);
  • 4.如何使用逻辑运算符?http://c.biancheng.net/view/777.html

    • (1)、& 一般的与: 所有的式子都要执行

    • (2)、&& 短路与:前面的式子能够确定最终结果,后面的就不执行了

    • (3)、| 一般的或:所有的式子都要执行

    • (4)、|| 短路或:前面的式子能够确定最终结果,后面的就不执行了

    • (5)、!:表示取反,整数不能取反,只能对boolean类型取反

    • 常用的逻辑运算符:

      在这里插入图片描述

    • 示例如下:

    public class LogicOperator {
    /**
     * 测试逻辑运算符
     	*/
    public void calc() {
    	int a = 100;
    	int b = 200;	
    	if(a < 38 && ++b > 10) {
    		System.out.println("&的使用");
    	}
    	System.out.println("b的值是:" + b);
     	
    	if(a > 38 | ++b > 10) {
    		System.out.println("&的使用");
    	}
    	System.out.println("b的值是:" + b);
    
    	if(a > 38 || ++b > 10) {
    		System.out.println("&的使用");
    	}
    	System.out.println("b的值是:" + b);
    
    	if(!(a < 80)) {
    		System.out.println("hello");
    	}
     	 }
     	public static void main(String[] args) {
    	LogicOperator logicOperator = new LogicOperator();
    	logicOperator.calc();
    	}
    }	
  • 5.如何使用位运算符?(了解):对二进制操作

    • (1)、与(&)
    • (2)、或(|)
    • (3)、异或(^):一样为0,不一样为1。
  • 6.如何使用移位运算符?()

    • (1)(>>右移):高位补符号位
    • (2)(<<左移):低位补0
    • (3)(>>>无符号右移):高位一律补0

二、准确口述

  • 1.运算符优先级?

    • 优先级最高的是括号,优先级可以通过括号提升

    • 优先级图示如下:

      在这里插入图片描述

  • 2.&&和&;||和|的区别

    • &:所有的式子都要执行
    • &&(短路与):&&左边的一旦是false,直接短路,不执行右边。
    • |:|的左右两边都要执行
    • ||:||左边的一旦是true,直接短路,不执行右边。即||为短路或
  • 3.能否以0为除数?

    • 当被除数是小数时可以,当被除数是整数时不正确。示例如下:
    	//下边的那个输出语句错误
    	System.out.println(3 / 0);
    	//Infinity:无穷大
    	System.out.println(3.0 / 0);
  • 4、3/2;2/3;2.0/3;3%2;2%3结果?

    • 示例如下:
    //1
    System.out.println(3 / 2);
    //0
    System.out.println(2 / 3);
    //0.66666666666667
    System.out.println(2.0 / 3);
    //下边的那个输出语句错误
    System.out.println(3 / 0);
    //Infinity:无穷大
    System.out.println(3.0 / 0);
    //1
    System.out.println(3 % 2);
    //-1
    System.out.println(-3 % 2);
    //2
    System.out.println(2 % 3);
    //下边的那个输出语句错误
    System.out.println(3 % 0);
    //NAN(Not a Number)
    System.out.println(3.0 %0);
  • 5.能否对常量做自加自减?

    • 答:不能。
  • 6.扩展的赋值运算符有啥优势和特点?

    • 特点:赋值的同时,加入运算。
    • 优势:效率高。
  • 7、1-0.9的结果是什么?

    • 示例:
    //0.09999999999999998
    System.out.println(1 - 0.9);

第二部分 语句


一、动手任务

(一).if语句
  • 1.if语法规则:

    • (1).if等这些句子后,如果是变量的定义语句,大括号是必须要加的
    • (2).不能连着连个两个if语句,去返回 如 : if(){return true} if(){return true}
  • 2.奇数判断:用户输入一个整数,输出其是否为奇数。

    • (1).在判断是否为奇数时,尽量写成是if(num % 2 != 0) ,而 if(num % 2 == 1) 此种方式也对,但存在bug不能判断负数的

    • (2).题目程序示例如下:

public class Odd1 {
	/**
	 * 任意给定一个数,判断是否为奇数
	 * 
	 * @param num 给定的整数
	 */
	public void isOdd(int num) {
		int n = 2;
		if (num % n != 0) {
			System.out.println(num + "是奇数!");
		} else {
			System.out.println(num + "是偶数!");
		}
	}
	
	public static void main(String[] args) {
		System.out.println("奇偶的判断");
		Odd1 o = new Odd1();
		Scanner sc = new Scanner(System.in);
		System.out.println("请您输入一个整数:");
		int num1 = sc.nextInt();
		o.isOdd(num1);
	}
}
  • 3.面试题:
  • (1)示例一:
int first = 90;
int second = 98;
if(first > second)
	int age = 21;
	System.out.println(age++);
  • 以上程序输出什么?答:上方程序是错误的,无法输出;因为if下有变量定义,无大括号;该规则对for、while都有效
  • (2)示例二:
int age = 1;
int first = 90;
int second = 98;
if(first > second)
	System.out.println("hello");
	System.out.println(age++);
  • 以上程序输出什么?答:输出1。
(二).if-else语句
  • 1.注意代码规范,} else { else 左右都有空格
  • 2.用户输入成绩,如果大于等于60输出及格,否则输出不及格。
public class Grade {
	/**
	 * 任意给定成绩,判断是否及格
	 * @param score 给定的成绩
	 * @return 如果及格返回"您输入的成绩及格!",如果不及格返回"您输入的成绩不及格!".
	 */
	public String pass(int score) {
		int s = 60;
		if (score >= s) {
			return "您输入的成绩及格!";
		} else {
			return "您输入的成绩不及格!";
		}
	}
	
	public static void main(String[] args) {
		Grade g = new Grade();
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的成绩:");
		int score = sc.nextInt();
		System.out.println(g.pass(score));
	}
}
  • 3.输入数学、英语和政治成绩,判断考研是否成功。
public class Yangrade {
	/**
	 * 输入数学、英语和政治和专业课成绩,判断考研是否成功
	 * @param m 数学成绩
	 * @param e 英语成绩
	 * @param p 政治成绩
	 * @param i 专业课成绩
	 */
	public void pass(int m,int e,int p,int i) {
		int sum=e+m+p+i;
		int n = 280;
		if (sum >= n) {
			System.out.println("恭喜你考研成功!"); 
		} else {
			System.out.println("真的是太遗憾了,继续努力!");	
		}
		System.out.println("您的总成绩为:"+sum);
	}
	
	public static void main(String[] args) {
		System.out.println("判断考研是否成功");
		Yangrade y = new Yangrade();
		Scanner sc = new Scanner(System.in);
		System.out.println("请您分别输入数学、英语、政治和专业课成绩:");
		int m = sc.nextInt();
		int e = sc.nextInt();
		int p = sc.nextInt();
		int i = sc.nextInt();
		y.pass(m, e, p, i);
	}
}
(三).switch语句
  • 1.switch使用注意事项:注意变量定义要加大括号。
    • (1).break可有可无
    • (2).default可有可无
    • (3).default位置不一定放在最后
    • (4).switch的参数可以是哪些类型?byte、short、int、char、String。
    • (5).switch 括号中可以放的是整数和字符串吗?
      • 答:不正确,switch中绝不可以放long整型。
  • 2.根据成绩等级输出分数段
public class Gradelevel {
	public static void main(String[] args) {
		System.out.println("请输入优秀、良好、中等、及格和不及格中的一个等级:");
		Scanner sc = new Scanner(System.in);
		String n = sc.next();
		switch (n) {
		case "优秀":
			System.out.println("成绩分数段为:" + "90-100");
			break;
		case "良好":
			System.out.println("成绩分数段为:" + "80-89");
			break;
		case "中等":
			System.out.println("成绩分数段为:" + "70-79");
			break;
		case "及格":
			System.out.println("成绩分数段为:" + "60-69");
			break;
		case "不及格":
			System.out.println("成绩分数段为:" + "0-59");
			break;
		default:
			System.out.println("您输入的都不匹配!!!");
			break;
		}
	}
}
  • 3.用户输入年份和月份,程序输出该月的天数。
public class Day {
	public static void main(String[] args) {
		System.out.println("请您分别输入年份和月份:");
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		int month = sc.nextInt();
		int a = 4,b = 100,c = 400;
		boolean x = ((year % a ==0) && (year % b != 0));
		if ( x || (year % c == 0)) {
			switch (month) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					System.out.println(year + "年的" + month + "月有" + "31天。");
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					System.out.println(year + "年的" + month + "月有" + "30天。");
					break;
				case 2:
					System.out.println(year + "的" + month + "月有" + "29天。");
					break;
				default:
					System.out.println("您输入的数据不匹配。");
					break;
			}
		} else {
			switch (month) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					System.out.println(year + "年的" + month + "月有" + "31天。");
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					System.out.println(year + "年的" + month + "月有" + "30天。");
					break;
				case 2:
					System.out.println(year + "年的" + month + "月有" + "28天。");
					break;
				default:
					System.out.println("您输入的数据不匹配。");
					break;
			}
		}
	}
}
(四).for语句
  • 1.for使用注意事项:注意变量定义要加大括号。
    • (1).for循环中第一式子只执行一次,第二个式子一定是布尔类型。
    • (2).所有循环语句后不要加分号,加了就不往下执行语句中的内容了。
  • 2.计算1+2+3+··········+500的和。
public class Add {
	/**
	 * 计算1+2+3+··········+500
	 * @param sum 它们的和
	 * @return 返回和
	 */
	public int add(int sum) {
		int s = 500;
		for (int i = 1;i <= s;i++) {
			sum += i;
		}
		return sum;
	}
	
	public static void main(String[] args) {
		Add add = new Add();
		System.out.println(add.add(0));
	}
}
  • 以下示例都正确:
public class ForDemo {
	public int getA() {
		return 1;
	}
	public boolean getB() {
		return true;
	}
	public void getC() {}
	public void test() {
		for(getA();getB();getC()) {
			System.out.println("hello...");
		}
	}
	public static void main(String[] args) {
		//死循环
		for(;;) { 
			System.out.println("success..."); 
		}
		http://www.qq.com
	}
}
(五).break/continue语句
  • 1.计算1-50以内的奇数相加的结果。
public class Addodd {
	public void addOdd(int sum) {
		int a = 50;
		for (int i = 0;i <= a;i++) {
			if (i % 2 == 1) {
				sum += i;
			}
		}
		System.out.println(sum);
	}
	
	public static void main(String[] args) {
		Addodd ao = new Addodd();
		ao.addOdd(0);
	}
}
  • 2.计算1-50以内的奇数相加,和大于90时终止计算。

  • break/continue:

public class Addoddend1 {
	public static void main(String[] args) {
		int a = 50;
		int sum = 0;
		for (int i = 1;i < a;i++) {
			if (i % 2 == 0) {
				continue;
			} else {
				sum += i;
				if(sum > 90) {	
					break;
				}
			}
		}
		System.out.println(sum);
	}
}
(六).while语句
  • 1.语法规则:先看条件在执行,注意变量定义要加大括号。
    • 示例如下:
int i = 100;
while (i < 10) {
	System.out.println("China");
	i++;
}
//死循环
while(true) {}
  • 2.猜数字:要求猜一个介于1-10之间的数字,根据用户猜测的数与标准值进行对比,标准值设置为5,并给出提示,猜大了,猜小了,猜对了。

    • 示例如下:
public class Guess {	
	public static void main(String[] args) {
		System.out.println("下面游戏将开始");
		System.out.println("请您输入1-10之间任何一个数字:");
		Scanner sc = new Scanner(System.in);
		while (true) {
			int num = sc.nextInt();
			if (num > 5) {
				System.out.println("猜大了!" + "请您再次输入一个数:");
			} else if (num < 5) {
				System.out.println("猜小了!" + "请您再次输入一个数:");
			} else {
				System.out.println("恭喜您猜对了!游戏结束!");
				break;
			}
		}
	}
}
(七).do while语句
  • 1.语法规则:先执行在看条件,注意变量定义要加大括号。
    • 示例如下:
int i = 100;
do {
	System.out.println("hello");
} while(i < 10);
  • 2.猜数字:要求猜一个介于1-100之间的数字,标准值随机,并给出提示,猜大了,猜小了,猜对了。

    • 示例如下:
public class Guess1 {
	public static void main(String[] args) {
		System.out.println("下面游戏即将开始");
		System.out.println("请您输入1-100之间任何一个数字:");
		//创建Random类变量,在1-100之间随机产生一个数
		Random ran = new Random();
		int rnum = ran.nextInt(100)+1;
		//创建变量接收数据
		Scanner sc = new Scanner(System.in);
		while (true) {
			int num = sc.nextInt();
			if (num > rnum) {
				System.out.println("猜大了!" + "请您再次输入一个数:");
			} else if (num < rnum) {
				System.out.println("猜小了!" + "请您再次输入一个数:");
			} else {
				System.out.println("bingou,恭喜您猜对了!");
				break;
			}
		}	
	}
}

二、准确口述

  • 1.结束循环的方式有哪些?
    • 答:(1).break; (2).return; (3).System.exit(0):退出程序。
  • 2.双重for循环嵌套,内层有break,跳出的是那个循环?
  • 3.break和continue的区别?
    • 答:break:结束整个循环;continue:跳过本次循环。
  • 4.switch的参数可以是哪些类型?
    • 答:switch的括号里可以是:byte、short、int、char、String。
  • 5.switch 括号中可以放的是整数和字符串吗?
    • 答:不正确,switch中绝不可以放long整型。
  • 6.为什么在代码中可以写个http://www.qq.com,而不报错?
    • 暂时不太懂(后续会继续补充)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

慕兮IT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值