码迷,mamicode.com
首页 > 其他好文 > 详细

操作符

时间:2015-10-20 13:50:01      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

  当编译器观察到一个string后看紧跟一个+,而这个+后面紧跟一个非string类型的元素时,就会尝试将这个非string类型的元素转换为string。

  赋值符号的左边必须是一个明确的,已命名的变量。必须有一个物理空间可以存储等号右边的值。但不能把任何东西赋给一个常数。常数不能为左值,基本类型存储了实际的数值,对一个对象进行操作时,真正操作的是对象的引用。

  别名现象:

  class tank{ int level; }

  public class Assignment{

    public static void main(Strubg args){

      Tank t1 = new Tank();

      Tank t2 = new Tank();

      t1.level = 9;

      t2.level = 10;

      t1 = t2;

      System.out.print("t1.level:"+t1.level+"   t2.level:"+t2.level);  //output: t1.level:12  t2.level:10

      t1.level =11;

      System.out.print("t1.level:"+t1.level+"   t2.level:"+t2.level);  //output: t1.level:11  t2.level:11

    }

  }

 

  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‘;

      System.out.print("1 x.c:"+x.c);  //output 1 x.c:a

      f(x);

      System.out.print("2 x.c:"+x.c);  //output 2 x.c:z

    }

  }

 

   自增或自减有两种使用方式,通常被称为前缀式和后缀式。“前缀递增”表示操作符位于变量或表达式前面,而“后缀递增”表示操作符位于变量或表达式的后面。对于前缀递增或递减,会先执行运算,再生成值;而对于后缀递增或递减,则会先生成值,再执行运算 。他们是具有“副作用”的操作符(改变操作数)。

  public class equivalence{

    public static void main(String args[]){

      Integer n1 = new Integer(47);

      Integer n2 = new Integer(47);  

      System.out.print(n1 == n2);  //output:false

      System.out.print(n1 != n2);  //output:true  对比的是对象的引用,而非引用所指向的值

    }

  }

 

  class value{ int i; }

  public class EqualsMethod{

    public static void main(String args[]){

      Value v1 = new Value();

      Value v2 = new Value();

      v1.i = v2.i =100;

      System.out.print(v1.equals(v2));

    }

  }

  

  直接常量后面的后缀字符标志了它的类型。若为大写的L,代表Long,若为F,则代表float,D代表Double。十六进制适用于所有整数数据类型,以前缀0x或0X,后面跟值0-9或大写a-f来表示。char,byte,short若超出范围,编译器会将自动值转换成int,八进制数由前缀o以及后面的0-7数字来表示,在C,C++或Java中,二进制数没有直接常量表示法。在使用十六进制和八进制记数法时,以二进制形式显示结果,通过使用Integer和Long类的静态方法toBinaryString()。

  按位操作符用来操作整数基本数据类型中的单位“比特”(bit)。即二进制位。按位操作符符合对两个参数中对应的位执行布尔代数运算,并最终生成一个结果

规则:

  若两个输入位都是1,则按位与&操作符生成一个输出位1,否则生成一个输出位0;若两个输出位只要有一个时1,则按位或|操作福生成一个输出位1;若输出位的某一个时1,但不全位1,那么按位异或^生成一个输出位1;按位非~也称取反操作,只对一个操作数进行操作,生成相反的值。

  移位操作符的运算对象时二进制的位,移位操作福只可用来处理整数类型。左移位操作符<<能按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0);有符号右移位<<操作符则按照操作符右侧指定的位数将操作符左边的操作数右移,有符号右移位操作符使用符号扩展:若符号位正,则在高位插入0,若符号位负,则在低位插入1.Java还增加了一种“无符号”右移操作符<<<,他使用零扩展,无论正负,都在高位插入0.

  类转换是一种比较安全的操作。若要执行一种名为窄化转换(narrowing conversion)的操作,则可能面临信息丢失的危险,此时编译器会要求我们强制转换。对于扩展转换(widening conversion)则不必显式的进行类转换。在进行窄化转化时必须注意截尾与舍入问题。在float或double转型为整型值时总是对该数字执行截尾,若要获得舍入后的结果,需使用java.lang.Math中的方法round()。若是两个不同数据类型进行数学运算,最大的数据类型决定了表达式最终结果的数据类型。

操作符

标签:

原文地址:http://www.cnblogs.com/forerver-elf/p/4894519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!