【第三天】黑马程序员java学习

第三天

视频教程:https://www.bilibili.com/video/BV17F411T7Ao/?spm_id_from=333.337.search-card.all.click

【第一天】黑马程序员Java学习
https://blog.csdn.net/2301_80057424/article/details/147375491?spm=1001.2014.3001.5501
【第二天】黑马程序员Java学习
https://blog.csdn.net/2301_80057424/article/details/147462985

前提:纯记录。防止忘记找不到。

一、算数运算符
  • 小tips:创立好一个类后,输入psvm+Tab键可以快速创建一个主入口

加减乘

public class ArithmeticoperatorDemo1 {
    public static void main(String[] args){
        //+
        System.out.println(5+3);
        //-
        System.out.println(5-3);
        //*
        System.out.println(5*3);

        //在代码中,如果有小数参与,结果有可能不精确
        System.out.println(1.1+1.1);  //2.2
        System.out.println(1.1+1.01);  //2.1100000000000003
    }
}

除以、取模

public class ArithmeticoperatorDemo2 {
    public static void main(String[] args) {
        //结论:
        //1. 整数参与计算,结果只能得到整数
        //2. 小数参与计算,结果有可能是不精确的,如果需要精确,需要后面的知识点
        //除法
        System.out.println(10/5); //5
        System.out.println(10/3); //3
        System.out.println(10.0/3); //3.3333333333333335

        //取模,得到的是余数
        System.out.println(10%5);  //0
        System.out.println(10%3);  //1
        
    }
}

        //应用场景:
        // 1. 可以用来判断A是否能被B整除
        // 2. A % 2:如果结果是0,证明A是偶数,否则证明是奇数
        // 3. 斗地主发牌
        // 三个玩家,把每一张牌都定义一个序号
        //拿着序号 % 3,如果结果是1,发给第一个玩家,以此类推
二、隐式转换和强制转换

数字进行运算时,数据类型不一样不能运算,需要转换成一样的数据类型。

在这里插入图片描述

(一)隐式转换(自动类型提升):取值范围小的数值转换成取值范围大的数值
两种提升规则:

  1. 取值范围小的和取值范围大的进行运算时,小的会先提升为大的,再进行运算。
  2. byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
    即:byte+byte会生成int类型。

(二)强制转换:取值范围大的数值转换成取值范围小的数值
格式:目标数据类型 变量名=(目标数据类型)被强转的数据;
问题:当转换的数据过大时,可能会造成数据错误。

package com.itheima.arithmeticoperator;

public class ArithmeticoperatorDemo3 {
    public static void main(String[] args) {
        byte a1=10;
        byte a2=20;
        byte result1 = (byte)(a1 + a2);
    System.out.println(result1);  //30
        byte b1=100;
        byte b2=100;
        byte result2 = (byte)(b1 + b2);
        System.out.println(result2);  //-56,超出范围,数据错误
    }
}
三、字符串""和字符’'的加操作
  • 注意字符串是双引号,字符是单引号,字符串只有“ + ”操作

(一)字符串的“ + ”操作

  1. 当“ + ”操作中出现字符串时,拼接起来
    例如:“123”+123----> “123123”
  2. 连续进行“ + ”操作时,从左到右逐个执行
    例如:
    1 + 99 +“年黑马”----> “100年黑马”
    1 + 2 + “abc” + 1 + 2----> “3abc12”

(二)字符的“ + ”操作
字符 + 字符或者字符 + 数字时,会把字符通过ASCII码表查询到对应的数字再进行计算
例如:
1+‘a’---->98
‘a’+“abc”---->“aabc”

四、自增自减运算符

++ 和 – 可以放在变量的前边还是后边,结果都一样

(一)应用场景:

  1. 生日后年龄变换
  2. 增加减少网上购物车
  3. 统计人数

(二)计算的不同

  1. ++a:先自加再用
  2. a++:先用再自加
五、赋值运算符

在这里插入图片描述

细节:+=、-=、*=、/=、%=底层都隐藏了一个强制类型转换

package com.itheima.assigningoperator;

public class assigningoperatorDemo1 {
    public static void main(String[] args) {
        short s=1;
        s+=1;
        //等同于:s=(short)(s+1),这个转换类型是看左边的s是怎么类型
        System.out.println(s); //2
    }
}
六、关系运算符

在这里插入图片描述

注意:关系运算符的结果都是布尔类型,要么是true要么是false。

七、逻辑运算符

在这里插入图片描述

应用场景:

  1. 对比输入的密码是否和正确的密码相同
  2. 只要有一个房子或者一辆车子—>或者(|)
八、短路逻辑运算符

在这里插入图片描述

可以理解为:当左边的表达式能确定最终的结果,那么右边的就不会参与运算了

在这里插入图片描述

九、三元运算符(三元表达式)

格式:关系表达式 ? 表达式1 : 表达式2

package com.itheima.logiccoperator;

public class TernaryoperatorDemo1 {
    public static void main(String[] args) {
        int name1=10;
        int name2=20;

        int max = name1 > name2 ? name1 : name2;
        System.out.println(max);
        //整个三元运算符的结果必须要被使用
        System.out.println(name1 > name2 ? name1 : name2);

    }
}

练习:
在这里插入图片描述

代码:

package com.itheima.Test;

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入第一只老虎的体重");
        int weight1=sc.nextInt();
        System.out.println("请输入第二只老虎的体重");
        int weight2=sc.nextInt();
        String result=weight1 == weight2 ? "相同":"不相同";
        System.out.println(result);

    }
}

运算符优先级
在这里插入图片描述

十、原码反码补码

在这里插入图片描述

在计算机计算时,使用的是补码进行计算,而由于补码是反码往后一位移动产生的,导致最后多出来了一个10000000,即-128,所以取值范围是-128~127.

1. 原码 :十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
  1. 例如:56–>0 0111000
    一个数字(0 / 1)有1比特,8比特 = 1字节

  2. 弊端:利用原码计算时,如果是正数没有任何问题,但是如果是负数计算,结果会和正确的运算方向相反。

2. 反码:为了解决原码不能计算负数的问题而出现的,正数的反码和补码都是其本身,负数的反码是符号位保持不变,其余位取反
  1. 弊端:运算时,如果结果不跨0,没有问题,如果跨了0,会跟实际结果有1的偏差,因为存在+0和-0。
3. 补码:为了解决负数计算时跨0的问题而出现的,正数的补码是其本身,负数的补码是在其反码的基础上+1

在这里插入图片描述

4. 基本数据类型

在这里插入图片描述

5. 其他的运算符

在这里插入图片描述

以上是在补码基础上进行计算的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值