• Practice| 类型转换| 逻辑运算


     类型转换

    class Pratice1{
        public static void main(String[] args){
            
            int a = 3;
            //float f = 4.5;//TypeChangeExer4.java:4: 错误: 不兼容的类型: 从double转换到float可能会有损失,默认是double类型
            float f = 4.5F;
            long num = 478;//右边是int,左边是long,发生自动类型转换,这个是对的 
            double d = 35.7;
            System.out.println(a + f + num + d);//521.2
            
            
            int x = 1;
            int y = 2;
            System.out.println("x + y = " + x + y);//x+y =12
            System.out.println("x + y = " + (x + y));//x+y =3
            //System.out.println("x - y = " + x - y);//错误的,String不能进行-
            System.out.println("x - y = " + (x - y));//x - y = -1
            System.out.println("x * y = " + x * y); //x * y = 2
            System.out.println("x / y = " + x / y); //x / y = 0
            
        }
    }
    1:short s = 1;要给s加上2,可以如何实现? BC
      A:s = s + 2;
      B:s += 2;            s += 2  <===> s = (short)(s + 2); 
      C:s = (short)(s + 2);
      D:s = (short)s + 2;
    
    int week = (today + 100)%7;
    System.out.println(week==0 ? "周日": ("周" + week));
    
     
    
    char c = 'A';
    //(1)先知道大写字母与小写字母之前有什么联系
    //大写字母:A 编码值是65,B:66..
    //小写字母:a 编码值是97,b:98...
    //(2)char与int类型混合运算,会自动升级为int
    //(3)当把int类型的结果赋值给一个char类型的变量,需要强制类型转换
    char xiao = (char)(c + 32);
    System.out.println(xiao); // a 
    
    
    int i = 2;
    int j = ++i * i-- + i++ * --i; //
    if(--i==2 && j--==2){
    i = 5;
    }
    System.out.println("i = " + i);//1
    System.out.println("j = " + j);//13

     运算

    class Pratice1{
        public static void main(String[] args){
            short s = 1;
            short sum = (short) (s + 2);
            System.out.println(sum); //3
    /* int i = 1; i *= 0.2;//赋值运算 进行了强制类型转换-->> 0   i *= 0.2 <===> i = (int)(i*0.2) i++; //1 System.out.println("i=" + i); int i = 1; System.out.println("i = " + i);//1 ++i; System.out.println("i = " + i);//2 i++; System.out.println("i = " + i);//3 */ /* int i = 1; int j = ++i;//(1)先执行++i,值为2(2)会把i=2的值load放到一个“操作数栈(理解为专门计算的地方)”(3)把操作数栈中的值赋值给j int k = i++;//(1)先把i=2的值load放到一个“操作数栈(2)执行是i++,i=3(3)执行赋值,把操作数栈中的2赋值给k System.out.println("i = " + i);//3 System.out.println("j = " + j); //2 System.out.println("k = " + k); //2 */ int i = 2; i *= i++; //先把i=2的值load到操作栈;然后自增i=3;再把操作栈里边的值2进行计算2*2 int j = 2; j *= j + 1;// j = j * (j+1) -->> j = 2*3=6 int k = 2; k *= ++k; //先自增k=3,再把k=3的值放到操作栈里边,然后k = k * (++k) = 2 * 3 System.out.println("i=" + i);//4 System.out.println("j=" + j);//6 System.out.println("k=" + k);//6 int h = 1; int q = ++h + h++ * ++h; /* 1.先执行++h,先自增h=2,然后把值2 load到操作栈里边; 执行h++,此时已经把h=2值load到操作栈里边,再自增h=3; 最后执行++h,先自增为4,把值4load到操作栈里边; 2. 把2和4从操作栈里边弹出进行计算得到8=2*4,最后再弹出8和最早的2计算得:10=8+2 */ System.out.println("h = " + h); // h = 4 System.out.println("q = " + q); // q = 10
    class Pratice1{
        public static void main(String[] args){
            
            int i = 1;
            int j = 2;
            int k = i++ * ++j; // 先把i=1的值load到操作栈里边,再自增为2; j先自增为3,然后把值3load到操作栈里边;最后1*3
            int m = i + j++;  //j的值为3,先把j=3load到操作栈,再自增为4;i=2; 6 = 2+3
            System.out.println(i); //2
            System.out.println(j); //4
            System.out.println(k); //3
            System.out.println(m); //5
            
        }
    }

    逻辑运算

    如 &&  和 & 的比较

    class Pratice1{
        public static void main(String[] args){
            
            //int x = 1;
            //int y = 1;
    
            //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==2?为false
            //右边继续因为是逻辑与:先y自增为2,再把值2load到操作栈里;最后判断2 == 2? 为true
            //逻辑运算最后结果为 false & true --->>false
            /*
            if(x++ == 2 & ++y == 2){ 
                x = 7;
            }
            System.out.println("x=" + x + ",y=" + y);//x=2,y=2
            */
            
            //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==2?为false
            //右边不用算了,因为是短路与&&,左边已经是false;
            //逻辑运算最后结果为 false & ? --->>false
            /*
            if(x++ == 2 && ++y == 2){
                x = 7;
            }
            System.out.println("x="+x+",y="+y);//x=2,y=1
            */
            
            //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==1?为true
            //右边:继续,因为中间是逻辑或 | ;自增y=2,把值2load到操作栈,最后2 == 1?为false
            //逻辑运算最后结果为  true & false --->>true
            /*
            if(x++ == 1 | ++y == 1){
                x = 7;//x=7
            }
            System.out.println("x=" + x + ",y=" + y);//x=7,y=2
            */
            
            
            /*
            左边:true
            (1)先把x=1的值load到“操作数栈”
            (2)x++,x=2
            (3)用“操作数栈”的值1 与 1 比较,成立
            
            右边:不算,因为中间是 || ,短路或
            
            true || ? 结果为true,即if成立
            */        
            /*
            if(x++==1 || ++y==1){
                x = 7;//x=7
            }
            System.out.println("x="+x+",y="+y);//x=7,y=1
            */
            
            
            boolean x = true;
            boolean y = false;
            short z = 42;
            
            //左边:先把值42load到操作栈,自增z=43,42 == 42?              -->true;
            //右边:短路与&&,左边是true,不满足短路情况继续判断:y=false的值load到“操作数栈”,用“操作数栈”的值false 与true比较,不成立-->false;
            // true && false -->>false  
            
            /*
            if( (z++==42) && (y==true) )  z++;
        
            //false || false(操作栈里为z=44,44=45? 为false) -->>false, if不成立
            if( (x=false) || (++z==45) )  z++;
    
            System. out.println("z = " + z);// z=44
            */
            
            
            if(y = true)//赋值y = true 
            //把y=true的值load到“操作数栈”,用“操作数栈”的值true 与true比较,成立
            if( (z++==42) && (y==true) ) z++; //true && true -->>true , z=44;
            //左边:false直接把false赋值给x;
            //右边:算,虽然是短路或,但是因为不满足短路的情况; ++z,z=45;把z=45的值load到“操作数栈”;用“操作数栈”的值45与45比较,成立 true
            if( (x=false) || (++z==45) ) z++; //false || true -->>true ,z=46
            System. out.println("z = " + z); //z = 46
            
            
        }
    }

    两个变量的交换

    class TestHomework7{
        public static void main(String[] args){
            int a = 1;
            int b = 2;
            System.out.println("a = " + a + ",b = " + b);
            //交换
            //(1)方法一:最通用的方法,适用于任何类型,要求必须掌握的方法
            /*
            //第三个变量的类型与这两个需要交换的变量的类型一致就可以
            int temp = a;//先把a的值存到了temp
            a = b;//把b的值存到了a中
            b = temp;
            */
            //(2)方法二:适用于整数类型
            /*
            a = a ^ b;
            b = a ^ b;//结果等价于 b = 原来的a ^ 原来的b ^ 原来的b;  b = 原来的a;
                    //一个整数与另一个整数异或两遍,就是它本身
            a = a ^ b;//结果等价于 a = 原来的a ^ 原来的b ^ 新的b(原来的a) = 原来的b
            */
            
            //(3)方法三:适用于整数类型
            a = a + b;
            b = a - b;//结果等价于b = 原来的a + 原来的b - 原来的b = 原来的a
            a = a - b;//结果等价于a = 原来的a + 原来的b - 现在的b(原来的a) = 原来的b
            
            System.out.println("交换后:");
            System.out.println("a = " + a + ",b = " + b);
        }
    }

     三个数的比较排序

    class Pratice{
        public static void main(String[] args){
            
            java.util.Scanner input = new java.util.Scanner(System.in);
            
            System.out.print("Please input Number1:");
            int num1 = input.nextInt();
            
            System.out.print("Please input Number2:");
            int num2 = input.nextInt();
            
            System.out.print("Please input Number3:");
            int num3 = input.nextInt();
            
            /*
            num1 >= num2 >= num3
            num1 >= num3 >= num2
            num2 >= num1 >= num3
            num2 >= num3 >= num1
            num3 >= num1 >= num2
            num3 >= num2 >= num1
            */
            
            if(num2 <= num1 && num2 >= num3 ){
                System.out.println(num1 + ">=" + num2 + ">=" + num3);
            }else if(num3 <= num1 && num3 >= num2){
                System.out.println(num1 + ">=" + num3 + ">=" + num2);
            }else if(num2 >= num1 && num1 >= num3){
                System.out.println(num2 + ">=" + num1 + ">=" + num3);
            }else if(num2 >= num3 && num3 >= num1){
                System.out.println(num2 + ">=" + num3 + ">=" + num1);
            }else if(num3 >= num1 && num1 >= num2){
                System.out.println(num3 + ">=" + num1 + ">=" + num2);
            }else{
                System.out.println(num3 + ">=" + num2 + ">=" + num1);
                
            }
        }
    }
    方法2:
    class Pratice{
        public static void main(String[] args){
            
            java.util.Scanner input = new java.util.Scanner(System.in);
            
            System.out.print("请输入第一个整数num1:");
            int num1 = input.nextInt();
            
            System.out.print("请输入第二个整数num2:");
            int num2 = input.nextInt();
            
            System.out.print("请输入第三个整数num3:");
            int num3 = input.nextInt();
            
            if (num1 >= num2){
                //num1 >= num2 >= num3
                //num3 >= num1 >= num2
                //num1 >= num3 >= num2
                if(num2 >= num3){
                    System.out.println(num1 + ">=" + num2 + ">=" + num3);
                }else{
                    if(num3 >= num1){
                        System.out.println(num3 + ">=" + num1 + ">=" + num2);
                    }else{
                        System.out.println(num1 + ">=" + num3 + ">=" + num2);
                    }
                }
            }else{
                //num2 >= num1 >= num3
                //num3 >= num2 >= num1
                //num2 >= num3 >= num1
                if(num1 >= num3){
                    System.out.println(num2 + ">=" + num1 + ">=" + num3);
                }else{
                    if(num3 >= num2){
                    System.out.println(num3 + ">=" + num2 + ">=" + num1);
                    }else{
                        System.out.println(num2 + ">=" + num3 + ">=" + num1);
                    }
                }
            }
        
            
            /* 下面应该是没有这种结构
            if(num1 >= num2){
                if(num2 >= num3){
                    System.out.println(num1 + ">=" + num2 + ">=" + num3);
                }else{
                    System.out.println(num1 + ">=" + num3 + ">=" + num2);
            if(num2 >= num1){
                if(num1 >= num3){
                    System.out.println(num2 + ">=" + num1 + ">=" + num3);
                }else{
                    System.out.println(num2 + ">=" + num3 + ">=" + num1);
            if(num3 >= num1){
                if(num1 >= num2){
                    System.out.println(num3 + ">=" + num1 + ">=" + num2);
                }else{
                    System.out.println(num3 + ">=" + num2 + ">=" + num1);
                }
            }
                }
            }
                }
            }
            */    
            
        }
    }

     保存一个汉字有两种类型 char 和 String 

    class Pratice4{
        public static void main(String[] args){
            java.util.Scanner input = new java.util.Scanner(System.in);
            System.out.print("身高:");
            int height = input.nextInt();
            
            System.out.print("财富(千万):");
            double money = input.nextDouble();
            
            //方法一boolean类型
            //System.out.print("帅否(true/false):");
            //boolean yan = input.nextBoolean();
            
            /*
            if(height >= 180 && money >= 1 && yan){
                System.out.println("我一定要嫁给他!!!");
            }else if(height >= 180 || money >= 1 || yan){
                System.out.println("嫁吧,比上不足,比下有余。");
            }else{
                System.out.println("不嫁!");
            }
            
            ////保存一个汉字有两种类型:char和String
            //方法二:char类型
            //System.out.print("帅否(是/否):");
            //char yan = input.next().charAt(0);
            
            
            
            if(height >= 180 && money >= 1 && yan == '是'){
                System.out.println("我一定要嫁给他!!!");
            }else if(height >= 180 || money >= 1 || yan == '是'){
                System.out.println("嫁吧,比上不足,比下有余。");
            }else{
                System.out.println("不嫁!");
            }
            */
            
            //方法三:String
            System.out.print("帅否(是/否):");
            String yan = input.next();
            
            if(height >= 180 && money >= 1 && yan.equals("是")){
                System.out.println("我一定要嫁给他!!!");
            }else if(height >= 180 || money >= 1 || yan.equals("是")){
                System.out.println("嫁吧,比上不足,比下有余。");
            }else{
                System.out.println("不嫁!");
            }
            
        }
    }

     随机数的产生

    int num1 = (int)((Math.random()) * 6 + 1);//[0,1) -->*6-> [0,6) --> +1 ->[1,7)
  • 相关阅读:
    Semaphore wait has lasted > 600 seconds
    mysql二进制日志
    HashMap(JDK1.9)详解
    企业中如何批量更改mysql中表的存储引擎?
    mysql监控
    String源码详解
    字符编码详情
    mysql事务详解
    数据库水平分表(一个大数据量的表)
    bat
  • 原文地址:https://www.cnblogs.com/shengyang17/p/9954289.html
Copyright © 2020-2023  润新知