Java学习-第三天

Java学习-第三天
今日学习共6节课
学习笔记梳理:

第二章:变量与运算符

06.计算机底层如何存储数据
001)进制分类
代码:

    int z1 = 123; //十进制,前面有0,一般不需要写
    int z2 = 0b101; //二进制,前面要加0b
    int z3 = 0127; //八进制,前面要加0
    int z4 = 0x12aF; //十六进制,前面要加0x,16进制分别为123456789abcdef
    System.out.println(z1);
    System.out.println(z2);
    System.out.println(z3);
    System.out.println(z4);

输出为:
123
5
87
15
//默认转换为10进制

002)进制转换

转换示例:
十进制-二进制-八进制-十六进制
0-0-0-0
1-1-1-1
2-10-2-2
3-11-3-3
4-100-4-4
5-101-5-5
6-110-6-6
7-111-7-7
8-1000-10-8
9-1001-11-9
10-1010-12-a 或 A
11-1011-13-b 或 B
12-1100-14-c 或 C
13-1101-15-d 或 D
14-1110-16-e 或 E
15-1111-17-f 或 F
16-10000-20-10

二进制的应用:
摩斯密码
其中国际求助的sos密码为
SOS
...---...

003)进制转换计算
额,我不想写,应该没人这么无聊去计算进制转换吧,我反正用计算器计算了滑稽[滑稽]

07.运算符(掌握)

001)算数运算符

算术运算符(7 个) +、-、*、/、%、++、--
赋值运算符(12 个) =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等
比较(或关系)运算符(6 个)>、>=、<、<=、==、!=
逻辑运算符(6 个) &、|、^、!、&&、||
位运算符(7 个) &、|、^、~、<<、>>、>>>(之后在学)
条件运算符(1 个) (条件表达式)?结果 1:结果 2
Lambda 运算符(1个)->(第 18 章时讲解)

按照操作数个数分为:
一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)

一元运算符(单目运算符) 正号(+)、负号(-)、++、--、!、~
二元运算符(双目运算符) 除了一元和三元运算符剩下的都是二元运算符
三元运算符 (三目运算符) (条件表达式)?结果 1:结果 2

002)加'+',减'-',乘'*',除'/',取模(取余)'%'

代码:

    int a = 3;
    int b = 4;
    System.out.println(a + b);// 7
    System.out.println(a - b);// -1
    System.out.println(a * b);// 12
    System.out.println(a / b);// 计算机结果是 0,为什么不是 0.75 呢?
    System.out.println(a % b);// 3

    //结果与被模数符号相同
    System.out.println(5 % 2);//1
    System.out.println(5 % - 2);//1
    System.out.println(-5 % 2);//-1
    System.out.println(-5 % - 2);//-1
    //商*除数 + 余数 = 被除数
    //5%-2 ==>商是-2,余数时 1 (-2)*(-2)+1 = 5
    //-5%2 ==>商是-2,余数是-1 (-2)*2+(-1) = -4-1=-5

输出为:
7
-1
12
0
3
1
1
-1
-1

003)“+”号的两种用法
*第一种:对于+两边都是数值的话,+就是加法的意思

    //加法
    int z1 = 500;
    int z2 = 20;
    long z3 = 1000;
    long z4 = 314;
    System.out.println(z1 + z2);
    System.out.println(z3 + z4);

*第二种:对于+两边至少有一边是字符串的话,+就是拼接的意思

    // 字符串类型的变量基本使用
    // 数据类型 变量名称 = 数据值;
    String str1 = "Hello";
    System.out.println(str1); // Hello
    System.out.println("Hello" + "World"); // HelloWorld
    String str2 = "Java";
    // String + int --> String
    System.out.println(str2 + 520); // Java520
    // String + int + int
    // String + int
    // String
    System.out.println(str2 + 5 + 20); // Java520

004)自加自减运算
理解:++ 运算,表示自增 1。同理,-- 运算,表示自减 1,用法与++ 一致
1、单独使用
*变量在单独运算的时候,变量前++和变量后++,是没有区别的。
*变量前++ :例如 ++a
*变量后++ :例如 a++

    // 定义一个 int 类型的变量 z
    int z = 3;
    //++a;
    z++;
    // 无论是变量前++还是变量后++,结果都是 4
    System.out.println(z);
    //同理
    int h = 6;
    ++h;
    System.out.println(h);

