JavaSE——运算符(黑马个人听课笔记)

1. 运算符和表达式

  • 运算符:对常量或者变量进行操作的符号
  • 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
  • 举例说明:

 2.算数运算符

符号作用说明
+
-
*

同“×”

/同“÷”
%取余获取的是两个数据做除法的余数

注意事项:

/和%的区别:两个数据做除法,/ 取结果的商,%取结果的余数。

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

例:

public class Hello {
    public static void main(String[] args) {
        System.out.println(10+20);
        System.out.println(10-20);
        System.out.println(10*20);
        // /(除法):Java中,整数相除结果只能得到整数,如果想得到小数,必须带有小数类型参与运算
        System.out.println(5/2);//2.5,不四舍五入,把小数点后面的数全部砍掉,只留下2
        System.out.println(5/2.0);
        System.out.println(5.0/2);
        System.out.println(5.0/2.0);
        System.out.println("-----------------");
        // %(取模):获取的是两个数据做除法的余数
        System.out.println(5%2);
        System.out.println(4%2);
    }
}

 

2.1 案例

import java.util.Scanner;
public class Hello {
    public static void main(String[] args) {
        //1.使用Scanner键盘录入一个三位数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int num=sc.nextInt();
        //2.个位的计算:数值%10
        int ge=num%10;
        //3.十位的计算:数值/10%10
        int shi = num/10%10;
        //4.百位的计算:数值/10/10%10
        int bai = num/10/10%10;

        System.out.println(ge);
        System.out.println(shi);
        System.out.println(bai);
    }
}

 

2.2 字符串的“+”操作 

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算。

  • "itheima"+666 //itheima666

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

  • 1+99+"年黑马" //100年黑马

3.Package

通过Package来管理类文件代码

4.自增自减运算符

符号作用说明
++自增变量自身的值加1
--自减变量自身的值减1
  • ++和--既可以放在变量的后边,也可以放在变量的前边
public class Hello {
    public static void main(String[] args) {
        int num = 10;
        ++num;//num=num+1;
        System.out.println(num);
        System.out.println("-------------");
        int a = 10;
        int b = ++a;//a=11,b=11;
        System.out.println(a);
        System.out.println(b);
        System.out.println("-------------");
        int c = 10;
        //会先将该变量原本记录的值,提取出来参与运算,然后变量再进行自增长
        int d = c++;//d=10,c=11;
        System.out.println(c);//11
        System.out.println(d);//10

        //System.out.println(10++);//10=11,错误

    }
}

 

 注意事项:

  • 单独使用的时候,++和--无论是放在变量的前边还是后边,结果是一样的
  • 参与操作的时候,如果放在变量的后边,先将该变量原本的值取出来参与操作,随后在进行自增(++)/自减(--)
  • 参与操作的时候,如果放在变量的前边,变量先完成自增长,然后再参与运算。
  • 最常见的做法还是单独使用
  • ++、--只能操作变量,不能操作常量

5.类型转换 

类型转换的分类:隐式转换、强制转换

5.1 隐式转换介绍

  • 把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量

范例:

int a = 10;
double b = a;//此时b打印为10.0

运算中的隐式转换:

  • 取值范围小的数据,和取值范围大的数据进行运算,小的会先提升为大的之后,再进行运算

  •  byte short char 三种数据在运算的时候,都会提升为int,然后再运算

 

此时会报错

                                                            此时正确 

char提升为int,char的数值参考ASCII表

 

答案:double  int   double

5.2 强制转换介绍

  • 把一个取值范围大的数值或变量,赋值给另一个取值范围小的变量,不允许直接赋值,需要加入强制转换
  • 格式:目标数据类型 变量名=(目标数据类型)被强转的数据
  • 注意:强制类型转换有可能出现精度损失

 范例:

double a = 12.9;
int b = (int)a;//b输出为12,不会进行四舍五入
long c = 123L;
int d = (int)c;
System.out.println(d);//123,没有精度损失,123在int取值范围当中

