• 操作符


      当编译器观察到一个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()。若是两个不同数据类型进行数学运算,最大的数据类型决定了表达式最终结果的数据类型。

  • 相关阅读:
    selenium+java利用AutoIT实现文件上传
    java+selenium自动化遇到confirm弹窗,出现NoAlertPresentException: no alert open
    Appium遇到问题:
    selenium2+java切换窗口
    nodejs
    连续12天的加班工作总结-根据客户选择来生成后续表单页面
    最近三家公司面试的总结吐槽及一点点总结
    nodeJs-autoMerge
    nodeJs-autoBulid
    Angular 学习笔记——ng-Resource1
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4894519.html
Copyright © 2020-2023  润新知