-
Random
生成随机的数
上代码理解:
Random rand=new Random();//生成一个Random对象
int n1=rand.nextInt();//范围是int能表示的数,有正有负
int n2=rand.nextInt(10);//范围是0-9
long n3=rand.nextLong(); //返回long值
double n4=rand.nextDouble();//返回 0.0-1.0
System.out.println("随机数为"+n1);
System.out.println("随机数为"+n2);
System.out.println("随机数为"+n3);
System.out.println("随机数为"+n4);
输出
随机数为900966839
随机数为9
随机数为2627884710896352404
随机数为0.20106154468240567
-
包装类
基础概念
Java是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但我们在实际应用中经常需要将基本数据转化成对象,以便于操作。
基本数据类型 | 包装类 |
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写而已。
为什么需要包装类?
- 某些方法的参数必须是对象,为了让基本数据类型的数据能作为参数,提供包装类。
- 包装类还可以提供更多的功能
- 其他特别重要的功能:比如可以实现字符串和基本数据类型之间的转换
转化如下
实现代码如下
/*基本数据类型转化为包装类*/
Integer in=Integer.valueOf(100);//Integer in=new Integer(100);
System.out.println(in);
Double din=Double.valueOf(100.0);//Double包装类
System.out.println(din);
/*包装类对象转化为基本数据类型*/
int in2=in.intValue(); //包装类转化为int
System.out.println(in2);
double in3=in.doubleValue(); //包装类转化为double
System.out.println(in3);
/*把字符串转化为包装类对象*/
Integer in4=Integer.valueOf("1111");
System.out.println(in4); //Integer s=new Integer("99999.0");报错
Double in5=Double.valueOf("99999.0");
System.out.println(in5);
/*包装类转化为String*/
String in6=in.toString();
System.out.println(in6);
/*字符串转化为基本类型两种方法*/
int n=Integer.valueOf("1111");
int nn=Integer.parseInt("1111");
System.out.println(n);
System.out.println(nn);
/*基本类型转化为字符串*/
String s=String.valueOf(1000);
System.out.println(s);
//常见的常量
System.out.println(Integer.MAX_VALUE);//最大值
System.out.println(Integer.MIN_VALUE);//最小值
自动装箱 自动拆箱
自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing)。
自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为“对象”。
自动拆箱:每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用intValue()、doubleValue()等转型方法。
代码如下:
/*自动装箱*/
Integer in=123; //相当于Integer in=integer.valueOf(123)
System.out.println(in);
/*自动拆箱*/
int n=in;
System.out.println(n);//相当于int n=in.intValue();
另外注意 integer有null值,不能对应int 的0值,在转化时要判断
Integer in=1;
if(in!=null) {
int n=in;
}
else {
System.out.println("Integer为null,不合法");
}
再一个就是缓存区的问题,如果所转换的数值Integer是由-128到127之间的书转化而来,则会存入缓存区,下一次直接使用
代码理解如下:
Integer in1=-128;
Integer in2=-128;
System.out.println(in1==in2);
System.out.println(in1.equals(in2));
Integer in3=12345;
Integer in4=12345;
System.out.println(in3==in4);
System.out.println(in3.equals(in4));
输出
true
true
false
true