java学习-day03-运算符、分支结构

基本数据类型运算规则(5条)

计算结果的数据类型,与最大类型一致

System.out.println( 3.14 * 5); // 计算结果为double型
System.out.println( 3 / 2); // 1  int/int 计算结果为 int 型
System.out.println( 3.0 / 2); // 1.5
System.out.println( 3D / 2); // 1.5

byte、short、char 三种比 int 小的整数,运算时会自动转换成 int

byte a = 2;
byte b = 3;
//byte c = a + b;// error Type mismatch: cannot convert from int to byte
byte c = (byte)(a + b);// 5 
byte d = (byte)(2 + b);//5

整数运算溢出

//System.out.println(30289289 * 60 * 60 * 24 * 365); error 计算结果不正确
//计算的整数已经远远的超过int范围,可以转为long类型
System.out.println(30289289L * 60 * 60 * 24 * 365);

浮点数运算不精确

double a = 2.34;
System.out.println( 2 - a ); // -0.33999999999999986
System.out.println( 1 - 0.9);// 0.09999999999999998  后续章节介绍解决方法

浮点数的特殊值

// java中允许分母为 零 ,但前提是需小数运算
System.out.println( 3 / 0); // error
System.out.println( 3.14 / 0); // Infinity 表示正无穷大
System.out.println( 0 / 0.0); // NaN  表示Not a Number 

运算符

在这里插入图片描述
注: && 和 || 具有短路作用,当 && 运算符左侧条件为 false 时,&& 运算符右侧不执行,形成短路。当 || 运算符左侧条件为 true 时, || 运算符右侧不执行。

自增自减运算符

遵循一条原则:前置++ 先加 1 后使用,后置++ 先使用后 加 1. 自减运算符同理。

int a = 1;
System.out.println(a++); // 1  先打印 a 的值再完成 a + 1
//此时 a 的值变为 2 
int b = 1;
System.out.println(++b); // 2  b 的值先加 1 后打印
System.out.println(++a+b+a++);// 8  3 + 2 + 3 = 8

int c = 0;
System.out.println(c--); // 0
//此时 c 的值变为 -1
int d = 0;
System.out.println(--d); // -1
System.out.println(--c-d-c--);// 1  -2-(-1)-(-2) = 1

三元运算符(求三个数的最大值)

import java.util.Scanner;
public class Max{
	public static void main(String[] args){
		int a = new Scanner(System.in).nextInt();
		int b = new Scanner(System.in).nextInt();
		int c = new Scanner(System.in).nextInt();
		//求 a 和 b 两个数的最大值
		int max = a > b ? a : b;
		//求 a b c 三个数的最大值
		int result = max > c ? max : c;
		int result2 = (a > b ? a : b) > c ? (a > b ? a : b) : c;
		int result3 = a > b ? ( a > c ? a : c) : (b > c ? b : c);
	}
}

判断年份是否为闰年

输入年号,判断是否是闰年。两个条件:
1、能被4整除,并且不能被100整除
2、或者能被400整除

import java.util.Scanner;
public class Year{
	public static void main(String[] args){
		int year = new Scanner(System.in).nextInt();
		String desc = "平年";
		if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
			desc = "闰年";
		}
		System.out.println(year + "年是" + desc);
	}
}

分支结构 1 if

单分支:
    if ( 判断条件是否成立){
    		条件成立后,执行此代码
    }

注:{ }内 只有一条语句时,可省略{ } 不写

import java.util.Scanner;
public class Data{
	public static void main(String[] args){
		int data = new Scanner(System.in).nextInt();
		if( data % 2 == 0){
			System.out.println(data + "是偶数");
		}
	}
}
多分支:
 if( 判断条件是否成立){
 		满足条件的代码
 }else{
 		  不满足条件的代码
 }
import java.util.Scanner;
public class Data{
	public static void main(String[] args){
		int data = new Scanner(System.in).nextInt();
		if( data % 2 == 0){
			System.out.println(data + "是偶数");
		}else{
			System.out.println(data + "是奇数");
		}
	}
}
嵌套分支:
if(判断条件1){
		满足条件的代码1
	}else if(判断条件2){
			满足条件的代码2
	}else if(判断条件3){
			满足条件的代码3
	}else if(判断条件4){
			满足条件的代码4
	}else{
			谁都不满足的代码5...
	}     

练习 1 :商品打折
接收用户输入的原价。满1000打9折。满2000打8折。满5000打5折。

import java.util.Scanner;
public class price{
	public static void main(String[] args){
		double price = new Scanner(System.in).nextDouble();
		// 这里用三元运算符计算,不过不建议这样做
		//double discount = price >= 5000 ? price * 0.5 : ( price >= 2000 ? price * 0.8 : ( price >= 1000 ? price * 0.9 : price));
		double discount = price; // discount变量记录打折后的价格
		if( price >= 5000){
			discount = price * 0.5;
		}else if( price >= 2000){
			discount = price * 0.8;
		}else if( price >= 1000){
			discount = price * 0.9;
		}
	}
}

练习2:统计学员得分
90分以上 优秀 80-89 良好 70-79 中等 60~69 及格 60分以下 不及格

import java.util.Scanner;
public class Score{
	public static void main(String[] args){
		int score = new Scanner(System.in).nextInt();
		if( score > 100 || score < 0){
			System.out.println("请输入0 ~ 100 以内的值");
			return;  // 结束程序
		}
		if( score >= 90 && score <= 100){
			System.out.println("优秀");
		}else if( score >= 80 && score <= 89){
			System.out.println("良好");
		}else if( score >= 70 && score <= 79){
			System.out.println("中等");
		}else if( score >= 60 && score <= 69){
			System.out.println("及格");
		}else if( score < 60){
			System.out.println("不及格");
		}
		System.out.println("程序执行完毕");
	}
}

分支结构 2 switch

switch(接受整型类型的表达式) { // byte short char int 新版本添加了String类型
case 情况1: // case 后 接的类型 应与 switch 括号内的类型一致
满足情况1 的代码;
break;
case 情况2:
满足情况2 的代码;
break;
case 情况3:
满足情况3 的代码;
break;
case 情况4:
满足情况4 的代码;
break;
default:
以上情况都不满足时执行的代码;
break;// 可不写
}

public class Test_Switch{
	public static void main(String[] args){
		int num = 2;
		switch(num){
		case 'a':
			System.out.println("hello world");
			break;
		case 0:
			System.out.println(0);
			break;
		case 1:
			System.out.println(1);
		case 2:
			System.out.println(2);
		default:
			System.out.println(-1);
		}
	}
}
发布了15 篇原创文章 · 获赞 9 · 访问量 276

猜你喜欢

转载自blog.csdn.net/qq_34681728/article/details/105252623