JAVA 攻城狮 第四天

今天是学习java的第四天也是我军训的第三天。
吸取了昨天晚上的教训,我今天早上5点30就醒了然后效率很好的看了将近1个小时的java课程,还做了笔记,看了位运算,我还是很惊喜的,因为之前学算法的时候遇到过位运算,之前也专门去网上找位运算看过,但是看不懂,今天又遇到了位运算的知识,所以很惊喜,老师讲的还很好,所以这是一个很意外的收获。今天的总结要好好的总结了。

说一下军训吧,其实比我想象的要无聊,不是说军训这个活动不好,而是有很多的时间浪费了,不给带任何的电子产品,想带kindle去看书都不可以。这样很压迫啊,浪费了很多的时间,这样我觉得不值得。

还有一件事就是今天的离散数学成绩公布了,刚刚及格过线,对于一个学习委员来说这是很丢脸的一件事情,我去看了一下被身边的朋友称为学霸的康同学,他空间的第一个说说就是 数学竞赛一等奖的证书,并且配文:“用大一最后一张证书给大二一个好的开始。” 怎么说呢,作为正常的一个人肯定是为他的能力感到佩服的,同时,我也很不服气,为什么我不是第一,我知道这是我自己的原因,我要向他学习,学习他的优点,改掉自己爱面子逞强的坏习惯。先要缩小和他的差距,然后才能超过他。就算我的数学没有他强,但是我可以尽量的缩小和他的分差,然后在我强势一点的编程方面狠狠的超过他。

现在是中午,下午还要去军训,所以总结就晚上看完了视频补上来。

**


**

现在是下午18点27分 day03学习完成
下午学习了java从键盘录入的规则(int接收)
还有四种方法实现a 和 b 的值的交换方法:) 哈哈 下次可以拿出来装D了
不多说废话
下面给出总结:
1:运算符(掌握)
(1)算术运算符
A:+,-,*,/,%,++,–
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和–的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;
(2)赋值运算符
A:=,+=,-=,*=,/=,%=等
B:=叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。

        面试题:
            short s = 1;
            s = s + 1;

            short s = 1;
            s += 1;
            请问上面的代码哪个有问题?
(3)比较运算符
    A:==,!=,>,>=,<,<=
    B:无论运算符两端简单还是复杂最终结果是boolean类型。
    C:千万不要把==写成了=
(4)逻辑运算符
    A:&,|,^,!,&&,||
    B:逻辑运算符用于连接boolean类型的式子
    C:结论
        &:有false则false
        |:有true则true
        ^:相同则false,不同则true。
            情侣关系。
        !:非true则false,非false则true

        &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
        ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
(5)位运算符(了解)
    A:^的特殊用法
        一个数据针对另一个数据位异或两次,该数不变
    B:面试题
        a:请实现两个变量的交换
            **采用第三方变量
            **用位异或运算符
                左边a,b,a
                右边a^b
        b:请用最有效率的方式计算出2乘以8的结果
            2<<3
(6)三元运算符
    A:格式
        比较表达式?表达式1:表达式2;
    B:执行流程:
        首先计算比较表达式的值,看是true还是false。
        如果是true,表达式1就是结果。
        如果是false,表达式2就是结果。
    C:案例:
        a:比较两个数据是否相等
        b:获取两个数据中的最大值
        c:获取三个数据中的最大值

2:键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现呢?目前就记住
A:导包
import java.util.Scanner;
位置:在class的上边
B:创建对象
Scanner sc = new Scanner(System.in);
C:获取数据
int x = sc.nextInt();
(3)把三元运算符的案例加入键盘录入改进。

3:流程控制语句
(1)顺序结构 从上往下,依次执行
(2)选择结构 按照不同的选择,执行不同的代码
(3)循环结构 做一些重复的代码

4:if语句(掌握)
(1)三种格式
A:格式1
if(比较表达式) {
语句体;
}

        执行流程:
            判断比较表达式的值,看是true还是false
            如果是true,就执行语句体
            如果是false,就不执行语句体

    B:格式2
    if(比较表达式) {
                语句体1;
            }else {
                语句体2;
            }
        执行流程:
            判断比较表达式的值,看是true还是false
            如果是true,就执行语句体1
            如果是false,就执行语句体2

    C:格式3
