学习java的第二天(2024.7.15)

1.位运算符(是二进制运算符)
       1按位与运算    &    a&b    将a和b转成二进制,上下比较,右侧对齐。上下都为1,结果才为1,其余时结果都是0
        int result = 12&3;  
        System.out.println(result);     结果为0
        result = 12&11;
        System.out.println(result);     结果为8
       2按位或运算     |      a|b     将a和b转化成二进制,两者有一个为1,结果就为1
        result = 12|11;
        System.out.println(result);     结果为15
       3按位异或运算   ^    a^b    转化成二进制,a和b不同则为1,相同则为0;
        result = 12^11;
        System.out.println(result);     结果为7
       4反码运算          ~     ~a       将二进制中的0换成1,1换成0,再取反码+1
        result=~11;
        System.out.println(result);     结果为-12
       5移位运算    <<       a<<b     a向左移动b位   右侧补0
       6                  >>       a>>b     a向右移动b位   左侧补符号位(0或1)
       7                  >>>    a>>>b    a向右移动b位   左侧补0
        result=1<<2;
        System.out.println(result);结果为4
        result=-1>>2;
        System.out.println(result);结果为-1
        result=-1>>>1;
        System.out.println(Integer.MAX_VALUE);
        System.out.println(result);

        按位与  &  按位或  |   也可以对布尔值进行运算,得到布尔值
        boolean bool = true & false;     & 和 &&的运行结果是一样的
        int num1=12; int num2=12;
        bool=num1++<12&num2++>12;   &没有短路现象,必须计算完毕
        bool=num1++<12&&num2++>12;  &&有短路现象

        第三变量法交换值:
        int a=10;
        int b=20;
        int temp=a;
        a=b;
        b=temp;               20              10
        System.out.println(a+"==="+b);
        总和交换法:
        a=10;b=20;
        a=a+b;
        b=a-b;
        a=a-b;                   20          10
        System.out.println(a+"---"+b);
        异或运算交换法:
        a=10;b=20;
        a=a^b;
        b=a^b;
        a=a^b;                 20           10
        System.out.println(a+"---"+b);
2.计算3*16最快的方式:3<<4,向左移几位就是乘2的几次方。
3.     赋值运算符    =    +=   -=    *=    /=    %=     (赋值运算优先级是最低的)
        byte a=12;
        a+=2;
        a=(byte)(a+2);注意此时a+=2和a=a+2不一样,在byte类型下需要对a=a+2进行强制类型转换

运算符优先级:


4.     三元运算符   a?b:c           此处为出笔试题最常见的一种形式
        int  result=12>23?11:33;
        System.out.println(result);   输出33
        System.out.println(true?11:33);   输出11
        result=12.2!=33.99?'a':90;
        System.out.println(result);   输出97(即为'a')
        System.out.println(true?3:4.0);   输出3.0    在各类运算符的运算中,只要有double类型参与,得到的结果一定是double

        流程控制(if...else if...       while      do...while     for     break     continue)
5.     if...else if...语句:
        int score = 87;
        if(score>=60){
            System.out.println("成绩及格");
        }else if(score>=80){
            System.out.println("成绩优秀");  
        }else{
            System.out.println("成绩不及格");
        }
6.     switch  匹配某一个变量的值,如果匹配到某一个case项,就从这个case开始运行。
        运行到break或是程序结束
        所有的case项都没有匹配成功才会执行default
        1.case项和default的顺序可以打乱,但是其执行顺序不会乱(先匹配case,未匹配到再执行default)
        2.switch可以匹配的类型:byte  short  int  char  String  Enum(枚举)      不可以匹配的类型  long  float  double  boolean
        int num = 2;
        switch (num){
            case 1:
                System.out.println("春");
                break;
            case 2:
                System.out.println("夏");
                break;
            case 3:
                System.out.println("秋");
                break;
            case 4:
                System.out.println("冬");
                break;
            default:
                System.out.println("未找到匹配项");
                break;
        }
7.     while循环
        int i=0;
        while(i<5)                                    小括号内的为while循环的条件判断
       {     
            System.out.println("a");           大括号内为while循环的循环体
            i++;
        }
8.     do...while循环     先做一遍,然后进行判断
        int i=1;
        do{
            System.out.println("do");         大括号内为do...while的循环体,最少会执行一遍
        }while (i>20);          小括号内是do...while的条件判断
9.     for循环
              初始值;条件判断;对值的操作
        for (int j=0;j<10;j++){
            System.out.println("这是第"+i+"次循环");   大括号内为循环体
        }
10.   break结束当前所在的循环体     
        for (int a=1;a<10;a++){
            if (a%7==0){
                break;
        }   System.out.println(a);
        }

        break 跳出多重循环
        a:for (;;){
            for (;;){
                for (int i=1;i<=100;i++){
                    if (i==50){
                        break a;   这里直接跳出a循环,上面a:是给循环起名字
                    }
                }
            }
        }
        利用锁跳出多重循环
        boolean bool=true;       定义并初始化锁变量
        a:for (;bool&true;){
            for (;bool&true;){
                for (int i=1;i<=100;i++){
                    if (i==50){
                        bool=false;     利用锁变量,使bool变成false,直接跳出多重循环
                    }
                }
            }
        }
11.   continue停止此次循环,直接执行下一次循环
12.   死循环     没有结束循环的条件                        死循环下面不能再写其他代码
        while (true){   }
        无限循环   永远达不到结束循环的条件(有结束循环的条件,但是永远达不到)    无限循环可以接着写其他代码
        int num=1;
        while (num<1000){num--;}
13.   数组
        int[] arr={1,2,3,4};                     动态实例化
        int[] arrB=new int[]{1,2,3,4,5};  动态实例化
        int[] arrA=new int[4];                静态实例化
14.   数组的限定!!!!!!!!(对于任何数组来说,这两条限定条件都必须满足)
        1.数组只能存放指定类型的数据
        2.数组的长度是不可变的
15.   使用数组中的元素     下标从0开始依次增加  0  1  2  3  4... ...
        System.out.println(arr[3]);
        System.out.println(arr);        直接打印只会打印出数组arr所在的地址
        System.out.println(Arrays.toString(arr));   利用工具类Arrays.toString()才可以打印出数组
        arr[0]=99;            可以直接改变数组某一项的值
        System.out.println(arr.length);   输出数组的长度

        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);       利用for循环一项一项输出数组的各项值
        }

16.   二维数组
        int[][] arrs=new int[4][2];           定义二维数组的方式
        arrs[0][1]=12;
        System.out.println(Arrays.deepToString(arrs));      [[0, 12], [0, 0], [0, 0], [0, 0]]
        二维数组的限定
        二维数组中的一维数组的个数不可变
        arrs[2]=new int[]{1,1,2,2,3,3};       将第三项变为[1,1,2,2,3,3]
        System.out.println(Arrays.deepToString(arrs));
        [[0, 12], [0, 0], [1, 1, 2, 2, 3, 3], [0, 0]]

二维数组的小练习(求随机数组成的二维数组的各元素之和)


 

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值