注意: 

 5.2.1 原码反码补码

  • 原码:数据的二进制体现形式,一个字节由8个二进制位组成

 

弊端:遇到负数运算,可能会出现错误

注意:计算机在运算的时候,都是以二进制补码的形式在运算

  • 反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,单符号位除外。
  • 补码:正数的补码与其原码相同,负数的补码是在其反码的末位加1 

多出来的1不要

6.赋值运算符

符号作用说明
=赋值a=10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a*=b,将a×b的值给a
/=除后赋值a/=b,将a÷b的商给a
%=取余后赋值a%=b,将a÷b的余数给a

 例:

public class Hello {
    public static void main(String[] args) {
       int a = 10;
       byte b =10;
       //b=(byte)(b+a);
        b+=a;//b=(byte)(b+a); //扩展赋值运算符,自带强制转换效果
        System.out.println(b);
    }
}

 注意:扩展赋值运算符隐含了强制转换效果

 7.关系运算符

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立为false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。千万不要把“==”误写成“=”

8.逻辑运算符

逻辑运算符,是用来连接关系表达式的运算符,也可以直接连接布尔类型的常量或者变量

8.1 逻辑运算符分类:

  • &(与):并且,遇false则false,只有符号左右两边同时为true,结果才是true
  • |(或):或者,遇true则true,只有符号左右两边同时为false,结果才是false
  • !(非):取反
  • ^(异或):相同为false,不同为true
public class Hello {
    public static void main(String[] args) {
      //&(与):并且
        System.out.println(true&true);
        System.out.println(false&false);
        System.out.println(true&false);
        System.out.println(false&true);
        System.out.println("-----------------");
        //|(或):或者
        System.out.println(true|true);
        System.out.println(false|false);
        System.out.println(true|false);
        System.out.println(false|true);
        System.out.println("-----------------");
        //!(非):取反
        System.out.println(!true);
        System.out.println(!!true);
        System.out.println("-----------------");
        //^(异或):
        System.out.println(true^true);
        System.out.println(false^false);
        System.out.println(true^false);
        System.out.println(false^true);

    }
}

 8.2 短路逻辑运算符

符号作用说明
&&短路与作用和&相同,但是有短路作用
||短路或作用和 | 相同,但是有短路作用
public class Hello {
    public static void main(String[] args) {
     int x=3;
     int y=4;
     //false&false
        System.out.println(++x>4&y--<5);
        System.out.println("x="+x);
        System.out.println("y="+y);

    }
}

 

public class Hello {
    public static void main(String[] args) {
     int x=3;
     int y=4;
     //false&&false
        System.out.println(++x>4&&y--<5);
        System.out.println("x="+x);
        System.out.println("y="+y);
    //&:没有短路效果,无论左边是true还是false,右边都要继续执行。

    //&&:具有短路效果,当符号左边为false,右边就不执行了。如果符号左边为true,右边还要继续执行
    }
}

注意事项:

  • 逻辑与&,无论左边true false,右边都要执行。
  • 短路与&&,如果左边为true,右边执行;如果左边为false,右边不执行
  • 逻辑或 |,无论左边true false,右边都要执行。
  • 短路或 ||,如果左边为false,右边执行;如果左边为true,右边不执行

9.三元运算符

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

执行流程:首先计算关系表达式的值,如果值为true值1就是运算结果,如果值为false值2就是运算结果

public class Hello {
    public static void main(String[] args) {
        //求两个整数的最大值
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);//20
    }
}

 9.1 案例

 

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        //1.使用Scanner键盘录入三个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入三个整数");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();
        //2.用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
        int temp = num1>num2?num1:num2;
        //3.用三元运算符,让临时最大值和第三个整数进行比较,并记录结果。
        int max = temp>num3?temp:num3;
        //4.输出结果
        System.out.println("最大值是:"+max);
    }
}

 10.运算符优先级

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值