运算符
运算符运算符和表达式
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]