JAVA 攻城狮 第四天

来源:互联网 发布:股骨头坏死做淘宝 编辑:程序博客网 时间:2024/04/28 19:44

今天是学习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 位赋值运算 &=、|=、<<=、>>=、>>>=

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

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

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

原创粉丝点击