if(比较表达式1) {
                语句体1;
            }else if(比较表达式2){
                语句体2;
            }
            ...
            else {
                语句体n+1;
            }
        执行流程:
            判断比较表达式1的值,看是true还是false
            如果是true,就执行语句体1
            如果是false,就继续判断比较表达式2的值,看是true还是false
            如果是true,就执行语句体2
            如果是false,就继续判断比较表达式3的值,看是true还是false
            ...
            如果都不满足,就执行语句体n+1
(2)注意事项
    A:比较表达式无论简单还是复杂,结果是boolean类型
    B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
        建议:永远不要省略。
    C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
    D:else后面如果没有if,是不会出现比较表达式的。
    E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
(3)案例:
    A:比较两个数是否相等
    B:获取两个数中的最大值
    C:获取三个数中的最大值(if语句的嵌套)
    D:根据成绩输出对应的等级
    E:根据月份,输出对应的季节
    F:根据x计算对应y的值并输出
(4)三元运算符和if语句第二种格式的关系
    所有的三元运算符能够实现的,if语句的第二种格式都能实现。
    反之不成立。

    如果if语句第二种格式控制的语句体是输出语句,就不可以。
    因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。

干货1

/*
    面试题:
        **请自己实现两个整数变量的交换**
        注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。
*/
class OperatorTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println("a:"+a+",b:"+b);

        //方式1:使用第三方变量(开发中用的)
        /*
        int c = a;
        a = b;
        b = c;
        System.out.println("a:"+a+",b:"+b);
        System.out.println("------------");
        */

        //方式2:用位异或实现(面试用)
        //左边:a,b,a
        //右边:a ^ b
        /*
        a = a ^ b;
        b = a ^ b; //a ^ b ^ b = a
        a = a ^ b; //a ^ b ^ a = b
        System.out.println("a:"+a+",b:"+b);
        */

        //方式3:用变量相加的做法
        /*
        a = a + b; //a=30
        b = a - b; //b=10
        a = a - b; //a=20
        System.out.println("a:"+a+",b:"+b);
        */

        //方式4:一句话搞定
        b = (a+b) - (a=b); //b=30-20=10,a=20
        System.out.println("a:"+a+",b:"+b);
    }
}

干货2

/*
    位运算符:
        &,|,^,~
        <<,>>,>>>

    注意:
        要做位运算,首先要把数据转换为二进制。
*/
class OperatorDemo {
    public static void main(String[] args) {
        //&,|,^,~

        int a = 3;
        int b = 4;

        System.out.println(3 & 4);
        System.out.println(3 | 4);
        System.out.println(3 ^ 4);
        System.out.println(~3);
    }
}
/*
    分析:**因为是位运算,所以我们必须先把数据换算成二进制。**

    3的二进制:11
        00000000 00000000 00000000 00000011
    4的二进制:100
        00000000 00000000 00000000 00000100

    &位与运算:有0则0。
        00000000 00000000 00000000 00000011
       &00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000000
        结果是:0

    |位或运算:有1则1。
        00000000 00000000 00000000 00000011
       |00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000111
        结果是:7

    ^位异或运算:相同则0,不同则1。
        00000000 00000000 00000000 00000011
       &00000000 00000000 00000000 00000100
        -----------------------------------
        00000000 00000000 00000000 00000111
        结果是:7

    ~按位取反运算符:0变1,1变0
        00000000 00000000 00000000 00000011
       ~11111111 11111111 11111111 11111100 (补码)

       补码:11111111 11111111 11111111 11111100
       反码:11111111 11111111 11111111 11111011
       原码:10000000 00000000 00000000 00000100
        结果是:-4
*/

下面上运算符优先级
运算符的优先级(从高到低)
优先级 描述 运算符
1 括号 ()、[]
2 正负号 +、-
3 自增自减,非 ++、–、!
4 乘除,取余 *、/、%
5 加减 +、-
6 移位运算 <<、>>、>>>
7 大小关系 >、>=、<、<=
8 相等关系 ==、!=
9 按位与 &
10 按位异或 ^
11 按位或 |
12 逻辑与 &&
13 逻辑或 ||
14 条件运算 ?:
15 赋值运算 =、+=、-=、*=、/=、%=
16 位赋值运算 &=、|=、<<=、>>=、>>>=

好了 要去军训了。总结就写到这里了
再怎么急也不能忘了老规矩 送给自己的话:

别怕当多数人中的少数人
你要记住
低质量的社交不如高质量的独处
待人友善是修养,独来独往是性格

晚上回来再说今天的军训总结 :)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值