学习日记day3

1.算术运算符

+-*/% 

在代码中,如果有小数参与运算,结果有可能不精确(后面详细学)(计组:浮点数的加减运算IEEE754)

练习:数值拆分


        System.out.println(a % 10);
        System.out.println(a / 10 % 10);
        System.out.println(a / 100);

①数字相加:数据类型不一样时不能运算,需要转成一样的

        隐式转换:取值范围小的变成大的

                        byte,short,char三种类型运算时,先提升为int,再运算

        强制转换:取值范围大的变成小的(不能超过本身类型的范围)

double a = 100.3;
int b = (int)a;

②字符串相加:+用来拼接

                        连续+,从左到右逐个执行(注:没有字符串就是普通运算符)

③字符相加:char需要在计算中先转为int(ASCII码)

                字符+字符,字符+数字                a:97   A:65

                注:'a'+"abc"输出的是"aabc",并不是"97abc",只有算数相加才会变成97

2.自增自减运算符

①int a = 10;  int b = a++;此时先用后加,a=11,b=10

②int a = 10;  int b = ++a;此时先加后用,a=11,b=11

3.赋值运算符和关系运算符

=,+=,-=,*=,/=,%=

注:隐含了强制类型转换  a += b  等同于  a = (int)(a + b)

==,!=,>,>=,<,<=成立为true,不成立为false

4.逻辑运算符

&,|,^,!

^(逻辑异或):相同为false,不同为true        记忆法:相同性别无法在民政局登记

5.短路逻辑运算符

&&(短路与)        ||(短路或)

注:相较于&,|,这两个效率更高,例如&&左边为假就不需要判断符号右边的,||左边为真就不需要判断右边的

一个很好的判断方式:

int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b < 5;
System.out.println(result);//false
System.out.println(a);//11
System.out.println(b);//10,b没有进行自增

6.三元运算符

 关系表达式?表达式1:表达式2(表达式为真,表达式1为结果;表达式为假,表达式2为结果)

需求:定义一个变量记录两个整数的较大值

int max = a > b ? a : b;

7.运算符优先级

优先考虑小括号

8.原码,反码,补码

(为什么逃离计组了还在学这个东西,,,我真的没招了)

原码:符号位+数值位,十进制数据的二进制表现形式, 计算正数没问题,负数会出问题,所以出现了反码

反码:正数和原码一样,负数的反码在原码的基础上符号位不变,数值位取反

反码可以用于负数计算,但是不能跨0,如果计算结果跨0会出现1的误差值,因为反码0的表现形式有两种,所以出现了补码

补码:1111 1111规定为-1的补码,所以补码=反码+1

        1000 0000规定为-128

因此,计算机中数字的存储和运算都是补码

(这就是原理吗?确实要比计组硬记好理解多了)

①byte:1个字节        

    short:2个字节

     int:4个字节

     long:8个字节

隐式转换:前面补0

强制转换:前面去0(所以精度有可能会转变,或是符号位会改变)

&:本质上是二进制表示进行逻辑与的结果

int a = 200;
int b = 10;
a & b  //值为8
a | b  //值为202

<<(左移):二进制补码向左移动,低位补0(左移一次,等于×2)

>>(右移):二进制补码向右移动,高位补0或1,原来是正数补0,负数补1(右移一次,等于÷2)

>>>(无符号右移):高位只补0

int a = 200;
a << 2  //值为800
a >> 2  //值为50

9.if语句

if(关系表达式){
    内容;
}

if(flag){        //为true执行内容
    内容;
}
if(关系表达式){
    内容;
}else{
    内容;
}
if(关系表达式){
    内容;
}else if(关系表达式){
    内容;
}
    ...
    else{
        内容;
}

10.switch语句

switch(表达式){
    case 值1:
        内容1;
        break;
    case  值2;
        内容2;
        break;
    ```
    default:
        内容;
        break;
}
}

注:case后面的值只能是字面量,不能是变量,并且不允许重复

①default的位置和省略:类似于备胎,不一定写在最下面,任意位置都可以

②case穿透:没有写break导致,因此break不可省略

        注:匹配到一个case后如果没有break会继续执行下一个case.不用重新再去匹配

③Switch新特性:

        省略break,如果只有一行代码,可以省略掉大括号

int number = 1;
switch(number){
    case 1 -> {
        System.out.println("一");
    }
    case 2 -> {
        System.out.println("二");
    }
    case 3 -> {
        System.out.println("三");
    }
    default -> {
        System.out.println("没有这种选项");
    }
}

④if第三种格式:一般用于对范围的判断

        Switch:把有限个数据一一列举出来,让我们任选其一

11.for循环

for(初始化;条件判断;条件控制){
    循环体;
}

注:变量的作用范围是当前的大括号中;

        若把变量定义在循环的里面,那么当前变量只能在本次循环中有效,本次循环结束后,变量就会从内存中消失.当第二次循环开始的时候,又会定义一个新的变量.

12.while循环

初始化语句;
while(条件判断){
    循环体;
    条件控制;
}

for和while的对比:运行规则相同;                不同:for知道循环次数或者范围使用;while知道循环结束条件使用.

13.do...while循环

初始化语句;
do{
    循环体;
    条件控制;   
}while(条件判断);

先走一次循环体(先执行后判断),所以至少会执行一次

14.无限循环

for(;;){
    内容;
}

while(true){
    内容;
}

do{
    内容;
}while(true);

while最常用

无限循环的下面不能再写其它代码

15.跳转控制语句

在循环的过程中,跳转到别的语句执行

continue:结束本次循环,继续下次循环

break:结束整个循环

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值