• day02(下)_运算符


    首先了解java运算符的优先级和结合性:

     运算符优先级

    常用转义字符表:

         转义序列表

    示例1 取余/字符串/转义字符:

    class operator1
    {
      public static void main(String[] args)
      {
       //取余
       System.out.println(-1%5);//-1
       System.out.println(1%-5);//1与左边的操作数同号
       System.out.println(3.1%2.5);
       
      
      //字符串:字符串数据和任何数据使用+都是相连接
      //,最终变成字符串
      
      System.out.println("ab"+5+5);//"ab55"
      int a=3,b=4;
      System.out.println("a="+a+",b="+b);//"a=3,b=4"(加双引号表示其为字符串)
      
      
      //转义字符:每一个转义字符是一个单一字符 '\n'
       System.out.println("java\rev");//evva
       System.out.println("java\nev");//java
                                      //ev
       System.out.println("\\n");//"\n"
    
       char ch='好';//一个中文2byte,char型2byte
       System.out.println(ch);
    
       System.out.println("& "+(12&23));//4
       //System.out.println("&& "+(12&&23));//错误,不能用于非boolean类型运算
        System.out.println("^ "+(12^23));//27
       System.out.println("^ "+(true^false));//true
       //^,&既能用于数值运算,也可以用于boolean型运算
      }
    
    }

    运行结果:
    运算符(&,^)

    在以上的例子中注意'\r'和'\n'区别:\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉

    \r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉

    \t:一个"制表区"占8列.

    参考文章:http://hane00.blog.163.com/blog/static/1600615220126204446809/

    示例二:赋值运算符/位运算符

    class operator2
    {
     public static void main(String[] args)
     {
      //+=,/=,*=......
    	   short s=5;
    	   //s=s+5;//报错,s+5结果为int,不能赋值给short型(做了两次运算)
    	   s += 5;//成功,原因:首先做了一次运算:把左右两边的和
    			  //赋值给左边,和short s=5;类似.+=运算符给s赋值时自动完成
    			  //强转操作
          System.out.println("s="+s);
    
     
     
     //关于^:假设两个数a,b,则有:a^b^b=a,应用到两数交换
       int a=4,b=5;
       a=a^b;
       b=a^b;//相当于(a^b)^b为a,赋值给了b
       a=a^b;//相当于(a^b)^a为b,赋值给了a
       System.out.println("a="+a+",b="+b);
       //一般仍采用第三方变量(temp)进行交换
      }
    
    }

    运行结果:

    位运算

    示例3:条件运算符结果类型

    class operator3
    {
         public static void main(String[] args) 
    	{
             char x='X';
             //对int类型的常量进行测试
             int i=12;
             System.out.println(true?x:12);//X
             System.out.println(true?x:i);//88
             //对long类型的常量进行测试
             long l=12L;
             System.out.println(true?x:12L);//88
             System.out.println(true?x:l);//88
             //对float类型的常量进行测试
             double d=12.0;
             System.out.println(true?x:12.0);//88.0
             System.out.println(true?x:d);//88.0

    } }

    运行结果:

    条件运算符结果

    确定条件表达式结果类型的规则过于冗长和复杂,很难完全记住它们,但是其核心就是一下三点:

    • 如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。换句话说,你可以通过绕过混合类型的计算来避免大麻烦。
    • 如果一个操作数的类型是T,T表示byte、short或char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。
    • 否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型。

    关于第三点:个人理解为应该向  占用字节多(精度高)的类型 提升

    还有一点:三元运算符运算完必须要有结果.

       例如:

           20>10?System.out.println("20"):System.out.println("10");//运行失败,但是C语言可以.

    原文地址:http://www.cnblogs.com/gw811/archive/2012/10/28/2743586.html

    最后总结一下if-else和switch什么时候用?

      具体数值判断,数值不多,而是符合 char,short,byte,int(switch可选择的类型,随着JDK版本提升,可能会添加一些类型(字符串,枚举))

       建议用switch,效率稍高,因为switch列出了所有可能.

       其它情况,对区间判断,对结果为boolean型判断,用if,if使用范围更广

       

      


    ----android培训 java培训、期待与您交流!----

  • 相关阅读:
    单片机爬坑记-02-资源紧缺
    单片机爬坑记-01-内核差异
    操作系统-第6章习题解析
    操作系统-第5章习题解析
    操作系统-第4章习题解析
    操作系统-第3章习题解析
    操作系统-第2章习题解析
    操作系统-第1章习题解析
    BugKu之xxx二手交易市场
    BugKu之备份是个好习惯
  • 原文地址:https://www.cnblogs.com/yiqiu2324/p/2859380.html
Copyright © 2020-2023  润新知