三目运算符和+=及-=的神秘功能

Posted 八两石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三目运算符和+=及-=的神秘功能相关的知识,希望对你有一定的参考价值。

  摘要:在这里大家都对着两个符号都比较熟悉了吧,都知道三目运算符是if/else控制语句的一种快捷机制由   (布尔表达式)?语句:语句  这样构成,像if/else一样判定执行,但三目运算还有一个隐藏的数据类型转换功能,+=及-=也是一样不仅仅是相加或相减后赋值,让我们用几个例子来说明它们的隐藏功能。

一.三目运算符:

  三目运算符:具有数据类型不一致时,就会显示出类型的转换,即是装得下就不转换,装不下就转换的功能;

    例:

package com.lov.lianxiText;

public class ValHold {
	public static void main(String[] args) {
		int a = 1;
		System.out.println(true ? \'b\' : 65535);//\'b\'是字符型,而65535是int型
		System.out.println(true ? \'b\' : 65536);
		System.out.println(false ? a : \'b\');
	}
}

  如果我们不知道它的隐藏功能,只单单的用三目运算来看,大家都会认为输出的结果是98 98 98 吧!但结果会是这样吗?

因为\'b\'是字符型65535是int型,字符型大小是2个字节等同于short的大小,即能装的最大正整数是65535,当超过时,\'b\'就会转换数据类型为int输出b的ASCLL码98

二 .+=及-=:

  加减赋值符号也带有数据类型的转换功能;

     例:

package com.lovo.javaoo2;

public class TXET {
	public static void main(String[] args) {
		char[]array={\'H\',\'e\',\'l\',\'L\',\'o\',\'!\'};
		changeCase(array);
	}
	public static void changeCase(char[]array){
		for (int i = 0; i < array.length; i++) {
			if(array[i]>=\'A\'&&array[i]<=\'Z\'){
				array[i]+=32;//①
			}else if(array[i]>=\'a\'&&array[i]<=\'z\'){
				array[i]=(char)(array[i]-32);//②
			}
		}
	}
}

  如上面代码①与②的比较我们可以看出相加后赋值具有类型的转换功能。

以上是关于三目运算符和+=及-=的神秘功能的主要内容,如果未能解决你的问题,请参考以下文章

三目运算符及自动拆箱问题及性能比较

Java中的三目运算符可能出现的问题

js switch判断 三目运算 while 及 属性操作

三目运算符 段错误问题记录

三目运算符

第18课 三目运算符和逗号表达式