java自学五

运算符篇

  1. 算数运算符
运算符运算范例结果
+正号+77
-负号b = 11; -b-7
+9 + 9 18
-10 - 8 2
*
/
%取模(取余)11 % 92

++

++

自增(前)

自增(后)

a = 2; b = ++a;

a = 2; b = a ++;

a = 3; b = 3

a = 3; b = 2

--

--

自减(前)

自减(后)

a = 2; b = --2;

a = 2; b = 2--;

a = 1; b = 1

a = 1; b = 2

+字符串相加“Hello” + “World”HelloWorld
public class ArithmeticOperator{
	public static void main(String[] args){
		//演示算数运算符的使用
		System.out.println(10/4);//2
		double d = 10/4;
		System.out.println(d);//2.0
		double m = 10.0/4;
		System.out.println(m);//2.5

	}
	
}

 System.out.print(-10%3);//(-10)%3----------(-1)
System.out.println(10 % -3);//10-10%3(余数永远和被除数符号一样)----------(1)
System.out.println(-10 % -3);//-1-----------(-1)

 int i = 1;
        i = i++;
        System.out.println("i="+i);//1

若:

i = ++i;
        System.out.println("i="+i);//2

public class ArithmeticOperator{
	public static void main(String[] args){
		int i1 = 10;
		int i2 = 20;
		int i = i1++;
		System.out.println("i ="+i);//i = 10,i1 = 11
		System.out.println("i2 = "+i2);//20
		i = --i2;
		System.out.println("i = "+i);//19
		System.out.println("i2 = "+i2);//19

	}
	
}

public class ArithmeticOperator{
	public static void main(String[] args){
		//假设还有59天放假,问折合多少个礼拜零几天
		int i1 = 59 / 7;
		int i2 = 59 % 7;
		System.out.println("折合"+i1+"礼拜零"+i2+"天");

	}
	
}

public class ArithmeticOperator{
	public static void main(String[] args){
		//定义一个变量保存华氏摄氏度,转换成摄氏温度的公式为:5/9*(华氏温度-100),
		//请求出234.5华氏摄氏度对应的摄氏温度
		double d = 234.5;
		double d2 = 5/9*(234.5-100);
		System.out.println("234.5华氏摄氏度对应的摄氏温度为:"+d2);


	}
	
}

关系运算符

运算符运算范例结果
==相等于8 == 7false
!=不等于8 != 7true
<小于8 < 7false
>大于8 > 7true
<=小于等于8 <= 7false
>=大于等于8 >=7true
instanceof检查是否是类的对象     "hsp" instanceof String     true

//演示关系运算符
public class Relationaloperator{
	public static void main(String[] args){
		int i1 = 8;
		int i2 = 7;
		System.out.println(i1 == i2);
		System.out.println(i1 != i2);
		System.out.println(i1 > i2);
		System.out.println(i1 < i2);
		System.out.println(i1 >= i2);
		System.out.println(i1 <= i2);
	}
}

逻辑运算符

短路与&&只有真真为真有一假则为假
短路或||只有假假为假有一真则为真
取反当a为true结果为false
逻辑与&只有真真为真有一假则为假
逻辑或|只有假假为假有一真则为真
逻辑异或^当a,b不同时结果为true,否则为false
//演示逻辑运算符的使用
public class Logicaloperator{
	public static void main(String[] args){
		//短路或
		int age = 18;
		if (age > 2 || age < 30) {
			System.out.println("OK100");
		}
		if (age > 20 || age < 30) {
			System.out.println("OK200");
		}
		//两个均能正常输出
		if (age > 20 || age < 10) {
			System.out.println("OK300");
		}
		//不会被输出
		int a = 4;
		int b = 9;
		if (age > 2 || ++b < 30) {
			System.out.println("OK400");
		}
		System.out.print("a = "+a+"b = "+b);
		//输出OK400,a=4,b=9
		/*
		?为什么b不会自增,因为当a判断为真时整个结果必然为真,短路或将不进行++b

		*/
		System.out.println("\n==============");
		if (age > 2 || b++ < 30) {
			System.out.println("OK500");
		}
		System.out.print("a = "+a+"b = "+b);
		//输出OK500,a=4,b=9
		System.out.println("\n==============");
		if (age > 2 | ++b < 30) {
			System.out.println("OK600");
		}
		System.out.print("a = "+a+"b = "+b);
		//输出OK600,a=4,b=10

	}
}

