Java零基础-03-运算符

1.运算符相关概念

1.1术语

例如:a+b

“+”是运算符,运算符就是符号。 a和b分别称为操作数。”a+b”这个整体是一个表达式

1.2运算符分类

运算符种类 操作符
算数运算符+ - * / % ++ --
赋值运算符=
扩展赋值运算符+= -= *= /=
关系运算符> >= < <= ==(判断两边是不是一样的) !=
逻辑运算符&(与) |(或) && || ! ^
条件运算符?:
位运算符& | ^ ~ >> << >>>

2.算数运算符

2.1除和求模

// / %
public class Test01_ChuAndMo{
  public static void main(String[] args){
     System.out.println(10/3);//3
	 System.out.println(10/3.0);//3.333333


     //最终结果的正负由被除数
	 System.out.println(10%3);//1
	 System.out.println(10%-3);//1
	 System.out.println(-10%3);//-1
	 System.out.println(-10%-3);//-1
  }
}

练习:给一个任意的四位数,求每一位上的数字并输出  2356

public class Test02_ChuAndMo{
  public static void main(String[] args){
     //1.定义一个数   1234/10=123 1234%10=4
	 int num=1234;
	 //2.数进行处理
	 int ge=num%10;
	 int shi=num%100/10;
	 int bai=num%1000/100;
	 int qian=num/1000;

	 //3.输出
	 System.out.println(ge);
	 System.out.println(shi);
	 System.out.println(bai);
	 System.out.println(qian);
  }
}

2.2加号

作用:(1)加法运算

           (2)正数

           (3)字符串拼接

//+
public class Operator03{
  public static void main(String[] args){
	 //加法运算
     System.out.println(10+3);//13
	 //正数
	 System.out.println(+10);//10
     //字符串拼接
     int num=456;
	 System.out.println("num="+num);//num=456

	 System.out.println(5+6+"7");//117 
	 System.out.println(5+'6'+"7");//597
	 System.out.println('5'+6+'7');//59+55=114	 
  }
}

2.3自加++

public class Test04_AndAnd{
  public static void main(String[] args){
	/*
	int a=10;
	a++;//自加1, 相当于a=a+1;
	System.out.println(a);//11
	

	int a=10;
	++a;//自加1, 相当于a=a+1;
	System.out.println(a);//11
	*/

	//问题: ++a 和a++ 有区别?
	//++a先自加1,然后再参与运算(再使用)
	//a++先参与运算,再自加1
	/*
	int a=10;
	int m=a++ +7;
	System.out.println(a);//11
    System.out.println(m);//10 +7= 17
	
	int a=10;
	int m=++a +7;
    System.out.println(a);//11
    System.out.println(m);//18

	*/

	int a=5;
	System.out.println(a++ + a++ );//11   5+6     7
	System.out.println(a++ + ++a );//16   7+9     9
	System.out.println(++a + a++ );//20   10+10   11
	System.out.println(++a + ++a );//25   12+13   13
  }
}

3.赋值运算符

任意给你两个数,然后交换位置   

public class Test05_exchange{
	public static void main(String[] args){	
		//任意给你两个数,然后交换位置   
		//10  20 交换完之后  20 10

		//1.给两个数(给死)
		int num1=10;
		int num2=20;

		//2.输出交换前的两个数
		System.out.println("交换前:num1="+num1+"\tnum2="+num2);

		//3.交换
		int temp=0;
		temp=num2;
		num2=num1;//num1=20, num2=20  temp=10  num1由10变为20,10被覆盖
		num1=temp;//num2=10,  num1=20

		/**int temp=0;
		temp=num1;//先将num2的20存起来
		num1=num2;//num2=10;  num1=10;  num2由20变为10,20被覆盖
		num2=temp;//num1=20;  num2=10;**/

		//4.输出交换后的两个数
		System.out.println("交换后:num1="+num1+"\tnum2="+num2);
	
	}
}

4.扩展赋值运算符

只看+=

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

		int a=10;
		int b=20;
	
		//int a=a+b;--->累加
		int a+=b;
		//3.输出
		System.out.println(a);

		/*
		1.可读性:a=a+b;
		2.编译效率:a+=b;高
		3.a+=b;进行自动转换
		  byte\short\char自动转换

		1byte 2short 2char --->4int --->8long --->4float--->8double


		*/
		short s=10;
		//s=s+1;//错误: 不兼容的类型: 从int转换到short可能会有损失
		s=(short)(s+1);
		System.out.println(s);

		short s1=10;
		s1+=1;
		System.out.println("s1="+s1);
	}
}

5.关系运算符

public class Test07_GuanXi{
	public static void main(String[] args){	
		System.out.println(4>9);//false
		System.out.println(4> =9);//false
		System.out.println(4<9);//t
		System.out.println(4< =9);//true  小于或者等于
		System.out.println(4==9);//f
		System.out.println(4!=9);//t
	}
}

6.逻辑运算符

6.1&和&&

