从小白慢慢往上爬的历程--Java运算符

Java中的运算符大概分为以下几类:赋值运算符算术运算符、比较运算符、位运算符

赋值运算符=(最基本的赋值运算符)、+=(加赋值)-=(减赋值)*=(乘赋值)/=(除赋值)%=(余赋值)

    赋值运算符=的作用就是将一个对象的值赋给另一个对象,例如a=b,就是将b的值赋给a(不是指a与b相等);加赋值+=就是将对象与另一对象做加法运算然后数据类型转换再赋值给其自己,例如a+=b,实现的是将a与b相加并转化为a的数据类型再赋值给a。其他几个赋值同理

算术运算符+-*(加减乘)、/(除法)、%(取余)、++  (自增)、 -- (自减)。

    其中+代表的含义有三种:

String s ="S"+"tring";//字符串连接符
int i = +1;//正号
int j = i+1;//加法运算符
    /做除法运算时要注意的是如果是两个int型数据相除得到的结果也是int型的,实际上就是完成了取商的运算 

    ++--与其性质相似)放在数据前与后效果是不同的:

int i = 1;
int j = i++;
System.out.println("i:"+i+"\tj:"+j);

 
  
    运行结果为:i:2j:1 (先将i值赋给j,后i做累加)

int i = 1;
int j = ++i;
System.out.println("i:"+i+"\tj:"+j);

    运行结果为:i:2j:2(先i做累加,后将i值赋给j

比较运算符==(相等,如果是基本数据类型直接比较值,引用数据类型比较地址)!=(不相等,如果是基本数据类型直接比较值,引用类型比较地址)>=(大于等于)<=(小于等于),比较结果为Boolean类型,所以常用作条件判断。

逻辑运算符&(与)、|(或)、^(异或)、!(非)、&&(与)、||(或)。

    &与&&在逻辑上都是判断条件同时成立才能成立则返回true,任意一条件不满足返回false,比如判断一个数是否是1到9之间的数,我们可以用"count>1&count<9",也可以用"count>1&&count<9",结果都是返回一个Boolean型的值,但是&&有短路效果,当左边的条件满足则不判断右边的条件,即当count赋值为0时,&判断完">1"不满足仍然会判断"count<9",而&&判断完">1"不满足就停止判断了,同理|和||在两条件任一条件满足时返回true,都不满足返回false,当左边的条件满足时||短路,不判断右边条件。
       !加在条件左边表示条件不成立时。。。
	^异或比较有意思,表示的是相同为false不同为true。

位运算符&(位与)、|(位或)、^(位异或)、~(取反)、<<(左移)、>>(带符号右移)、>>>(无符号右移,这个是Java独有的)

	在对两个数做位运算时现将其转化为补码形式,&运算就是实现两数相同数位上都为1则记为1否则记为0;|位或运算实现两数相同数位上都为0记为0否则为1;^位异或实现两数相同数位上数字相同记为0不同记为1;~取反实现每个数位上0变1,1变0;<>n带符号右移实现原数右移n位,左边补n个原符号位数字(相当于原数除以2的n次方);>>>n不带符号右移实现的是原数右移n位,左边补n个0(相当于原数除以2的n次方并取绝对值)。

除了以上运算符还有三元运算符,其格式为:条件表达式?表达式1:表达式2;,表示如果满足条件则结果为表达式1否则为表达式2,。三元运算符只能在赋值运算时使用,输出语句时不能调用。比如判断一个数是否大于9,是则返回true,不是返回false,用三元运算符表达就是Boolean flag = count>9?true:false;

面试题:

1.

short a =1;
short b =2;
a = a+b;
a +=b;111

哪行编译报错,为什么?

2.如何以最有效率的方式实现168*16?

3.用多种方式实现交换两个数的值(第三方变量、位异或、加减运算、加减运算与赋值运算一步实现)


你可能感兴趣的:(我的成长历程(理性类),java,基础知识,小白)