java运算符


一、Java运算符

    我们把常量存到变量的目的是为了运算,计算机就是处理数据的,它的原理就是运算数据。运算数据就用到了运算符。

运算符有以下几种:

1.算术运算符

%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

例题:

下列代码运行的结果是(C )

public static void main(String[] args) {

int x = 4;//定义一个变量x,给它赋值4

int y = 5;//定义一个变量y,给它赋值5

if(x++>4 & ++y>5) {//++在后是先用后加,所以就是4>4,之后4+1=5,这时x=5。++在前是先加后用,

    //所以是6>5,y=6。因为&运算符是一边错,就返回0(也就是false)。不执行{}里的语句,所以最后输出结果是C

x++;

}

System.out.println("x=" + x + ",y=" + y);

}

A. x=4,y=5

B. x=4,y=6

C. x=5,y=6

D. x=8,y=6

运算符演示

在Java 中提供运算功能的就是运算符(Operator),算术运算符有加(+)、减(-)、乘(*)、除(/)这类的运算符。另外还有一个很常用的取模运算符(%)。这类以数学运算为主的运算符称为算术运算符(Arithmetic Operator)。

举几个算数运算的例子:
int a = 5+4; //a=9
int b = a*2; //b=18
int c = b/4; //c=4
int d = b-c; //d=14
int e = -d; //e=-14
int f = e%4; //f=-2
这里简单说一下取模运算符(%),其实就是取除法后的余数,例子中的int f = e%4,就是-14对4取余数,结果为-2。与C、 C++不同,对取模运算符%来说,其操作数可以为浮点数, 如 37.2%10=7.2。
而且,Java对加运算符进行了扩展,使它能够进行字符串的连接,如"abc"+"de",得到字符串 "abcde"。但是这只是对于字符串连接的简单扩展,字符串并不支持诸如减法的其他运算。有趣的是,字符是支持加法和减法的,其参与运算的是这个字符的ASCII码值。例如b的ASCII码值比a大1,所以(‘b’-‘a’)的结果就是1。

2.赋值运算符

 赋值运算符的符号有:=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=

示例:

int a,b,c;  a=b=c=3;       int a=3; //这个叫把右边赋给左边             a+=5;(这个叫把左右两边的和赋给左边)等同运算a=a+5;

优点:它会实现数据类型的自动转换。

3.比较运算符

instanceof

该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。

比较运算符的特点:运算完的结果,要么是true,要么是false。

4.逻辑运算符

逻辑运算符的值一定为逻辑值(true或false)

&&和||的优点是:节约了判断时间,提高了判断效率。因为它们是只要有一边判断就可以。

5.位运算符

位运算是直接对二进制进行运算。

注:当&、|两边是整数时执行的是位运算,而两边是boolean值时执行的就是逻辑运算。

简图:

<<:其实就是乘以2的移位的位数次幂

>>:就是除以2的移位的位数次幂

<<<、>>>:表示无符号左移、无符号右移

>>:最高位补什么由原有数据的最高位值而定。

          如果最高位是0,右移后用0补空位。如果最高位是1,右移后用1补空位。<<同理。

>>>:无论最高位是什么,右移后都用0补。<<<同理。

~:这个用的时候不多,它就是把二进制的0变1,1变0。

^:一个数异或一个数两次,结果还是那个数。如:6^3^3=6

例题:

用最有效率的方法算出2乘以8等于几?

答:2<<3。相当于2*(2*2*2)=16

因为计算机是二进制的,而位运算是直接对二进制进行运算。所以你用位运算是最快的是最小效率的。它是CPU直接执行。

对两个变量的数据进行互换。简图

int a = 1,b= 2;

int c;

c = a;

a = b;

b = c;

结果:a = 2,b = 1。

对两个变量的数据进行互换。(不需要第三方变量)

int a = 3,b = 5;

a = a +b;//a = 8

b = a - b;//b = 3

a = a - b;//a = 5

a = a ^ b;

b = a ^ b;//b = a ^ b ^ b = a

a = a ^ b;//a = a ^ b ^ a = b

结果:b = 3,a = 5。

6.三元运算符

三元运算符也是条件运算符

格式:变量 = (条件)?表达式1:表达式2;

规则:先判断条件,若条件为true,则取表达式1的值作为整个条件运算符组成的表达式的值并赋给左边变量。反之,则取表达式2的值赋给左边变量。

例:max = a > b ? a:b;

当a大于b时,则将a的值赋给max;    当a小于b或等于b时,则取b的值赋给max。

 

二、类型转换

强制和转换

        Java语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数运算符间可以来回强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。
Java中整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int。如果结果超过该类型的取值范围,则按该类型的最大值取模。
 
转义字符:通过\来转变后面字母或者符号的含义。
\n:换行         \b:退格,相当于backspace          \r:回车           \t:制表符,相当于tab键
 
数字转成字符串。
String x = 4 + "";//在数字后加双引号就可以了。

例题:

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1;编译失败,因为s1是short类型,s1+1(s1会被提升为int类型)运算结果是int型,不能赋值给short类型。可修改为s1 =(short)(s1 + 1)//强制转换 。

short s1 = 1; s1 += 1编译通过,因为+=运算符左边给s1赋值时,自动完成了强转操作。

三、运算符优先级

如果在程序中,要改变运算顺序,可以使用()来改变

 

 

总结:

        为了不至于看运算顺序发蒙,最好用()区分,这样看的会清楚一些,还有一个要注意的地方就是在java中的余数问题,这里没有四舍五入,你要是定义整型的,会直接舍去余数,不管是几都舍去。

        这里还有一些进制的转换。详见黑马程序员_java进制转换。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值