输出为:4,7
2、复合使用
• 和其他变量放在一起使用或者和输出语句放在一起使用,前++和后++就产生了不同
• 变量前++ :变量先自增 1,然后再运算
• 变量后++ :变量先运算,然后再自增 1

    // 其他变量放在一起使用
    int x = 3;
    //int y = ++x; // y 的值是 4,x 的值是 4,
    int y = x++; // y 的值是 3,x 的值是 4
    System.out.println(x);
    System.out.println(y);

    // 和输出语句一起
    int z = 5;
    //System.out.println(++z);// 输出结果是 6,z 的值也是 6
    System.out.println(z++);// 输出结果是 5,z 的值是 6
    System.out.println(z);

输出为:

4
3
5
6

例二:

    int z1 = 10;
    int z2 = ++z1;//z1赋值为11
    System.out.println("z1 = " + z1 + "z2 = " + z2);//输出为11和11

    int z3 = 10;
    int z4 = z3++;//z3赋值为11
    System.out.println("z3 = " + z3 + "z4 = " + z4);//输出为11和10

输出为:
11,11
11,10

案例 1:
随意给出一个整数,打印显示它的个位数,十位数,百位数的值。
格式如下:
数字 xxx 的情况如下:
个位数:
十位数:
百位数:
例如:
数字 153 的情况如下:
个位数:3
十位数:5
百位数:1

    int num = 187;
    int bai = num / 100;//187除100等于1
    int shi = num % 100 / 10;//187余87除10舍去7等于8
    int ge = num % 10;//187取余180余7
    System.out.println("百位为:" + bai);
    System.out.println("十位为:" + shi);
    System.out.println("个位为:" + ge);

输出为:
百位为:1
十位为:8
个位为:7

拓展:获取一个四位数的个位,十位,百位,千位

    //1.定义一个变量,赋值为一个四位数整数,例如 1234
    int num = 1234;
    //2.通过运算操作求出个位,十位,百位,千位
    int ge = num % 10;//余10得123余4
    int shi = num /10 % 10;//除10得123.4,123余10得12余3
    int bai = num /100 % 10;//除100得12余34,余10得1余2
    int qian = num / 1000 % 10;//除1000得1余2,余10得1
    System.out.println("个位上的数字是:" + ge);
    System.out.println("十位上的数字是:" + shi);
    System.out.println("百位上的数字是:" + bai);
    System.out.println("千位上的数字是:" + qian);

输出为:
个位上的数字是:4
十位上的数字是:3
百位上的数字是:2
千位上的数字是:1

案例 2:为抵抗洪水,战士连续作战 89 小时,编程计算共多少天零多少小时

    int z1 = 89;
    int z2 = z1 / 24;
    int z3 = z1 % 24;
    System.out.println("共" + z2 + "天");
    System.out.println("多" + z3 + "小时");

输出为:
共3天
多17小时

练习 1:算术运算符:自加、自减

    System.out.print("i="+i); //10
    System.out.println("i1="+i1);//11
    i = ++i1;
    System.out.print("i="+i);//12
    System.out.println("i1="+i1);//12
    i = i2--;
    System.out.print("i="+i);//20
    System.out.println("i2="+i2);//19
    i = --i2;
    System.out.print("i="+i);//18
    System.out.println("i2="+i2);//18

练习 2:
System.out.println("5+5=" + 5 + 5); //打印结果是? 5+5=55 ?
输出为:5+5=55
因为前面"5+5=" +是连接,后面5 + 5也就是连接所以等于55

练习 3:
byte bb1 = 127;
bb1++;
System.out.println("bb1 = " + bb1);
输出为:-128

练习 4:
int i = 1;
int j = i++ + ++i * i++;
System.out.println("j = " + j);

输出为:10

练习 5:(企业真题)写出下列程序的输出结果
int i = 2;
int j = i++;
System.out.println(j);
int m = 2;
m = m++; //(1)先取 b 的值“2”放操作数栈 (2)m 再自增,m=3 (3)再把操作数栈中的
"2"赋值给 m,m=2
System.out.println(m);

输出为:2,2

005)赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理
支持连续赋值
扩展赋值运算符: +=、 -=、*=、 /=、%=
赋值运算符符号解释
+= 将符号左边的值和右边的值进行相加操作,最后将结果赋值给左边的变量
-= 将符号左边的值和右边的值进行相减操作,最后将结果赋值给左边的变量
*= 将符号左边的值和右边的值进行相乘操作,最后将结果赋值给左边的变量
/= 将符号左边的值和右边的值进行相除操作,最后将结果赋值给左边的变量
%= 将符号左边的值和右边的值进行取余操作,最后将结果赋值给左边的变量

