• 5Java运算符


    算术运算符

    /**
     * 演示算术运算符的使用
     */
    
    public class ArithmeticOperator{
    
    	public static void main(String[] args) {
    		
    		// /的使用
    		
    		System.out.println(10 / 4); // 2
    		System.out.println(10.0 / 4); // 2.5
    		// double d = 10 / 4;
    		// System.out.println(d); // 2.0
    		// % 取模,取余,负号跟着除数,取模的本质:a % b = a - a /b * b;
    		
    		System.out.println(10 % 3); //1
    		System.out.println(-10 % 3);  // -1
    		System.out.println(10 % -3); // 1
    		System.out.println(-10 % -3); // -1
    		
    
    		// ++ 使用
    		int i = 10;
    		i++; // 等价于i = i + 1
    		++i; // 等价于i = i + 1
    		System.out.println("i=" + i);
    		
    		/*
    		作为表达式使用
    		前++,++i先自增,后+1
    		后++,i++先赋值,后+1
    		 */
    		int j = 8;
    		int k = ++j;
    		j = 8;
    		int l = j++;
    		System.out.println("k=" + k + " j=" + j);
    		System.out.println("l=" + l + " j=" + j);
    		
    	}
    }
    
    • i=i++ 这种要注意,需要了解Java底层的设置思想,C语言的机制应该是i都等于2
    public class ArithmeticOperatorEx01{
    	public static void main(String[] args) {
    		
    		int i = 1;
    		i = i++; // 规则使用临时变量,1、temp = i, 2、i = i + i , 3、i = temp
    		System.out.println("i = " + i); //1
    
    		i = 1;
    		i = ++i; // i = i+ 1, temp = i, i = temp; 
    		System.out.println("i = " + i); // 2
    
    	}
    }
    
    • 课堂实例
    public class ArithmeticOperatorEx01{
    	public static void main(String[] args) {
    		
    		int i = 1;
    		i = i++; // 规则使用临时变量,1、temp = i, 2、i = i + i , 3、i = temp
    		System.out.println("i = " + i); //1
    
    		i = 1;
    		i = ++i; // i = i+ 1, temp = i, i = temp; 
    		System.out.println("i = " + i); // 2
    
    		// 测试输出,比较简单
    		int i1 = 10;
    		int i2 = 20;
    		i = i1++;
    		System.out.println("i=" + i);
    		System.out.println("i2=" + i2);
    		i = --i2;
    		System.out.println("i=" + i);
    		System.out.println("i2=" + i2);
    
    	}
    }
    
    • 课堂练习
    1. 假如有59天放假,合多少星期,多少天
    2. 定义一个变量保存华氏温度,华氏温度转换为摄氏度 5/9*(华氏温度-100),求华氏温度对应的摄氏度
    // 1
    public class ArithmeticOperatorEx02{
    	public static void main(String[] args) {
    		
    		int days = 59;
    		int weeks = days / 7;
    		int leftDays = days % 7;
    		System.out.println(weeks + "星期" + leftDays +"天");
    
    		double f1 = 234.5;
    		double c1 = 5.0/9 * (f1 - 100);
    		System.out.println("摄氏度为:" + c1);
    	}
    }
    

    关系运算符

    • 关系运算符结果是boolean,要么是true, 要么是false
    public class RelationalOperator{
    
    	public static void main(String[] args) {
    		
    		int a = 9; // 开发中不能使用a, b
    		int b = 8;
    
    		System.out.println(a > b);
    		System.out.println(a >= b);
    		System.out.println(a < b);
    		System.out.println(a <= b);
    		System.out.println(a == b);
    		System.out.println(a != b);
    		// System.out.println(a instanceof Integer); // instanceof 必须是引用类型,报错
    		boolean flag = a > b;
    
    		System.out.println("flag=" + flag);
    
    	}
    }
    

    逻辑运算符

    • && 和 || 短路与或者短路或,只要能判断出来,第二个判断不会判断
    • && &, || |, ^异或, !取反
    • && 和 &的区别
    /**
     * 演示逻辑运算符的使用
     */
    
    public class LogicOperator{
    	public static void main(String[] args) {
    		
    		// && 和 || 案例演示
    		// && 两个都为真,才为真,&&和&区别是&&只要判断为假就不在进行判断
    		int age = 50;
    		if (age > 20 && age < 90){
    			System.out.println("ok100");
    		}
    
    
    		if (age > 20 && age < 30){
    			System.out.println("ok100");
    		}
    		// &的使用,
    		if (age > 20 & age < 90){
    			System.out.println("ok100");
    		}
    
    		//区别,&&和&区别是&&只要判断为假就不在进行判断
    		int a = 4;
    		int b = 9;
    
    		if (a <1 && ++b < 50){
    			System.out.println("ok300");
    		}
    
    		System.out.println("a=" + a + " b=" + b);
    		// 
    		if (a <1 & ++b < 50){
    			System.out.println("ok300");
    		}
    		System.out.println("a=" + a + " b=" + b);
    	}
    }
    
    • || 和 |的区别
    public class LogicOperator02{
    
    	public static void main(String[] args) {
    		
    		// || 短路或和 |的区别,短路或||只要判断为真就不在进行判断
    		int age = 50;
    		if (age > 20 || age < 30){
    			System.out.println("ok100");
    		}
    
    		age = 50;
    		if (age > 20 | age < 30){
    			System.out.println("ok200");
    		}
    
    		// 看看区别
    		int a = 4;
    		int b = 9;
    
    		if (a > 1 || ++b < 50){
    			System.out.println("ok300");
    		}
    		System.out.println("a=" + a + " b=" + b);
    		// |
    		if (a > 1 | ++b < 50){
    			System.out.println("ok300");
    		}
    		System.out.println("a=" + a + " b=" + b);
    
    
    	}
    }
    
    • !取反
    public class LogicOperator03{
    
    	public static void main(String[] args) {
    		
    		System.out.println(60 > 20);
    		System.out.println(!(60 > 20));
    
    		// ^ 异或,不同为真,相同为假
    		boolean b = (10 > 1) ^ (3 < 5);
    		System.out.println("b=" + b);
    
    		boolean a = (10 > 1) ^ (3 > 5);
    		System.out.println("a=" + a);
    
    	}
    }
    

    赋值运算符

    • 赋值运算符就是将某个运算后的值,赋给指定的变量
    • 复合运算符会自动进行类型转换;
    // 演示运算符的使用
    public class AssignOperator{
    
    	public static void main(String[] args) {
    		
    		int n1 = 10;
    		n1 += 4; // n1 = n1 + 4;
    		System.out.println("n1=" + n1);
    
    		n1 /= 3;
    		System.out.println("n1=" + n1);
    
    		// 复合运算符会自动进行类型转换
    		byte b = 3;
    		b += 2; // b =(byte) (b + 2);
    		//b = b + 2; // 会报错,类型强制转换
    		b++; // b = (byte)(b + 1)
    
    	}
    }
    

    位运算符

    • 运算符优先级
    • 标识符命令规则
    • 数字不能开头,只能有26个英文字符大小写,以及_,以及$组成
    • 不能由关键字或者保留字组成
    • 标识符命名规范
    import java.util.Scanner;
    
    // 扫描器
    
    public class Input{
    
    	public static void main(String[] args) {
    		// 演示接受用户的输入
    		// 步骤
    		// 1.引入Scanner的包
    		// 2.创建Scanner对象
    		// 3.接受用户的输入
    		
    		Scanner myScanner = new Scanner(System.in);
    		System.out.println("请输入名字");
    		String name = myScanner.next();
    		System.out.println("请输入年龄:");
    		int age = myScanner.nextInt();
    		System.out.println("请输入薪水:");
    		double sal = myScanner.nextDouble();
    		System.out.println("人的信息如下:");
    
    		System.out.println("name=" + name + " age=" + age + " sal=" + sal);
    
    
    	}
    }
    
    • 进制
    // 演示四种进制
    // 
    public class BinaryTest{
    	public static void main(String[] args) {
    		// n1 二进制
    		int n1 = 0b1010;
    		// n2 10进制 
    		int n2 = 1010;
    		// n3 8进制
    		int n3 = 01010;
    		// n4 16进制
    		int n4 = 0x1010;
    
    		System.out.println("n1=" + n1);
    		System.out.println("n2=" + n2);
    		System.out.println("n3=" + n3);
    		System.out.println("n4=" + n4);
    
    	}
    }
    
    • 位运算的思考题
    • 计算机运算的时候,都是以补码的方式来运算的(所有运算包括位运算)
    • 当我们看运算结果的时候,要看他的原码
    // 位运算
    // 
    
    public class BitOperator{
    
    	public static void main(String[] args) {
    		
    		// 看老师的推导过程
    		// 1.先得到2的补码,==> 2的补码 00000000 00000000 00000000 00000010
    		//                     3的补码 00000000 00000000 00000000 00000011
    		//                      的补码 00000000 00000000 00000000 00000010                    
    		System.out.println(2&3);  
    
    
    		// 推导
    		// 1. 先得到 -2 的原码 10000000 00000000 00000000 00000010
    		// 				 反码 11111111 11111111 11111111 11111101
    		// 				 补码 11111111 11111111 11111111 11111110
    		// ~-2的操作          00000000 00000000 00000000 00000001
    		//运算后的原码
    		System.out.println(~-2);   
    		// 推导
    		// 1.得到2的补码 00000000 00000000 00000000 00000010
    		// 2. ~2操作    11111111 11111111 11111111 11111101
    		//              11111111 11111111 11111111 11111100
    		//              10000000 00000000 00000000 00000011
    		System.out.println(~2);
    		             			 
    	}
    }
    
    • 左移 << 相当于*2
    • 右移 >> 相当于/2
    public class BitOperator02{
    
    	public static void main(String[] args) {
    		
    		System.out.println("12 >> 2  " + (12 >> 2));
    		System.out.println("12 << 2  " + (12 << 2));
    
    	}
    }
    

    三元运算符

    • 基本语法:条件表达式?表达式1:表达式2;
    • 细节:表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)
    // 三元运算符细节
    
    public class TemaryOperatorDetail{
    
    	public static void main(String[] args) {
    		
    		// 表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)
    		int a = 3;
    		int b = 8;
    		int c = a > b ? a : b;
    		// int c = a > b ? 1.1 : 3.4; // 报错
    		double d = a > b ? a : b;
    
    
    	}
    }
    
    public class TemaryOperatorEx01{
    
    	public static void main(String[] args) {
    		// 实现三个数的最大值,用三元运算符
    		int n1 = 55;
    		int n2 = 33;
    		int n3 = 123;
    		// 思路
    		// 1.先得到n1和n2中的最大数,保存到max1
    		// 2.然后在求出max1和 n3 中的最大数,保存到n2
    		int max1 = n1 > n2 ? n1 : n2;
    		int max2 = max1 > n3 ? max1 : n3;
    
    		System.out.println("max最大数:" + max2);
    
    		// 使用一条语句实现,其实就是拆解,大问题先拆成小问题,然后在解决
    		int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
    		
    
    
    	}
    }
    
  • 相关阅读:
    儿童教育:孩子要买东西,怎么办?
    儿童教育:是否应该让他写好字
    Python on VS Code
    AI
    Java: Replace a string from multiple replaced strings to multiple substitutes
    Visual Studio 2015 Test Explorer does not show anything
    SpringIOC容器创建过程
    spring的组件工厂后置处理器——BeanFactoryPostProcessor
    spring与quartz的整合
    启动tomcat报错One or more listeners failed to start,却找不到任何错误日志的临时解决方案
  • 原文地址:https://www.cnblogs.com/jly1/p/15621784.html
Copyright © 2020-2023  润新知