java 运算符的程序_Java运算符

3.运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。包括:算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符。

3.1算术运算符:

正号: + 负号: -

加号: + 减号: -  乘号: * 除号:  / 取模: %

前/后置加: ++ 前/后置减 –

连接符: +

注意:1)除:/

int i = 12;

int j = i/5;

double d = i / 5;

double d1 = i/5.0;

System.out.println(j);//2

System.out.println(d);//2.0

System.out.println(d1);//2.4

2)取模:%:取余数.结果的符号取决于被模数(%左边的数)

int i1 = 12 % 5;

int i2 = -12 % 5;

int i3 = 12 % (-5);

int i4 = -12 % (-5);

System.out.println(i1);//2

System.out.println(i2);//-2

System.out.println(i3);//2

System.out.println(i4);//-2

3)前++:先自增1,后做运算;后++:先做运算,后自增1

--------------------------------------------------------------------------

int myInt1 = 10;

int myInt2 = myInt1++;//后++

System.out.println(myInt1);//11

System.out.println(myInt2);//10

------------------------------------------------------------------------

int myInt3 = 10;

int myInt4 = ++myInt3;//前++

System.out.println(myInt3);//11

System.out.println(myInt4);//11

-----------------------------------------------------------------------------

4)连接符+:String字符串与其他数据类型只能做连接运算,且结果为String类型。

“+”除字符串相加功能外,还能把非字符串转换成字符串。

【举例】:

class Testjia

{

public static void main(String[] args)

{

System.out.println("5+5="+5+5); //输出:5+5=55

System.out.println('*' + '\t' +'*');//输出:93

System.out.println("*" + '\t' +'*');//输出:*        *

}

}

3.2赋值运算符:

=    +=   -=  *=    /=   %=

【举例】

int i= 12;

i  = i * 5;

i *= 5;//与上一行代码同样的意思

【注意】

short s = 10;

s = s + 5;//报编译的异常

s = (short)(s + 5);//不建议如此实现,容易损失精度

s += 5;//既可以实现运算,又不会改变s的数据类型。

3.3比较运算符(关系运算符)

==  !=

>   =   <=

instanceof 检查是否是类的对象

【举例】

范例

结果

“Hello”  instanceof  String

true

“Hello”  instanceof  System

false

【注意】

①  区分 ==  与 =  区别。

②  进行比较运算操作以后,返回一个boolean类型的值,要么是true,要么是false。

4 >= 3  表达的是4 > 3或者 4 = 3。结果是true。

③if(i > 1 && i < 10){  }   不能写为:if(1 < i < 10){  }

3.4逻辑运算符(运算符的两端是boolean值)

&   逻辑与       |  逻辑或         ! 逻辑非

&&  短路与       ||  短路或        ^  逻辑异或

a

b

a&b

a|b

!a

a^b

a&&b

a||b

true

true

true

true

false

false

true

true

true

false

false

true

false

true

false

true

false

true

false

true

true

true

false

true

false

false

false

false

true

false

false

false

【注意】

①逻辑运算符用于连接布尔型表达式,在Java中不可以写成33 & x<6 。

②“&”和“&&”的区别:

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,则右边不参与运算。

“|”和“||”区别同理,||时:左边为真,右边不参与运算。我们使用的时候,选择&&和||

③异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

理解:异或,追求的是“异”!

3.5位运算符(两端是数值类型的数据)

位运算是直接对二进制进行运算,注意:无<<

运算符

运算

范例

<<

左移

3 << 2 = 12 --> 3*2*2=12 ;m<

>>

右移

3 >> 1 = 1--> 3/2=1 ;m>>n结果:m/(2^n)

>>>

无符号右移

3 >>> 1 = 1 --> 3/2=1;m>>>n结果:m/(2^n)

&

与运算

6 & 3 = 2

|

或运算

6 | 3 = 7

^

异或运算

6 ^ 3 = 5

~

反码

~6 = -7

【规则】

①     左移(二进制左移n位,低位补0)有限度,正数的二进制左移后,首位变1了就错了

②     右移:二进制右移n位,原来最高位是几,高位就补几

③     无符号右移:二进制右移n位,无论高位是几,高位都补0

④     与运算:左右两端数的二进制所对应位都是1则变1,否则为0,所得二进制数为结果

⑤     或运算:左右两端数的二进制所对应位至少有一个是1则变1,否则为0,所得二进制数为结果

⑥     异或运算:左右两端数的二进制所对应位不同则变1,否则为0,所得二进制数为结果

⑦     反码:该数的二进制对应位1变0,0变1,最后所得二进制数为结果

【小练习】

交换两个变量的值

//方法一:提供一个临时变量。

Int  temp = m;

m = n;

n = temp;

System.out.println("m:" + m + " n:" + n);

//方法二:当m和n较大时,有可能出现精度损失

m = m + n;//m = 12 + 5;

n = m - n;//n = 17 - 5;

m = m - n;//m = 17- 12

System.out.println("m:" + m + " n:" + n);

//方法三:优点:没有上面两种方法的缺点。缺点:难!

m = m ^ n;

n = m ^ n; //(m ^ n) ^ n == m

m = m ^ n; //(m ^ n) ^ m == n

System.out.println("m:" + m + " n:" + n);

3.6三元运算符

(条件表达式)?表达式1:表达式2;

若条件表达式结果为true,运算后的结果是表达式1;

若条件表达式结果为false,运算后的结果是表达式2;

【注意】

①  既然是运算符,一定会返回一个结果,并且结果的数据类型与表达式1,2的类型一致

②  表达式1与表达式2 的数据类型一致。

③  三元运算符与if-else的联系与区别:三元运算符可简化if-else语句;三元运算符要求必须返回一个结果;if后的代码块可有多个语句;使用三元运算符的,一定可以转换为if-else,反之不一定成立。

【小练习】如何使用三元运算符,输出三个数中的较大值。

int m = 12;int n = 23;int k = -9;

int max1 = (m > n)? m : n;

int max2 = (max1 > k)? max1 : k;

System.out.println(max2);

3.7运算符的优先级

●运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行;只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

4264d2f382a69f2c82215974cf78fd76.png

【小练习】输出60的十六进制。

int i = 60;

//法一:自动调用Integer类现成的方法

String binary = Integer.toBinaryString(i);System.out.println(binary);

String hex = Integer.toHexString(i);System.out.println(hex);

//法二:手动的方式,从控制台输出60的十六进制。

/*

char c = 'a';

char c1 = (char)(c + 2);

System.out.println(c1);//c

*/

int j = i & 15;//获取到i的最低4位对应的值。

String k1 = (j <= 9)? j + "" : (char)(j - 10 + 'a') + "";

i = i >> 4;

int z = i & 15;

String k2 = (z <= 9)? z + "" : (char)(z - 10 + 'a') + "";

System.out.println(k2 + k1);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值