Java-day03-运算符

目录

一、算术运算符

二、隐式转换和强制转换

三、字符串相加

四、字符相加

五、自增自减运算符

六、赋值运算符

七、关系运算符

八、逻辑运算符

九、短路逻辑运算符

十、三元运算符

十一、运算符优先级

十二、原码、反码、补码


一、算术运算符

包括加(+)减(-)乘(*)除(/)取模取余(%)

整数操作只能得到整数,要想得到小数,必须有浮点数参与运算

package com.lulu.arithmeticoperator;

import java.util.Scanner;

public class ArithmeticoperatorDemo1 {
    //结论:
    //1.整数参与计算,结果只能得到整数
    //2.小数参与计算,结果可能不精确(后面讲精确的)
    public static void main(String[] args) {
        //加、减、乘
        System.out.println(3 + 2); //5
        System.out.println(5 - 1); //4
        System.out.println(7 * 9); //63

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

        //除
        System.out.println(10 / 2); //5
        System.out.println(10 / 3); //3,因为整数参与运算只能得到整数
        System.out.println(10.0 / 3); //3.3333333333333335,小数计算有可能不精确

        //取模,取余。实际上也是做除法运算,但得到的是余数
        //应用场景:
        //1.可以用取模来判断,A是否可以被b整除
        //2.判断A是否为偶数
        //3.以余数分类,比如模3,分为余数为0、1、2的三类
        System.out.println(10 % 2); //0
        System.out.println(10 % 3); //1

    }
}

二、隐式转换和强制转换

隐式转换(自动类型提升)

把一个取值范围小的数据,转成取值范围大的数据

取值范围:byte<short<int<long<float<double

隐式转换的两种提升规则:

1.取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算

2.byte short char三种类型的数据在运算时,都会提升会int,再进行运算

比如下面,byte类型的a与b相加后,得到的c是int型

byte a = 10;
byte b = 20;
c = a + b; //c为int型了

强制转换

如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的,如果一定要这么做,那边需要强制类型转换。(可能导致数据错误)

格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;

//比如
byte b= 1;
int a = (int)b;

//下面也是例子
byte b1 = 10;
byte b2 = 20;
int result1 = b1 + b2;
byte result2 = (byte)(b1 + b2);

三、字符串相加

"+"操作的三种情况:1.数字相加   2.字符串相加   3.字符相加

当+操作中出现字符串时,这个+是字符串连接符,而不是算术运算符。会将前后的数据进行拼接,产生一个新的字符串

"123"+123 ->"123123"

连续进行+操作时,从左到右逐个执行

1+99+"lulu"->"100lulu"

System.out.println(1 + 2 + "abc" + 1 + 2); //3abc12

但是,要记住只要没有字符串(哪怕是有字符),这里的+都不是连接符而是运算符

System.out.println('a'+'b'); //195
System.out.println("a"+"b"); //ab

上面会出现195是ascii码相加(a:97,b:98)

四、字符相加

当字符+字符或字符+数字时,会把字符通过ASCII码查询到对应的数字再计算

其中有几个比较需要记忆的:0(48),A(65),a(97)

五、自增自减运算符

自增:++自减:--

//a++先用后加
int a = 10;
int b = a++; //10
//++a先加后用
a = 10;
b = ++a; //11

a++和++a单独使用没区别,但是赋值使用有区别

a++先用后加++a先加后用

六、赋值运算符

赋值运算符有:=、+=、-=、*=、/=、%=

细节:+=、-=、*=、/=、%=底层都隐藏了一个强制类型转换,保持原来的数据类型

比如:

short s = 1;
s += 1; //s还是short类型
//等同于s = (short)(s + 1)

七、关系运算符

关系运算符有:==、!=、>、>=、<、<=

关系运算符的结果都是boolean类型,要么true,要么false

八、逻辑运算符

符号作用说明
&逻辑与(且)并且,两边都为真,结果才为真
|逻辑或或者,两边都为假,结果才为假
^逻辑异或相同为false,不用为true
!逻辑非取反

九、短路逻辑运算符

为什么需要短路逻辑运算符

符号作用说明
&&短路与结果和&相同, 但是有短路效果
||短路或结果和|相同,但是有短路效果

简单理解,当左边的表达式能确定最终的结果,那么右边就不会参加运行了

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(不会自增了)

如果是&的话,a和b就都是11,都会执行。

总结:&、|,无论左边true false,右边都会执行

&&、||,如果左边能确定整个表达式的结果,右边不执行

最常用的逻辑运算符是:&&、||、!

十、三元运算符

三元运算符的作用:可以进行判断,根据判断的结果得到不同的内容

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

eg:求两个数的较大值(a!=b)

int max = a > b ? a : b;

ps:ctrl+alt+L自动对齐格式化代码

十一、运算符优先级

小括号最优先

十二、原码、反码、补码

这个就不听了,用到了再学

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值