【打卡】Java学习(四)

1.File类:java.io.File
https://www.cnblogs.com/wangjinlong-padan/p/6382924.html

		File f = new File("E:/01.jpeg");
		//重命名
		f.renameTo(new File("E:/03.jpeg"));//E:\\03.jpeg
		//在项目目录下新建文件
		File f01 = new File("sln.txt");
		f01.mkdir();//单极目录
		f01.createNewFile();
		System.out.println(f01.isDirectory());//true
		//删除
		//f01.delete();
		//f01.mkdirs();//多级目录

2.Exception:异常处理机制
为什么要引入exception?在遇到情况多的时候,使用if/else,但是很有可能有我们忽略情况,造成系统崩溃,Java引入了异常处理机制,能简洁高效的处理这一情况,这也是Java的一大特点
Exception处于java.lang包下,继承Throwable类
在这里插入图片描述
异常处理过程:
1).抛出异常:生成一个异常对象,把异常对象交给JRE
2).捕获异常:JRE收到异常后,寻找对应的代码来解决
RuntimeException:是运行时异常
Exception:编译器异常
try-catch-finally机制:catch可以有多条,finally只能有一条

try{
	语句1;
	语句2;
}catch(Exception1 e){
}catch(Exception2 e){
}finally{
}

在这里插入图片描述
throws:向外抛,一层一层向外抛,直到main方法抛给JRE,当然也可以使用try-catch结束
3.容器/集合:Collection(list/set/map)
在这里插入图片描述

		//一个容器
		Collection<String> c = new ArrayList<>();
		
		System.out.println(c.size());//c中对象的个数
		c.add("小妮儿");//添加对象
		c.add("狗晟儿");
		System.out.println(c.isEmpty());//判断c中是否有对象
		System.out.println(c.contains("欧耶"));//判断对象是否存在
		c.remove("小妮儿");
		c.clear();//移除所有元素
		//容器之间
		Collection<Integer> T01 = new ArrayList<>();
		Collection<Integer> T02 = new ArrayList<>();
		
		T01.add(10);
		T01.add(20);
		T01.add(30);
		
		T02.add(10);
		T02.add(40);
		T02.add(50);
		
		//T01.removeAll(T02);//移除两容器中共同元素
		T01.addAll(T02);//将T02缀加到T01后面
		//T01.retainAll(T02);//取交集
		System.out.println(T01);

****注意:collection中存放的是对象的地址,不是对象本身,所以删除后,对象还存在,set是无顺序,不可重复的容器,常用方法和collection的方法一样,继承collection

List容器:有序,可重复,即每个元素都有索引标记;常用方法:ArrayList(底层实现是数组,查询效率高,增删效率低,线程不安全),LinkedList(底层实现是链表,查询效率低,增删效率高,线程不安全),Vector(底层实现是数组,线程安全)

		//容器变得有序,意思就是一切索引可以用下角标来表示
		List<Integer> list = new ArrayList<>();
		list.add(101);
		list.add(102);
		list.add(103);
		list.add(104);
		
		list.add(2, 109);//在指定位置添加元素
		System.out.println(list);//[101, 102, 109, 103, 104]
		
		list.remove(2);//删除指定位置的元素
		System.out.println(list);//[101, 102, 103, 104]
		
		list.set(2, 222);//替换指定位置的元素
		System.out.println(list);//[101, 102, 222, 104]
		
		System.out.println(list.get(3));//104,获取指定位置的元素

		//返回对应元素的下角标,若没有这个元素返回-1,有多个元素返回第一个的下标
		System.out.println(list.indexOf(102));//1
		//lastIndexOf,返回最后一个元素的下角标,从后往前找

数组扩容:底层的数组不能再改变了,新建一个更长的数组,这个数组的长度JDK定义长度为上个数组的1.5倍,ArrayList中什么都不传的化,默认的长度为10
ArrayList:删除remove,添加add(数组已经满的时候),都是调用arraycopy()函数做了一次数组拷贝,所以增删一个元素的本质是移动大量元素获得的,效率低
BS_190606/SxtLinkedList01:自定义实现链表(添加add,删除remove,获取get)
4.Map:键值对

// Map中键不能重复,如果重复,新的覆盖旧的
		Map<Integer, String> map = new HashMap<>();

		map.put(1, "first");
		map.put(2, "second");
		map.put(3, "third");
		map.put(4, "fourth");

		System.out.println(map.get(1));

		System.out.println(map.size());
		System.out.println(map.isEmpty());
		System.out.println(map.containsKey(3));
		System.out.println(map.containsValue("this"));

		Map<Integer, String> map2 = new HashMap<>();

		map.put(9, "nine");
		map.put(10, "ten");
		// map2.putAll(map);//{1=first, 2=second, 3=third, 4=fourth, 9=nine,
		// 10=ten}
		map.putAll(map2);// {1=first, 2=second, 3=third, 4=fourth, 9=nine,
							// 10=ten}
		System.out.println(map);

5.HashMap:链表加数组
hashcode->键生成一个哈希码->(通过一定算法)生成hash值->存放到对应的数组中去(数组下标,key,value,next)
提供两种算法:
1).hash = hashcode/hashcode 退化成了链表
2).hash = hashcode%数组长度 取余数,设计最优的散列函数(数据结构中学过),由于除法运算的效率低,用”与运算“代替,hash = hashcode&(数组长度-1)//数组长度必须是2的整数幂
查询哈希值,get()方法查找对应的键,再利用equals()在数组链表中比较有无对应的值,最后返回value。所以,Java中规定,两个具有一样内容的对象必须有一样的hashcode
HashMap:线程不安全,效率高,允许key或value为null
HashTable:线程安全,效率低,不允许key或value为null
6.TreeMap:(可以实现排序)
7.set:set继承自collection,set接口中没有新增的方法,方法和collection保持一致;
无序,不可重复,set中之能放入一个null元素,不能是多个
常用的方法有:HashSet()(底层实现是一个hashmap)****,TreeSet()(底层由treemap实现)

		Set<String> set = new HashSet<>();

		set.add("A");
		set.add("B");
		set.add("C");
		set.add("是");
		set.add("A");

		System.out.println(set);
		set.remove("A");
		System.out.println(set);

		Set<String> set2 = new HashSet<>();

		set2.add("今天");
		set2.add("是");
		set2.add("端午节");

		set2.addAll(set);
		System.out.println(set2);// 无序的
		set2.containsAll(set);
		System.out.println(set2);
		set2.removeAll(set);
		System.out.println(set2);// 删除交集

8.泛型(Generic):本质是数据类型的参数化(就像是一个标签)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值