短路与常用,但是当短路与前面的条件为假时则不执行后面的条件

逻辑与则不同(傻夫夫),不管前面条件是否为假,都将执行后面的条件

短路或常用,但是当短路或前面的条件为真时将不执行后面的条件

public class Inverseoperator{
	public static void main(String[] args){
		System.out.println(30>20);//true
		System.out.print(!(30>20));//false
		boolean b = (10>1)^(3>5);//true
		System.out.println("\nb = "+b);
	}
}

 HomeWork

public class Homework01{
	public static void main(String[] args){
		/*
		int x = 5;
		int y = 5;
		if(x++ == 6 & ++y == 6){
			x = 11;
		}
		System.out.println(" x = " + x + " y = " + y);
		//逻辑与:x先比较再自增,y先自增再比较。前为假结果为假。输出结果为 x = 6 y = 6
		*/
		/*
		int x = 5;
		int y = 5;
		if(x++ == 5 & ++y == 5){
			x = 11;
		}
		System.out.println(" x = " + x + " y = " + y);
		//逻辑与:x先比较再自增,y先自增再比较。前为真,后为假。输出结果为:x = 6 y = 6
		*/
		/*
		int x = 5;
		int y = 5;
		if(x++ == 6 && ++y == 6){
			x = 11;
		}
		System.out.println(" x = " + x + " y = " + y);
		//短路与:x先比较再自增,y先自增再比较。但是前为假后不执行。输出结果为:x = 6 y = 5
		*/
		/*
		int x = 5;
		int y = 5;
		if(x++ == 5 || ++y == 5){
			x = 11;
		}
		System.out.println(" x = " + x + " y = " + y);
		//短路或,x先比较再自增,y先自增再比较。前为真故后不执行。输出结果为:x = 11 y = 5
		*/


	}
}
public class Homework02{
	public static void main(String[] args){
		boolean x = true;
		boolean y = false;
		short z = 46;
		if ((z ++ == 46)&&(y = true)) {
			z ++;			
		}
		System.out.println("z = "+z);
		//输出结果为:z = 48?(我滴天因为后边y=true是赋值语句,所以整个结果是正确的执行if当中的z++)
		if ((x = false)||(++z == 49)) {
			z ++;
		}
		System.out.println("z = "+z);
		输出结果为:z = 50√

	}
}

赋值运算符

赋值运算符是将某个运算后的值,赋给指定的变量。

赋值运算符的分类

基本赋值运算符 =   int a = 10

复合赋值运算符

+= , -=,*=, /=,%=等,重点讲解一个 +=,其他的使用是一个道理

a += b;[等价?]----> a = a+b

 a -=b;[等价?]----> a = a-b

三元运算符

条件表达式 ?表达式1:表达式2

运算规则:

1.如果条件表达式为true,运算后的结果为表达式1

2.如果条件表达式为false,运算后结果为表达式2 

public class AssignOperator{
	public static void main(String[] args){
		int a = 10;
		int b = 99;
		int result = a>b? a++:b--;
		//结果为false故结果执行b--为99?前面分析正确执行b--result=b,b执行b-1故,result=b,b=b-1
		System.out.println("result = "+result+",b = "+b);
		int result1 = a>b? a++:--b;
		System.out.println("result1 = "+result1+",b = "+b);
		//结果为:result1 = 97,b = 97


	}
}

 double c = a>b? (int)1.1:(int)3.4;//正确

int c = a>b? 1.1:3.4;//错误

int c = a>b? (int)1.1:(int)3.4;//正确

//使用三元运算符求出三个数当中的最大值
public class Homework03{
	public static void main(String[] args){
		
		int a = 533;
		int b = 432;
		int c = 123;
		/*
		int max1 = a > b ? a:b;
		int max2 = max1 > c ? max1:c;
		System.out.println(max2);
		*/
		//用一句表达式解决
		int max = (a>b ? a:b)>c?(a>b ? a:b):c;
		System.out.println(max);
	}
}

 运算符的优先级

上一行运算符的优先级优于下一行的优先级

只有单目运算符,赋值运算符是从右向左运算的

1)(){}等

2)单目运算符 ++ --

3)算术运算符

4)移位运算符<<,>>,>>>

5)比较运算符

6)逻辑运算符

7)三元运算符

8)赋值运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值