java运算符进阶

java 运算符进阶


位移运算符

  • x >> y : 右移运算符:
    1. 二进制中运算 :右移 y 个位;左边(缺失)补符号位;
    2. 实际数值(十进制):右移 y 个位,相当于 :x 除以 (2^y) 的结果;
  • x << y : 左移运算符:
    1. 二进制中运算:左移 y 位;右边(缺失)朴符号位:
    2. 实际数值(十进制):左移 y 位,相当于:x 乘以(2^y) 的结果:
  • x>>> 1 无符号右移;只补 0;因为无符号吗,

代码:

public class Study3  {
	/*位移运算符*/
	public static void main (String[] args) {
		/*String[] args 运行命令行参数*/
		System.out.println(11 >> 1); // 右移 相当于除法 11/(2^1) ;11/2= 5
		System.out.println(11 >> 2); // 11/4=2
		System.out.println(11 << 1); // 左移,相当于乘以 11*(2^2); 11*2 = 22
		System.out.println(11 << 2); // 11*2*2=44;

	}
}


结果:

在这里插入图片描述


字符串连接符

  • + 运算在执行字符串的拼接和数值加法运算时,是从左侧开始按顺序 执行的。这与平常的加法运算一样(一般来说,a+b+c可以看作是 (a+b+c)
  • 注意:不要写成了 - 减号:字符串无法减去数值的,会报错的

代码 1

public class Study3  {
	/*字符串连接符*/
	public static void main (String[] args) {
		System.out.println("57 + 23 ="+57+23); // 57+23=5723
		System.out.println(57+23+"= 57 + 23"); // 80=57+23
		System.out.println("57 + 23 ="+(57+23)); // 57+23=80


	}
}

结果1:

在这里插入图片描述


解析1:

  • 上述代码:第 4 行代码,因为 + 运算是从左侧到右侧的,(没有括号)由于这是**”字符串+数值“** 的运算,因此 57 就会转换为字符串 57 之后再进行拼接。运算的结果为字符串,先计算单个的 ** ”+57“字符串** :

    57+23=57 : 再算 ”+23“字符串57+23=5723

  • 上述代码:第 5 行代码,同理 + 运算是从左侧到右侧得,由于这是**”字符串+数值“** 的运算,因此 “57+23的的结果” 就会转换为字符串 80 之后再进行拼接。运算的结果为字符串80=57+23


代码2:

public class Study3  {
	/*字符串连接符再探究*/
	public static void main (String[] args) {
		System.out.println("57-32 = "+(57-32)); // 25 
		System.out.println("57-32 = "+ 57-23); // 报错,字符串无法减去数值;
	}
}

结果2:


解析2:

  • 上述代码:第 5 行代码,这个程序是错误的,编译时会发生错误,原因如下:
    1. 同理 因为 + 的运算是从左侧向右侧的,首先会执行左侧的**”57+23=+57“** 的运算。由于这是**”字符串+数值“** 的运算,因此 57 就会转换为字符串 57 之后再进行拼接。运算的结果为字符串”57-32 = 57“
    2. 接下来会执行右侧的 ”57 - 32 = 57“ - 32 的运算,这是 ”字符串 - 数值“ 的 运算。注意:字符串是无法减去数值, 因此,编译时就会发生错误:

结论:

运用字符串连接符 不要节约你得括号得使用


条件运算符(三目运算符)

  • x(表达式) ? y(真true) : z(假false) ** ;x 表达式为真(true)** ;结果为 y, x 表达式为假(false) ,结果为 z
  • 注意;是 : 双引号 ,不是分号,逗号;

代码:

public class Study3  {
	/*对条件运算符(三目运算符)的探究*/
	public static void main (String[] args) {
		int score = 100;
		String type = score < 60 ? "不及格":"及格" ;
		System.out.println(type);

	}
}


结果:


最后:

限于自身的水平,对其中存在的纰漏甚至错误,希望各位朋友,能给予指教,我会加以改正,谢谢大家!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值