Random类和包装类
Random 的构造方法:
方法声明 | 功能描述 |
---|---|
Random() | 用于创建一个随机数生成器,每次实例化Random对象都会生成不同的随机数 |
Random(long seed) | 使用一个long类型的seed(种子)创建伪随机数生成对象,当seed相同时,每次实例化Random对象会生成相同的随机数 |
Random类的常用方法:
方法声明 | 功能描述 |
---|---|
boolean nextBoolean() | 随机生成Boolean类型的随机数 |
double nextDouble() | 随机生成double之间的随机数 |
float nextFloat() | 随机生成float类型的随机数 |
int nextInt() | 随机生成int类型的随机数 |
int nextInt(int n) | 随机生成【0,n)之间int类型的随机数 |
long nextLong() | 随机生成long类型的随机数 |
包装类:
基本类型对应的包装类:
基本数据类型 | 对应的包装类 | 基本数据类型 | 对应的包装类 |
---|---|---|---|
byte | Byte | long | Long |
char | Character | float | Float |
int | Integer | double | Double |
short | Short | boolean | Boolean |
Java中,除了支持基本数据类型与对应包装类之间进行转换外,还提供了其他方法来支持基本数据类型、基本数据包装以及字符串之间的相互转换。具体如下:
1.通过引用数据类型字符串String 类的valueOf()方法可以将8种基本数据类型转换为对应的字符串类型。
2.通过8种包装类的静态方法valueOf()既可以将对应的基本数据类型转换为包装类,也可以将变量的内容匹配的字符串转换为对应的包装类(Character包装类除外)。
3.通过8种包装类的有参构造方法同样既可以将对应的基本数据类型转换为包装类,也可以将变量内容匹配的字符串转换为对应的包装类(Character包装类除外)。
4.通过8种包装类的静态方法parseXxx()可以将变量内容匹配的字符串转换为对应的基本数据类型。
5.包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型的值。
例子:
package cert;
public class Ch02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 123;
//通过String.valueof()方法将基本数据类型转换为字符串
String string = String.valueOf(num);
System.out.println("将int变量转换为字符串的结果:"+string);
//通过包装类的valueof()静态方法将基本类型和字符串转换为包装类
String str = "998";
Integer integer = Integer.valueOf(num);
Integer integer2 = Integer.valueOf(str);
System.out.println("将int变量转换为包装类的结果:"+integer);
System.out.println("将字符串变量转换为包装类的结果:"+integer2);
//通过包装类的有参构造方法将基本类型和字符串类型转换为包装类
Integer integer3 = new Integer(num);
Integer integer4 = new Integer(str);
System.out.println("通过构造器将int变量转换为包装类的结果:"+integer3);
System.out.println("通过构造器将字符串变量转换为包装类的结果:"+integer4);
//通过包装类parseXxx()静态方法将字符串转换为基本数据类型
int parseInt = Integer.parseInt(str);
System.out.println("将字符串转换为基本类型的结果:"+parseInt);
//通过包装类的toString()方法将包装类转换为字符串
String string2 = integer.toString();
System.out.println("将包装类转换为字符串类的结果:"+string2);
}
}
输出结果:
可以看出这几种方法都可以实现基本数据类型、包装类以及字符串之间的相互转换,但是在使用value(String s)和parseXxx(String s)方法时,还需注意以下几点:
- 除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应的基本数据类型的数据,否则虽然编译通过,但运行时会报错。如下:
Integer i = Integer.valueof("123"); //合法
Integer i = Integer.valueOf("12a"); //不合法
2.除了Character 外,包装类都有parseXxx(String s)的静态方法,将字符串转换为对应的基本数据类型。参数s不能为null,而且同样必须是可以解析为相应基本数据类型的数据,否则虽然编译通过,但是运行时会报错。示例如下:
int i = Integer.parseInt("123"); //合法
Integer in = Integer.parseInt("itcast"); //不合法