示例代码:

    int i1 = 10;
    long l1 = i1; //自动类型转换
    byte bb1 = (byte)i1; //强制类型转换
    int i2 = i1;
    //连续赋值的测试
    //以前的写法
    int a1 = 10;
    int b1 = 10;
    //连续赋值的写法
    int a2,b2;
    a2 = b2 = 10;
    int a3 = 10,b3 = 20;
    //举例说明+= -= *= /= %=
    int m1 = 10;
    m1 += 5; //类似于 m1 = m1 + 5 的操作,但不等同于。
    System.out.println(m1);//15
    //练习 1:开发中,如何实现一个变量+2 的操作呢?
    // += 的操作不会改变变量本身的数据类型。其他拓展的运算符也如此。
    //写法 1:推荐
    short s1 = 10;
    s1 += 2; //编译通过,因为在得到 int 类型的结果后,JVM 自动完成一步强制类型转换,将 int 类型强转成 short
    System.out.println(s1);//12
    //写法 2:
    short s2 = 10;
    //s2 = s2 + 2;//编译报错,因为将 int 类型的结果赋值给 short 类型的变量 s 时,可能损失精度
            s2 = (short)(s2 + 2);
    System.out.println(s2);
    //练习 2:开发中,如何实现一个变量+1 的操作呢?
    //写法 1:推荐
    int num1 = 10;
    num1++;
    System.out.println(num1);
    //写法 2:
    int num2 = 10;
    num2 += 1;
    System.out.println(num2);
    //写法 3:
    int num3 = 10;
    num3 = num3 + 1;
    System.out.println(num3);

输出为:
15
12
12
11
11
11

练习:

    //练习 1:
    short s = 3;
    s =s+2; //① 编译报错
    s += 2; //② 正常执行

    //练习 2:
    int i = 1;
    i *= 0.1;
    System.out.println(i);//0
    i++;
    System.out.println(i);//1

    //练习 3:
    //前++是先自加再使用而后++是先使用再自加!
    int m = 2;
    int n = 3;
    n *= m++; //n = n * m++;
    //因为上面m++已经待人n变量使用过了,所以下面m = 3
    System.out.println("m=" + m);//3
    //n = 2 * n * m++(2) 3所以2 *3 = 6
    System.out.println("n=" + n);//6

    //练习 4:
    int n = 10;
    n += (n++) + (++n); //n = n + (n++) + (++n)
    //n = 10,n++ = 10,n++ = 11,10 + 10 + 11 =31,其中n++因为后++是先使用再自加所以,下面是32
    System.out.println(n);//32

    //练习 5:你有几种办法实现变量值减 1?变量值减 2 呢?
    //练习①:变量值减 1
    short s = 10;
    //方式 1:
    //s = (short)(s - 1);
    //方式 2:推荐
    s--; //或者 --s
    //方式 3:
    s -= 1;
    //练习②:变量值减 2
    short s1 = 10;
    //方式 1:
    //s1 = (short)(s1 - 2);
    //方式 2:推荐
    s1 -= 2;

006)比较运算符

比较运算符

比较运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。

< >= <= :只适用于基本数据类型(除 boolean 类型之外)
== != :适用于基本数据类型和引用数据类型
比较运算符“==”不能误写成“=”
示例代码:
    int i1 = 10;
    int i2 = 20;
    System.out.println(i1 == i2);//不相等false
    System.out.println(i1 != i2);//!=是不相等的意思,所以输出true
    System.out.println(i1 >= i2);//>=的意思是大于等于,所以false
    int m = 10;
    int n = 20;
    System.out.println(m == n);//不相等false
    System.out.println(m = n);//m赋值n变成20
    boolean b1 = false;
    boolean b2 = true;
    System.out.println(b1 == b2);//不相等false
    System.out.println(b1 = b2);//b1赋值为b2true

思考:

    boolean b1 = false;
    //区分好==和=的区别。
    if(b1 == true) //if(b1 = true)
        System.out.println("结果为真");
    else
        System.out.println("结果为假");
    //额,if还没学,但可以看懂
    //输出结果为假

今日学习到此为止

版权属于:张芷豪 本文链接:https://zzh.xn--fiqs8s/index.php/archives/34/ 转载申明:转载请保留本文转载地址,著作权归作者所有。

评论

等风等雨等你来
Title - Artist
0:00