zoukankan      html  css  js  c++  java
  • Java 条件表达式结果的隐式转换

    public class IN0102 {
        public static void main(String[] args) {
            int a = 'a';
            System.out.println(a);//97
            float f = (float) 3.2;
            
            float sum =1.5f;
            int num=2;
            System.out.println((sum<2?1:num/sum));//1.0
            System.out.println("------------------------------------------");
            
            int x = 6;
            double d = 7.7;
            System.out.println((x>d) ? 8.0:9);//9.0
            System.out.println("------------------------------------------");
            
            System.out.println(false ? 3.0 : 1);//1.0        
            System.out.println( false ? 1 : 'a');//a
            System.out.println( false ? 1.0 : 'a');//97.0        
            System.out.println( true ? 98 : 'a');//b
            System.out.println( true ? 98.0 : 'a');//98.0
        }
    }

    JAVA条件表达式,注意以下几点:

     1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。

    2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。比如:

    System.out.println( true ? 98 : 'a');     输出: b

    3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。比如:

    System.out.println( false ? 1.0 : 'a');   输出: 97.0

     

    最好还是不要这样哈 一直在旁边提示dead code【无用代码】

     

    关于for的执行顺序:

     

    public class Delta {
       static boolean foo(char c) {
         System.out.print(c);
         return true;
       }
       public static void main( String[] argv ) {
         int i =0;
         for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){
             i++ ;
             foo(‘D’); }
       }
     }
    //结果输出为:ABDCBDCB

     

     

    break continue 加一个标号

     

    public class IN0102 {
        public static void main(String[] args) {
            lab: for (int i = 0; i < 2; i++) {
                for (int j = 0; j < 10; j++) {
                    if (j > 1) {
                        continue lab;
                    }
                    System.out.println("continue");
                }
                System.out.println("************");
            }
    
        }
    }

     

    continue
    continue
    continue
    continue

     

    public class IN0102 {
        public static void main(String[] args) {
            lab: for (int i = 0; i < 2; i++) {
                for (int j = 0; j < 10; j++) {
                    if (j > 1) {
                        break lab;
                    }
                    System.out.println("break");
                }
            }
    
        }
    }

    break
    break

     

  • 相关阅读:
    .NET设计模式观察者模式(Observer Pattern)
    .NET设计模式建造者模式(Builder Pattern)
    .NET设计模式结构型模式专题总结
    MFC深入浅出MFC的进程和线程
    .NET设计模式享元模式(Flyweight Pattern)
    MFC深入浅出CObject类
    不足80行,一种清晰而又简单通用的分页算法,你有这么想过吗?C#版
    .net生成静态页方法总结
    仅IE9/10/(Opera)同时支持script元素的onload和onreadystatechange事件
    结果分类Ajax之三
  • 原文地址:https://www.cnblogs.com/yundong333/p/12108678.html
Copyright © 2011-2022 走看看