运算符
算术运算符:
运算符 | 运算规则 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
+ | 加 | 2+3 | 5 |
+ | 连接字符串 | “中”+“国” | “中国” |
- | 负号 | int a=3;-a | -3 |
- | 减 | 3-1 | 2 |
* | 乘 | 2*3 | 6 |
/ | 除 | 5/2 | 2 |
% | 取模 | 5%2 | 1 |
++ | 自增 | int a=1;a++/++a | 2 |
-- | 自减 | int b=3;a--/--a | 2 |
加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
“%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
整数做被除数,0不能做除数,否则报错。
算术运算符++、--的使用
++运算符:会在原来的基础上自增1
--运算符:会在原来的基础上自减1
++、-- 运算符后置时,先使用变量原有的值参与运算,运算操作完成后,变量x的值自增1或者自减1
++、--运算符前置时,先将变量x的值自增1或者自减1,然后使用更新后的新值参与运算操作
赋值运算符
运算符 | 运算规则 | 范例 | 结果 |
= | 赋值 | int a=2 | 2 |
+= | 加后赋值 | int a=2,a+=2,(a=a+2) | 4 |
-= | 减后赋值 | int a=2,a-=2 (a=a-2) | 0 |
*= | 乘后赋值 | int a=2,a*=2 (a=a*2) | 4 |
/= | 整除后赋值 | int a=2,a/=2 | 1 |
%= | 取模后赋值 | int a=2,a%=2 | 0 |
比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
运算符 | 运算规则 | 范例 | 结果 |
== | 相等于 | 4==3 | False |
!= | 不等于 | 4!=3 | True |
< | 小于 | 4<3 | False |
> | 大于 | 4>3 | True |
<= | 小于等于 | 4<=3 | False |
>= | 大于等于 | 4>=3 | True |
赋值运算符的=符号,符号与比较运算符的==符号是有区别的
赋值运算符的=符号,是用来将=符号右边的值,赋值给左边的变量
比较运算符的==符号,是用来判断==符号 左右变量的值是否相等的
逻辑运算符
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false
运算符 | 运算规则 | 范例 | 结果 |
& | 与 | false&true | False |
| | 或 | false|true | True |
^ | 异或 | true^flase | True |
! | 非 | !true | Flase |
&& | 短路与 | false&&true | False |
|| | 短路或 | false||true | True |
逻辑运算符通常是连接两个其他表达式计算后的布尔值结果
当使用短路与或者短路或时,只要能判断出结果则后面的部分就不在判断
运算符的结果规律:
短路与&&:参与运算的两边数据,只要有false,则运算结果为false
短路或||:参与运算的两边数据,只要有true, 则运算结果为true
逻辑非!:参与运算的两边数据,原先是true则变成false,原先是false则变成true
//&与的运行结果
System.out.println(false&true);//false
System.out.println(true&false);//false
System.out.println(true&true);//true
System.out.println(false&false);//false
//&&短路与的运行结果
System.out.println(false&&true);//false
System.out.println(true&&false);//false
System.out.println(true&&true);//true
System.out.println(false&&false);//false
//例子
int a=1;
int b=1;
System.out.println(1==2&a++ ==1);//false
System.out.println(1==2&&b++ ==1);//false
System.out.println(a);//2
System.out.println(b);//1
注意:
与&和短路与&&的区别
&如果第一个值是false,还会判断第二个值
&&如果第一个值是false,将不会判断第二个值
//|或运行结果
System.out.println(false|true);//true
System.out.println(true|false);//true
System.out.println(true|true);//true
System.out.println(false|false);//false
//||短路或运行结果
System.out.println(false||true);//true
System.out.println(true||false);//true
System.out.println(true||true);//true
System.out.println(false||false);//false
//例子
int c=1;
int d=1;
System.out.println(1==1|c++ ==1);//true
System.out.println(1==1||d++ ==1);//true
System.out.println(c);//2
System.out.println(d);//1
注意:
// 或| 和 短路或||的区别
|如果第一个值为true,还会判断第二个值
||如果第一个值为true,不会判断第二个值
三元运算符
格式:
(条件表达式)?表达式1:表达式2
三元运算符的运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
例子:
//随机出入三个数,然后输出最大值
import java.util.Scanner;
class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int x=sc.nextInt();
System.out.println("请输入第二个数:");
int y=sc.nextInt();
System.out.println("请输入第三个数:");
int z=sc.nextInt();
int max = (x>y?x:y)>z?(x>y?x:y):z;
System.out.println("最大值为:"+max);
}
}
Max= (x>y?x:y)>z?(x>y?x:y):z;
先判断两边括号里面x,y的值,如果x值大然后在跟z值比大小,若y值大然后y跟z值在比较大小
运算符优先级
每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)
优先级 | 描述 | 运算符 |
1 | 括号 | ()、[] |
2 | 正负号 | +、- |
3 | 自增自减,非 | ++、--、! |
4 | 乘除,取余 | *、/、% |
5 | 加减 | +、- |
6 | 移位运算 | <<、>>、>>> |
7 | 大小关系 | >、>=、<、<= |
8 | 相等关系 | ==、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | | |
12 | 逻辑与 | && |
13 | 逻辑或 | || |
14 | 条件运算 | ?: |
15 | 赋值运算 | =、+=、-=、*=、/=、%= |
16 | 位赋值运算 | &=、|=、<<=、>>=、>>>= |
引用数据类型
Scanner类
Scanner类
Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
Scanner使用步骤:
导包:import java.util.Scanner;
创建对象实例:Scanner sc = new Scanner(System.in);
调用方法:
int i = sc.nextInt(); 用来接收控制台录入的数字
String s = sc.next(); 用来接收控制台录入的字符串
例子:
import java.util.Scanner;
public class ScannerDemo01 {
public static void main(String[] args) {
//创建Scanner引用类型的变量
Scanner sc = new Scanner(System.in);
//获取数字
System.out.println("请输入一个数字");
int n = sc.nextInt();
System.out.println("n的值为" + n);
//获取字符串
System.out.println("请输入一个字符串");
String str = sc.next();
System.out.println("str的值为" + str);
}
}
运行结果:
随机数类Random
这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0。
l Random使用方式:
n import导包:所属包java.util.Random
n 创建实例格式:Random 变量名 = new Random();
接下来,通过一段代码,一起学习下Random类的使用,RandomDemo.java
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// 创建Random类的实例
Random r = new Random();
// 得到0-100范围内的随机整数,将产生的随机整数赋值给i变量
int i = r.nextInt(100);
//得到0.0-1.0范围内的随机小数,将产生的随机小数赋值给d变量
double d = r.nextDouble();
System.out.println(i);
System.out.println(d);
}
}
运行结果如下图所示: