JAVA编程思想学习第三篇の操作符

     在最底层,java中的数据操作是通过使用操作符来操作的。

1.使用java操作符

     操作符接受一个或多个参数,并生成一个新值。加号和一元的正号+、减号和一元的负号-、乘号*、除号/以及赋值号=的用法和其他编程语言类似。

几乎所有的操作符都只能操作“基本类型”。例外的是操作符“=”、“==”、“!=”,这些操作符可以操作所有对象。除此之外,String类支持“+”和“+=”。

2.优先级


优先级
运算符
结合性
1
() [] .
从左到右
2
! +(正) -(负) ~ ++ --
从右向左
3
* / %
从左向右
4
+(加) -(减)
从左向右
5
<< >> >>>
从左向右
6
< <= > >= instanceof
从左向右
7
==   !=
从左向右
8
&(按位与)
从左向右
9
^
从左向右
10
|
从左向右
11
&&
从左向右
12
||
从左向右
13
?:
从右向左
14
= += -= *= /= %= &= |= ^= ~= <<= >>=   >>>=
从右向左

        该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低


3.赋值

     基本数据类型赋值很简单。基本类型存储了实际的数值,并非指向对象的引用,所以在赋值的时候,是直接将一个地方的内容复制到了另一个地方。例如:对基本数据类型使用a=b,那么b的内容就复制给了a,接着修改a,而b根本不会受到修改的影响。


    对对象赋值时候,对一个对象进行操作的时候,我们实际上操作的是对象的引用。所以“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到了另一个地方。


    对象赋值会产生“别名现象”,虽然引用被覆盖后,不再引用的对象会被“垃圾回收器”自动清理,但是为对象赋值会产生意想不到的效果,所以最好不要使用。


    实例:方法调用中的别名问题

class Letter{
        char c;
}

public class PassObject{
        static void f(Letter y){
                y.c='z';
       }
public static void main(String[] args){
      Letter x=new Letter();
      x.c='a';
      print("1:x.c:"+x.c);
      f(x);
      print("2:x.c:"+x.c);
}
}/* Output:
1:x.c:a
2:x.c:z
*///:~

方法f()中Letter y实际传递的是一个引用。

4.关系操作符

class Value{
int i;
}
public class EqualsMerhod2{
public static void main(String[] args){
Value v1=new Value();
Value v2=new Value();
vi.i=v2.i=100;
System.out.println(v1.equals(v2));
}
}/*Output
false
*///~
     
      自定义的类对象比较时候,如果不重写equals()方法,则比较对象的引用。所以要重写equals方法。

5.逻辑操作符

      逻辑操作符包括:与(&&)、或(||)、非(!)。
     当使用逻辑操作符时,会遇到一种“短路现象”。即一旦能够明确无误的确定整个表达式的值,就不在计算表达式余下的部分了。

6.直接常量

     
int i1=0x2f;
int i2=0x2F;
int i3=0177;
int i4=0xfff;
long l1=200L;
float f1=1F;
double d1=1d;
     直接常量后面的后缀字符标志了它的类型。若为L,代表long类型。十六进制由前缀0x和后面跟随0-9或小写的a-f来表示。八进制由0和后面的0-7组成。
     指数计数法:1.39E-43实际是1.39*10的-43次幂。

7.移位操作符

     左移情况(<<):低位补0;
     右移情况:
  1. >>>:使用零扩展,无论正负,都在高位插入0.java特有
  2. >>:补符号位,正数补0,负数补1.


8.类型转换操作符

      截尾:float f1=0.7f;
                  int i=(int)f1;
                  输出i为0,此为直接截断。

     舍入:如果想要得到舍入结果就要使用java.lang.Math中的round()方法。
     

math.round(-8.9) =-9

math.round(-8.1) =-8

math.round(8.9) =9

math.round(8.1) =8

                 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值