public class Test08_Luoji{
	public static void main(String[] args){	
		//&:与  & 两边的操作数都是布尔类型,要么是true,要么是false
		//&两边都为true的时候结果才为true
		System.out.println(true&true);//true
		System.out.println(true&false);//false
		System.out.println(false&true);//false
		System.out.println(false&false);//false

		System.out.println("================================");

		//&&:与:&两边都为true的时候结果才为true
		System.out.println(true&&true);//true
		System.out.println(true&&false);//false
		System.out.println(false&&true);//false
		System.out.println(false&&false);//false

		System.out.println("================================");

		/*
		&&,又叫短路与,更加智能,如果第一个表达式为false,第二个表达式将不参与运算
		*/

		int m=10;
		System.out.println(false && (m++) == 11);//false
		System.out.println(m);//10
		System.out.println(false & m++==11);//f
		System.out.println(m);//11

	}
}

6.1|和||

public class Test09_Luoji{
	public static void main(String[] args){	
		//|或  只要一个为true,最终结果就为true
		System.out.println(true|true);//true
		System.out.println(true|false);//true
		System.out.println(false|true);//true
		System.out.println(false|false);//false

		System.out.println("========================");
		// || 或  只要一个为true,最终结果就为true
		System.out.println(true||true);//true
		System.out.println(true||false);//true
		System.out.println(false||true);//true
		System.out.println(false||false);//false

		System.out.println("========================");

		// ||短路或, 智能, 如果第一个表达式为true,第二个表达式不参与运算

		int m=10;
		System.out.println(true | m++==11);//true   m++==11参与运算
		System.out.println(m);//11
		System.out.println(true || m++==11);//true  m++==11没有参与运算
		System.out.println(m);//11

		System.out.println("========================");

		System.out.println(!true);//false
        System.out.println(!false);//true

		System.out.println("========================");

        //^ 异或   两个操作数相同为false, 操作数不同为true
		//计算 true1   false是0    0^0=0    0^1=1   1^1=0
		System.out.println(true ^ true);//false
		System.out.println(true ^ false);//true
		System.out.println(false ^ true);//true
		System.out.println(false ^ false);//false

		//两边之和大于第三条边且两边之差小于第三条边 
	    //a+b>c && a-b<c
	    //逻辑运算符经常用于连接多个布尔表达式
		//判断某一年是否为闰年,
		//闰年的条件:能被4整除但是不能被100整除,或者直接能被400整除
		//(year%4==0&&year%100!=0)||yea%400==0
		//153  153==1的立方+5的立方+3的立方=1+125+27=153   456
		   
		int num=153;
		boolean res=(num==ge*ge*ge+5*5*5+3*3*3);
		System.out.println(num+"是水仙花数吗:"+res);
	}
}

7.条件运算符

public class Test10_TiaoJian{
	public static void main(String[] args){	
		int num=5>7?7:5;
		System.out.println(num);//7

		//?后面两部分的类型要一致。

		String str=(4==4)?'相':'不相等';
		System.out.println(str);
		
	    //作业:求三个数的较大者
		
	}
}

8.位运算符

public class Test11_Wei{
	public static void main(String[] args){
		//&  |  ^
		byte x=3;//0000 0011
		byte y=4;//0000 0100
		System.out.println(x&y);//0000 0000---->0   
		System.out.println(x|y);//0000 0111---->7
		System.out.println(x^y);//0000 0111---->7
		//System.out.println(~x);// 1111 1100--->1111 1011-->1000 0100-->-4
		
		//  <<左移   位运算符跟位有关,二进制
		/*
		1.十进制的6转换二进制
		      0000 0110
		 00   0001 1000--->2的4次幂+2的3次幂=16+8=24

		 结论:左移几位就相当于乘于2的几次方
		   
		*/
		byte a=6<<3;// 100--->
		System.out.println(a);

		// >>右移,有符号位(正负) >>>无符号右移
		/*
		1.十进制的6转换二进制
		      0000 0110 
		      0000 0001  10--->2的4次幂+2的3次幂=16+8=24

		 结论:右移几位就相当于除以2的几次方
		   
		*/
		a=6>>2;// --->   6/4
		System.out.println(a);
	}
}

9.运算符优先级

10.键盘输入

import java.util.*;
public class Test12_Input{
	public static void main(String[] args){
		//定义扫描仪变量,变量名sc.
		Scanner sc= new Scanner(System.in);
		System.out.print("请输入一个整数:");
		//从键盘接收数据
        /*int i = sc.nextInt();
		System.out.println("输出整数:"+i);

		System.out.print("请输入一个小数:");
		double d=sc.nextDouble();
		System.out.println("输出小数:"+d);

		System.out.print("请输入一个布尔类型:");
		boolean b=sc.nextBoolean();
		System.out.println("输出小数:"+b);*/

        //dalanqiu
		System.out.print("请输入一个文本:");
		String s=sc.next();
		char c=s.charAt(1);
		System.out.println("输出文本:"+s);
		System.out.println("输出文本:"+c);
	}
}

11.作业

[1]定义三个int型变量并赋值,使用三元运算符获取这三个数中的较大数的实现
[2]编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。
[3]交换两个变量值的代码的实现
[4]闰年的判断条件:能被4整除但不能被100整除,或者能被400整除的;若年份是闰年,则输出true,否则false
[5]三角形构成的判断条件:两边和大于第三条边;若三条边构成三角形,则输出true,否则false
[6]如果一个三位数的各个位的立方和等于它本身则为水仙花数,如153=1*1*1+5*5*5+3*3*3,153是水仙花数。若一个数是水仙花数,则输出true,否则false
[7]如何从控制台获取String和int型的变量,并输出?使用代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值