随机数 Random
- 导包
- 创建引用数据类型的引用
Random ran = new Random()
- 使用
nextInt()
产生int范围的随机数
nextInt(n)
产生[ 0, n ) 随机整数
nextDouble()
产生[ 0, 1 ) 随机小数
伪随机数,不是完全随机的.
import java.util.Random;
public class Demo {
public static void main(String[] arg) {
// 创建
Random ran = new Random();
// 使用功能
int num1 = ran.nextInt();
System.out.println(num1);
System.out.println(ran.nextInt());
System.out.println(ran.nextInt());
System.out.println(ran.nextInt());
System.out.println(ran.nextInt(5));
System.out.println(ran.nextDouble());
}
}
运算符
根据操作数的个数分类:
- 一元运算符 | 单目: + - ++ –
- 二元 | 双目: + - * /
- 三元 | 三目:条件运算符
算术运算符
-
- : 正号(可以省略) ,加法运算,字符串连接符
- % : 求余数 取模 模以.
- 如果字符类型没有参与四则运算,则不许愿转为对应的十进制的整数
public class Demo {
public static void main(String[] arg) {
int a = 5;
int b = 3 + a;
System.out.println("" + a);
System.out.println("" + a + "2" + "lala"); // 52lala
System.out.println('a' + a + "2" + "lala"); // 1022lala
System.out.println(7 % 5); // 2
}
}
- ++ : 自增
- – : 自减
- ++ – 放操作数后面,先运算,再±1.放操作数前面,则先±1再运算.
public class Demo {
public static void main(String[] arg) {
int a = 5;
int b = a + 10;
System.out.println(++a); // 6
System.out.println(a);// 6
System.out.println(b);// 15
System.out.println(++a + b);// 22
System.out.println(a++ + b);// 22
System.out.println(a);// 8
int sum = ++a + a++ + a++ + ++a; // sum = 9 + 9 + 10 + 12
System.out.println(sum);// 40
System.out.println(a);// 12
}
}
赋值运算符
- = : 基础赋值运算符
- += -= *= /= %= : 拓展赋值运算符. 推荐使用这种写法.执行效率高.自动强制类型转换.
public class Demo {
public static void main(String[] arg) {
int a = 5;
int b = 10;
b += a;
System.out.println(b); // 15
// 强制类型转换
short s = 1;
System.out.println(s += 1); // 2
}
}
比较运算符 | 关系运算符
-
< >= <= 只能对byte, short, int, long, double, float, char进行判断
- == != 可以对任意类型进行判断
- 比较运算符的结果都为boolean类型的结果
- 判断字符串是否相等不推荐使用==和 !=
逻辑运算符
多个逻辑条件之间的连接符 - &
- |
- ^
- !
- && 跟js一样 有短路效果
- ||
两边的操作数需要时boolean
建议优先使用双逻辑运算符
条件运算符
条件表达式 ? 值1 : 值2 ;
跟js的一样.
位运算符
先把操作数转为二进制,然后通过位运算符的规则进行运算,最终得到一个二进制的结果,转为十进制
位运算符效率高, 使用位移运算符比直接使用 * | / 2的效率高.
& : and 同一位置的两个数,两个都为1才是1,一个为0就是0
| : or
^ : 异或 同一位置的两个数 相同为0 不同为1
这三个运算符当操作数为boolen,作为逻辑运算符使用.
整数,作为位运算符使用.
一个操作数对同一个数据异或2此,得到原数据本身.
位移运算符
- 左移 << 操作数1 << 操作数2 相当于乘以2的n次方
操作数1转为二进制,向左移动操作数2个位置,空位补0,最终转为十进制 - 右移 >> 相当于除以2的n次方
public class Demo {
public static void main(String[] arg) {
System.out.println(2 & 3); // 2
System.out.println(0 & 3); // 0
System.out.println(0 | 3); // 3
System.out.println(2 | 3); // 3
System.out.println(5 | 3); // 7
System.out.println(3 << 2); // 12
System.out.println(12 >> 2); // 3
}
}