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  
                }  
            }  
        }  
    }