小小小幸运 发表于 2024-2-29 15:05:07

运算符

运算符

运算符和表达式

int a = 10;
int b = 20;
int c = a + b;+:是运算符,并且是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
算术运算符

符号

符号作用+加-减*乘/除%取模、取余public class ArithmeticoperatorDemo1 {
    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.1);//2.2
      System.out.println(1.1 + 1.01);//2.1100000000000003

      //除法
      //结论:
      //1.整数参与计算,结果只能得到整数
      //2.小数参与计算,结果有可能是不精确的
      System.out.println(10 / 2);//5
      System.out.println(10 / 3);//3
      System.out.println(10.0 / 3);//3.3333333333333335

      //取模、取余。实际上也是做除法运算,只不过得到的是余数而已。
      System.out.println(10 % 2);//0
      System.out.println(10 % 3);//1
      
      //应用场景:
      //1.可以用取模判断,A是否可以被B整除
      //A % B    10 % 3
      //2.可以判断A是否为偶数
      //A % 2 如果结果为0,那么证明A是一个偶数。如果结果为1,那么证明A是一个奇数
      //3.斗地主发牌
      //三个玩家
      //把每一张牌都定义一个序号
      //拿着序号 % 3 如果结果为1,就发给第一个玩家
      //如果结果为2,那么就发给第二个玩家
      //如果结果为0,那么就发给第三个玩家

    }
}练习--数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
公式总结:

[*]个位:数值 % 10
[*]十位:数值 / 10 % 10
[*]百位:数值 / 100 % 10
[*]千位:数值 / 1000 % 10
[*]...
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
      //键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

      //1.键盘录入
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入一个三位数");
      int number = sc.nextInt();

      //2.获取个位,十位,百位
      //公式:
      //个位:数字 % 10
      //十位:数字 / 10 % 10
      //百位:数字 / 10 / 10 % 10
      //...
      int ge = number % 10;
      int shi = number / 10 % 10;
      int bai = number / 100 % 10;
      System.out.println(ge);
      System.out.println(shi);
      System.out.println(bai);
    }
}数字相加

数字相加

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


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

[*]取值范围小的数值-->取值范围大的数值
[*]//范例:
int a = 10;
double b = a;//b = 10.0取值范围:double>float>long>int>short>byte
[*]隐式转换的两种提升规则

[*]取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
[*]byte、short、char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
public class Test {
    public static void main(String[] args) {
      int a = 10;//取值范围小
      double b = 12.3;//取值范围大
      
      double c = a + b;//+ 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
    }
}public class Test {
    public static void main(String[] args) {
      byte a = 10;
      byte b = 20;
      
      int c = a + b;//byte、short、char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
    }
}


[*]强制转换

[*]取值范围大的数值-->取值范围小的数值(如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换)
[*]格式:目标数据类型 变量名 = (目标数据类型) 被强转的数据;
//范例:
double a = 12.3;
int b = (int) a;//范例:
int a = 300;
byte b = (byte) a;//会出现错误,byte的取值范围是-128~127,300超出取值范围//范例:
public class ArithmeticoperatorDemo2 {
    public static void main(String[] args) {
      byte b1 = 10;
      byte b2 = 20;
      //现在要强转的是b1 + b2计算之后的结果。
      //(byte)b1 + b2 强转的是b1,并不是最终的结果
      byte result = (byte) b1 + b2;//错误
      byte result = (byte) (b1 + b2);//正确
      System.out.println(result);//30
    }
}

字符串相加

字符串的“+”操作


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

[*]"123" + 123//结果是"123123"

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

[*]1 + 99 +"世界"//结果是"100世界"
//范例:
int age = 18;
System.out.println("刚满" + age + "岁");//"刚满18岁"
System.out.println("刚满" + "age" + "岁");//"刚满age岁"//范例:
System.out.println(1 + 2 + "abc" + 2 + 1);//"3abc21"
练习:数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
      //键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

      //1.键盘录入
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入一个三位数");
      int number = sc.nextInt();

      //2.获取个位,十位,百位
      //公式:
      //个位:数字 % 10
      //十位:数字 / 10 % 10
      //百位:数字 / 10 / 10 % 10
      //...
      int ge = number % 10;
      int shi = number / 10 % 10;
      int bai = number / 100 % 10;
      System.out.println("个位是" + ge);
      System.out.println("十位是" + shi);
      System.out.println("百位是" + bai);
    }
}字符相加


[*]当 字符 + 字符 或 字符 + 数字 时,会把字符通过ASCLL码表查询到对应的数字再进行计算。
//范例:
System.out.println(1 + 'a');//98
System.out.println('a' + "abc");//"aabc"
自增自减运算符

基本用法

符号作用说明++加变量的值加1--减变量的值减1

[*]注意事项:++和--既可以放在变量的前面,也可以放在变量的后面
int a = 10;
a++;//(++a;)后加加(先加加),表示将变量里面得值加1
System.out.println(a);//11单独使用(用法一):++和--无论是放在变量的前边还是后边,单独写一行结果都是一样的。
//范例:
public class ArithmeticoperatorDemo3 {
    public static void main(String[] args) {
      //++ 和 --
      int a = 10;
      //表示把变量a里面的值+1
      a++;
      System.out.println(a);//11
      //表示把变量a里面的值+1
      ++a;
      System.out.println(a);//12
      //表示把变量a里面的值-1
      a--;
      System.out.println(a);//11
      //表示把变量a里面的值-1
      --a;
      System.out.println(a);//10
    }
}
应用场景一:
一岁-->生日后-->两岁
int age = 1;
age++;
System.out.println(age);应用场景二:
购买物品增减购买数量时
-2+应用场景三:数¥号
¥&¥&¥++++++参与计算(用法二):

[*]先用后加
int a = 10;
int b = a++;//a=11,b=10
[*]先加后用
int a = 10;
int b = ++a;//a=11,b=11
练习

public class ArithmeticoperatorDemo4 {
    public static void main(String[] args) {
      int x = 10;
      //后++:先用后加
      int y = x++;
      //先++:先加后用
      int z = ++x;
      System.out.println("x:" + x);//12
      System.out.println("y:" + y);//10
      System.out.println("z:" + z);//12
    }
}赋值运算符

分类

符号作用说明=赋值int 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 ArithmeticoperatorDemo1 {
    public static void main(String[] args) {
      //+=
      //规则:将左边和右边进行相加,然后再把结果赋值给左边
      int a = 10;
      int b = 20;
      a += b;//等同于 a = (int) (a + b);
      System.out.println(a);
      System.out.println(b);


      //细节:
      //+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换
      short s = 1;
      s += 1;//等同于:s = (short) (s + 1);
      System.out.println(s);//2
    }
}关系运算符

(关系运算符/比较运算符)的分类

符号说明==a==b,判断a和b的值是否相等,成立为true,不成立为false!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false<blockquote>
|a>b,判断a是否大于b,成立为true,不成立为false
=|a>=b,判断a是否大于等于b,成立为true,不成立为false
页: [1]
查看完整版本: 运算符