Java SE_基本运算符、自增自减运算符、逻辑运算符、位运算符、三元运算符


package com.landray.sty;

public class Demo05 {

	public static void main(String[] args) {
		// 优先级(一元运算符 ===> - + - * /)建议多使用括号()
		// Java语言支持如下运算符:
		// 算术运算符:+, -,*,/,%,++,--
		// 赋值运算符:=
		// 关系运算符:>,<,>=,<=,==,!=,instanceof
		// 逻辑运算符:&&,||,!
		// 位运算符:&,|,^,~,>>,<<,>>>
		// 条件运算符:?:
		// 扩展赋值运算符:+=,-=,*=,/=

		// 二元运算符(两个数操作的)
		int a = 10;
		int b = 20;
		System.out.println(a + b);// 输出30
		System.out.println(a - b);// 输出-10
		System.out.println(a * b);// 输出200
		// a / b ==> 10/20应该等于0.5这里输出0肯定有问题,因为都是int类型只取整数部分所以是0
		System.out.println(a / b);// 输出0
		// 转换后输出0.5
		System.out.println(a / (double) b);// 输出0.5

		long c = 123123123123123L;
		int d = 123;
		short e = 10;
		byte f = 8;
		System.out.println(c + d + e + f);// 输出 123123123123264(long类型)
		System.out.println(d + e + f);// 输出141(int类型)
		System.out.println(e + f);// 输出18(int类型)
		System.out.println((double) e + f);// 输出18.0(double类型)
		// 如果两个操作数或者多个操作数中有一个为long,那么结果类型也为long,如果没有long,结果都为int,无论有没有int类型

		int x = 20;
		double y = 99;
		int w = 33;
		long u = 8989989;
		System.out.println(x);// 输出20
		System.out.println(y);// 输出99.0
		System.out.println(x + w + u);// 输出8990042(long类型)
		System.out.println(x + y + w + u);// 输出8990141.0(double类型)
		// 如果两个操作数或者多个操作数中有一个为double,那么结果类型也为double
	}

}


package com.landray.sty;

public class Demo06 {

	public static void main(String[] args) {
		// ++(自增) --(自减) 一元运算符
		int a = 3;
		int b = a++;// 执行完这行代码后,先给b赋值,再自增
		// a = a+1;
		System.out.println(a);// 输出4
		// a = a+1;
		int c = ++a; // 执行完这行代码前,先自增,再给c赋值

		System.out.println(a);// 输出5
		System.out.println(b);// 输出3
		System.out.println(c);// 输出5

		// 幂运算 2^3(2的3次方) 2*2*2 = 8 (很多运算,我们会使用一些工具类来操作)
		double pow = Math.pow(2, 3);
		System.out.println(pow);// 输出8.0
		double pow1 = Math.pow(3, 2);
		System.out.println(pow1);// 输出9.0
	}

}


package com.landray.sty;

public class Demo07 {

	public static void main(String[] args) {
		// 与(and) 或(or) 非(取反)
		boolean a = true;
		boolean b = false;
		// 逻辑与运算:两个变量都为真的,结果才为true
		System.out.println("a && b:" + (a && b));// 输出a && b:false
		// 逻辑或运算:两个变量有一个为真,贼结果才为true
		System.out.println("a ||&& b:" + (a || b));// 输出a ||&& b:true
		// 如果是真,则变为假,如果是假,则变为真
		System.out.println("!(a && b):" + !(a && b));// 输出!(a && b):true

		// 短路运算

		// 判断的是b为true,a也为true(两个变量都为真的,结果才为true)
		// 但是如果一开始就发现b为假的,就不会去进行后面的运算操作
		System.out.println("a && b:" + (b && a));

		int c = 5;
		boolean d = (c < 4) && (c++ < 4);
		System.out.println(d);// 输出false
		System.out.println(c);// 输出5
		// c在这里输出的值为5,就证明 “&& (c++ < 4)”后面这一串并没有执行,因为如果执行了c++后的值为6
		// 因为前面一段“(c < 4)”已经为false了,所以不会去进行后面的逻辑运算了
	}

}


package com.landray.sty;

public class Demo08 {

	public static void main(String[] args) {
		// 位运算符(二进制相关)
		// 二进制数字
		// A = 0011 1100
		// B = 0000 1101
		// 位运算根据位来计算
		// A&B = 0000 1100(如果上一位和下一位比较,如果两个都是1则为1,否则为0)
		// A|B = 0011 1101(如果对应位都是0,那么结果为0,否则为1)
		// A^B = 0011 0001(如果两个位置相同则为0,否则为1)
		// A~B = 1111 0010

		// 扩展:
		// 2*8 = 16 怎么计算最快?
		// 拆分:2*2*2*2
		// 效果极高,与底层打交道
		// << 左移相当于 *2
		// >> 右移相对于 /2
		// 二进制中 0000 0000 代表 0
		// 二进制中 0000 0001 代表 1
		// 二进制中 0000 0010 代表 2
		// 二进制中 0000 0011 代表 3
		// 二进制中 0000 0100 代表 4
		// 二进制中 0000 1000 代表8
		// 二进制中 0001 0000 代表 16
		System.out.println(2 << 3);// 输出16(2左移3位变成了16)
	}

}


package com.landray.sty;

public class Demo09 {

	public static void main(String[] args) {
		int a = 10;
		int b = 20;

		a += b;// a = a + b;
		System.out.println(a);// 输出 30
		a -= b;// a = a - b;
		System.out.println(a);// 输出 10

		// 字符串连接符 +
		System.out.println(a + b);// 输出30
		// ""-代表(空字符串),+运行符两侧只要有一方出现了String(字符串类型),就会把其他操作数都转换成String进行连接
		// 字符串在前,后面的会进行拼接
		System.out.println("" + a + b);// 输出1020(把a和b连接起来了,并没有进行运行)
		// 字符串在后,前面的数依旧会进行运算
		System.out.println(a + b + "");// 输出30

		// 三元运算符
		// x ? y : z
		// 如果x==true,则结果为y,否则结果为z
		int score = 80;
		String type = score < 60 ? "不及格" : "及格";
		System.out.println(type);// 输出及格

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值