zoukankan      html  css  js  c++  java
  • Java语言基础(二)

    Java语言基础

      比较运算符和逻辑运算符
        ※&& 和&的区别:首个判别式为假,则后边的判别式不进行判断,结果为false。
        ※|| 和|的区别:首个判别式为真,则后边的判别式不进行判断,结果为true。
        一个数异或同一个数两次,结果还是这个数。

    class OperateDemo3
       {
         public static void main(String[] args)
         {
           /*
             比较运算符,运算结果必须为true或false
           */
           //System.out.println(3>2);//true
           //System.out.println(3==2);//false
    
           /*
             逻辑运算符的作用:
             用于连接两个boolean类型的表达式
    
             & 与
               运算特点:
                 true&true=true;
                 true&false=false;
                 false&ture=false;
                 false&false=false;
             | 或
               运算特点:
               true|true=true;
               true|false=true;
               false|true=true;
               false|false=false;
             ^ 异或
               运算特点:
               true^true=false;
               true^false=true;
               false^true=true;
               false^false=false;
             ! 非运算:判断事物的另一面
               !true=false;
               !false=true;
             &&
               和&的区别:首个判别式为假,则后边的判别式不进行判断,结果为false
             ||
               和|的区别:首个判别式为真,则后边的判别式不进行判断,结果为true
           */
    
           int x=3;
    
           System.out.println(x>2&x<5);//true
           System.out.println(x<2|x>5);//false
         }
       }
    

    位运算符
        用于二进制位运算的符号

    class OperateDemo4  
            {  
                public static void main(String[] args)  
                {  
                    //System.out.println(6&3);  
                    //System.out.println(6|3);  
                    //System.out.println(~6);//取反操作,一般不用,结果为7  
          
                    System.out.println(3<<2);//3左移2位,3*2^2  
                    System.out.println(3>>1);//3右移1位,3/(2^1)      
                }  
            }  

    >>>:无符号右移:数据进行右移时,高位出现的空位,无论原先最高位是什么,空位都用0补 ;   

    高效的运算首选对二进制位进行操作;  

    class OperateText  
        {  
            public static void main(String[] args)  
            {  
                //最有效率的方式算出2诚意8等于几  
                //System.out.println(2<<3);  
                int a=3,b=5;  
                System.out.println("a="+a+",b="+b);  
                /* 
                //对两个整数变量的值进行互换(不需要第三方变量) 
                //这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化 
         
                a=a+b; //a=8 
                b=a-b; //b=8-5=3 
                a=a-b; //b=8-3=5 
                */  
          
                int a=3,b=5;  
                a=a^b; //a=3^5  
                b=a^b; //b=(3^5)^5=3  
                a=a^b; //a=(3^5)^3=5  
                System.out.println("a="+a+",b="+b);  
            }  
        }  
    

        在开发时,使用第三方变量实现值的交换,因为阅读性强

        三元运算符
        格式
        (条件表达式)?表达式1:表达式2
        如果条件为true,运算后的结果是表达式1;如果条件为false,运算后的结果是表达式2

    class  OperateDemo5
       {
           public static void main(String[] args)
           {
               int x=3,y;
               y=(x>1)?100:200;
               System.out.println("y="+y);
    
               //获取两个整数中的较大值
               int  a=3,b=5;
               int max=a>b?a:b;
               System.out.println("max="+max);
           }
       }

        程序流程控制
            顺序结构,判断结构,选择结构,循环结构(同C++)
            三元运算符就是if else语句的简写格式,但存在其局限性。
            简写格式什么时候用?    当if else运算后有一个具体的结果时,可以简化成三元运算符。
            局部代码块可以定义局部变量的生命周期,局部变量在该代码块结束时消亡。
            switch(x)中,x的取值可以有四种类型:byte,short,int,char。
            if和switch的应用
                if:
                    1.对具体的值进行判断
                    2.对区间判断
                    3.对运算结果是boolean类型的表达式进行判断

                switch:
                    1.对具体的值进行判断
                    2.值的个数通常是固定的
                    对于几个固定的值判断,建议使用switch语句。因为switch语句会将具体的答案都加载进内存,效率相对高。

            do while 特点:无论条件是否满足,循环体至少执行一次
            当对一个条件进行一次判断时,可以使用if语句,
            当对一个条件进行多次判断时,可以使用while语句
            注意:
                            在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要
                            循环通常情况下,需要定义条件,需要控制次数
    for语句

    class ForDemo
     {
         public static void main(String[] args)
         {
             int x=1;
             for(System.out.println("a");x<3;System.out.println("0")) //条件是表达式即可,不一定是for(int i=0;i<=10;i++)这种形式;如果需要不同表达式,则用逗号隔开
             {
                 System.out.println("d");
                 x++;
             }
         }
     }

        for和while的特点:
        1.for和while可以互换
        2.格式上的不同,在使用上有点区别
         如果需要通过变量来对循环进行控制,该变量值作为循环增量存在时,区别就可以体现出来

    class ForTest
       {
           public static void main(String[] args)
           {
               //打印1~10十个数字
               int x=1;
               while(x<11)        //while结束后,x还驻留在内存中
               {
                   System.out.println("x="+x);
                   x++;
               }
               for (int y=1;y<=10 ;y++ )    //for循环结束,y消亡
               {
                   System.out.println("y="+y);
               }
           }
       }

    嵌套循环练习

    class ForForTest
       {
           public static void main(String[] args)
           {
               /*
               输出如下图形
               *****
               ****
               ***
               **
               *
               */
               for(int x=1;x<=5;x++)
               {
                   for(int y=5-x;y>=0;y--)  //使用x控制y的值
                   {
                       System.out.print("*");
                   }
                   System.out.println();   //每次行的输出结束后,换行
               }
               System.out.println("--------------");
    
               /*
               *
               **
               ***
               ****
               *****
               */
               for (int x=1;x<=5 ;x++ )
               {
                   for (int y=1;y<=x ;y++ ) //使用x控制y的范围
                   {
                       System.out.print("*");
                   }
                   System.out.println();   //每次行的输出结束后,换行
               }
               System.out.println("--------------");
    
               /*
               54321
               5432
               543
               54
               5
               */
               for (int x=1;x<=5 ;x++ )
               {
                   for (int y=5;y>=x ;y--)
                   {
                       System.out.print(y);
                   }
                   System.out.println();
               }
               System.out.println("--------------");
    
               /*
               1
               22
               333
               4444
               55555
               */
               for (int x=1;x<=5 ;x++ )
               {
                   for (int y=1;y<=x ; y++)
                   {
                       System.out.print(x);
                   }
                   System.out.println();
               }
           }
       }

     
     

    class  ForFor99
       {
           public static void main(String[] args)
           {
               /*
               1*1=1
               1*2=2   2*2=4
               1*3=3   2*3=6   3*3=9
               ……
               */
               for (int x=1;x<=9 ;x++ )
               {
                   for (int y=1; y<=x;y++ )
                   {
                       System.out.print(y+"*"+x+"="+y*x+"\t");//使用制表符'\t'能够实现输出时对齐
                   }
                   System.out.println();
               }
    
               /*
               \n 回车
               \t 制表符
               \b 退格
               \r 按下回车键
               windows系统中回车符其实是由两个符号组成的\r\n
               linux中回车符是\n
               */
           }
       }

     
     

    class BreakContinueDemo   
        {  
            public static void main(String[] args)   
            {  
                /* 
                break 跳出 
                作用的范围:只在switch语句和循环语句中使用 
                ※当break语句单独存在时,下面不要定义其他语句,因为执行到break语句时跳出,后面的语句不会执行 
                break跳出当前循环,如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成 
                */  
                for (int x=0;x<3 ;x++ )  
                {  
                    System.out.println("x="+x);  
                    break;  //第一次循环的最后跳出,只输出一次x=0  
                }  
                System.out.println("---------------");  
                  
                loop1:for (int x=0;x<3 ;x++ )    //对for循环起名  
                {  
                    loop2:for (int y=0;y<4 ;y++ )  
                    {  
                        System.out.println("x="+x);  
                        break loop1;    //在内循环中第一次执行输出语句后,直接跳出外循环loop1,结果只输出一次x=0  
                    }  
                }  
                System.out.println("---------------");  
          
                /* 
                continue 继续 
                作用的范围:循环结构 
                作用:结束本次循环,继续下次循环 
                */  
          
                for (int x=0;x<11 ;x++ )  
                {  
                    /* 
                    在进入循环后,先执行continue语句,跳出当前循环进行下次循环 
                    continue; 
                     
                    System.out.println("x="+x); //该语句无法执行,编译报错。 
                    */  
                    if (x%2==0)     //x为偶数时,不输出,继续下次循环  
                    {  
                        continue;  
                    }  
                    System.out.println("x="+x);  
                }  
                System.out.println("---------------");  
                  
                loop1:for (int x=0;x<3 ;x++ )    //对for循环起名  
                {  
                    loop2:for (int y=0;y<4 ;y++ )  
                    {  
                        System.out.println("x="+x);  
                        continue loop1; //在内循环中第一次执行输出语句后,跳到外循环继续执行,输出x=0,x=1,x=2  
                    }  
                }  
            }  
        } 
  • 相关阅读:
    [ZZ]C++中,引用和指针的区别
    面试总结之JAVA
    LeetCode 347. Top K Frequent Elements
    LeetCode 342. Power of Four
    腾讯//删除链表中的节点
    腾讯//删除链表中的节点
    腾讯//相交链表
    腾讯//相交链表
    腾讯//环形链表 II
    腾讯//环形链表 II
  • 原文地址:https://www.cnblogs.com/chenchong/p/2601530.html
Copyright © 2011-2022 走看看