随机类、包装类、日期类、集合Collection、泛型、自定义泛型、可变参数

1、随机数

Random

可以自己定义一些获取随机数的规则

Random random = new Random();
random.nextInt(); // int范围内产生一个随机数
random.nextInt(10); // 返回0~9之间的随机数
// 通过种子获取一组不变的随机数
Random random = new Random(10);
for(int i = 0; i < 10; i++) {
    System.out.println(random.nextInt());
}

2、包装类

Java语言中,new一个对象是存储在堆里的,我们通过栈中的引用来使用这些对象;所以,对象本身来说是比较消耗资源的。

对于经常用到的类型,如int等,如果我们每次使用这种变量的时候都需要new一个Java对象的话,就会比较笨重。

所以,和C++一样,Java提供了基本数据类型,这种数据的变量不需要使用new创建,他们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

把基本数据类型转换成类,包装类提供了很多的方法给我们使用。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
  • 自动拆箱

    包装类转换成基本数据类型的过程就是拆包装,英文对应于unboxing,中文翻译为拆箱。

    自动拆箱:就是将包装类自动转换成对应的基本数据类型。

    Integer i1 = new Integer(100);
    // 第一种
    int i2 = i1.intValue();
    // 第二种:自动拆箱
    int i3 = i1;
    
  • 自动装箱

    包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是打包装,英文对应于boxing,中文翻译为装箱。

    自动装箱: 就是将基本数据类型自动转换成对应的包装类

    int i4 = 100;
    // 自动装箱
    Integer i5 = i4;
    
    int i6 = 100;
    Integer i7 = new Integer(100);
    Integer i8 = new Integer(100);
    Integer i9 = 200;
    Integer i10 = 200;
    Integer i11 = 100;
    Integer i12 = 100;
    System.out.println(i6 == i7); // true
    System.out.println(i7 == i8); // false
    System.out.println(i9 == i10); // false 自动装箱,调用了valueOf() 把int转化为对象
    System.out.println(i9.intValue() == i10.intValue()); // true
    System.out.println(i11 == i12); // true -128到127都是从缓存获取,缓存只会保留一个地址的值
    

3、日期类

Date 日期

Date now = new Date();
		
System.out.println(now);
System.out.println(now.getHours());
System.out.println(now.getTime());

SimpleDateFormat 格式化日期

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = simpleDateFormat.format(new Date());
System.out.println(date);

String dateStr = "2021-08-01 12:00:00";
try {
    Date date2 = simpleDateFormat.parse(dateStr);
    System.out.println(date2);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

4、集合Collection

// 一个学生数组
String[] strArr1 = new String[3];
strArr1[0] = "张三";
strArr1[1] = "李四";
strArr1[2] = "王五";

// 添加一个新同学
String[] strArr2 = new String[4];
for(int i = 0; i < strArr1.length; i++) {
    strArr2[i] = strArr1[i];
}
strArr2[3] = "赵六";
  • ArrayList

    List list = new ArrayList();
    list.add("张三");
    list.add("李四");
    list.add("王五");
    
    String name1 = (String) list.get(0);
    System.out.println(name1);
    for(int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
    

5、泛型

我们在项目中使用集合基本都是存储同一种数据类型,既然我们在集合中存储同一种数据类型,那么我们事先就得知道这个集合存储什么数据类型,我们就能预先指定要存储的类型

List<String> list = new ArrayList<String>();
list.add("张三");
List<Integer> list = new ArrayList<Integer>();
list.add(100);

6、自定义泛型

语法

class/interface 类名/接口名<T> {
    
}

T只是泛型的一个标准,使用什么字符都可以,但是都要大写,不要使用特殊符号,建议通T。

public class Animal<T> {

	public T name;
	
	public T getName() {
		return name;
	}
	
	public void setName(T name) {
		this.name = name;
	}
}

7、可变参数

传入函数的参数个数不固定

public class Test7 {

	public static void main(String[] args) {

		Test7 test7 = new Test7();
		test7.getChangeData("aaa", "bbb", "ccc", "ddd");
		
	}
	
	public void getChangeData(String...strings) {
		for(int i = 0; i < strings.length; i++) {
			System.out.println(strings[i]);
		}
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值