Java文档第三弹

本文介绍了Java中的基本概念,如clone方法、notify方法等,并详细解释了静态代理的工作原理。此外,还深入探讨了泛型的使用方法以及异常处理机制,包括检查异常与运行时异常的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. .clone方法,需要实现Cloneable接口

  2. .notify方法,实现线程时候需要,将线程唤醒(随机唤醒)不可被重写
    .notifyAll方法,全部唤醒

  3. 重写toString Alt+/ -> toString 重写

  4. Object中的wait,是对象的等待,不是线程的wait,wait(timeout)和wait()

  5. .finalize方法, 可以被重写,监听作用,对象被销毁时调用
    gc 垃圾回收机制
    sleep(time) 系统等待time时间

  6. 静态代理(一个代理只能代理一个类)
    所谓静态代理也就是在程序运行前就已经存在代理类的字节码文件(在真正出租房屋之前,就已经做好了相关工作,中介和房屋主人就做好了相关联系),代理类和委托类的关系在运行前就确定了。
    1.和被代理对象实现相同的接口
    2.在代理类中,需要对被代理对象初始化
    3.需要实现和被代理对象相同的方法,并且在这个方法中核心(原始)业务调用被代理对象的,增强的业务在这里进行增强就行了
    https://www.cnblogs.com/StanleyBlogs/p/10761604.html

  7. 超级父接口
    Collection 和 Map
    Collection 主要子接口 List Set
    超级父接口

  8. ArraysList线程不安全,但速度更快
    boolean b = list.add(“12”);//不指定位置添加元素 返回boolean类型
    list.add(0, “23”);//指定位置添加元素 没有返回值
    //指定位置只能往已经存在的位置或者列表末尾指定
    //指定已经存在的位置,原位置及之后的位置顺序后延

  9. 泛型
    泛型只有在调用时才能确定具体的类型
    K V E T U S
    在类中使用泛型

public class Easy1<T> {
}

规定泛型的继承关系 向上规定是哪一个接口或类的子类
必须用extends 无论是接口还是继承

public <E extends S> E test1(E e) {
//		不能new泛型
		return e;
//		对集合中存储的内容进行规范
		List<String> list1 = new ArrayList<String>();
//		指定泛型后,集合只能存放指定类型的对象
  1. 异常
    异常-在程序编译或者运行时出现的异常
    检查异常–在编码过程中必须处理的异常
    Exception的子类(非RuntimeException的子类)全是检查性异常
    运行时异常–编码时可以不处理,运行程序时可能会抛出的异常
    运行异常是RuntimeException及其下所有子类
    程序一旦抛出异常(未处理),程序就会中断
    当方法重写时,重写的方法抛出的异常,只能更精确(子类),不能更大(父类)
package com.day9.day902;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Easy1 {
	public static void main(String[] args) {
		int a = 12 / 0;
		System.out.println("打印字符串");
//		和程序之外的内容打交道,都会抛出检查异常
		
//		处理异常
//		尝试运行代码--便抛出异常中断程序
		try {
			File f = new File("d:\\maven.txt");
			FileInputStream fis = new FileInputStream(f);
		}catch( Exception e) {
//			如果try块中的代码在程序运行过程中,确实抛出了
//			FileNotFoundException类型的异常
//			就会执行这个代码块
//			这个代码块需要对出现异常的程序进行一个补救方案
			e.printStackTrace();
//			System.out.println("程序出错");
		}
		System.out.println("程序结束");
		System.out.println(test());
	}

	void throwException() throws FileNotFoundException, IOException {
		File f = new File("d:\\maven.txt");
		FileInputStream fis = new FileInputStream(f);
	}
//	捕捉多个异常只会执行一个
//	小异常放在前面捕捉,大异常放在后面。
	public static int test() {
		File f = new File("d:\\maven.txt");
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(f);
			Class.forName("com.easy.Test");
			return 1;
		}catch( FileNotFoundException e) {
			System.out.println("FileNotFoundException");
//			e.printStackTrace();
			return 2;
		}catch(Exception e){
			//其他异常会执行此代码
			return 3;
		}finally {
//			任何异常都会执行此代码
//			此代码块用来关闭资源
			if(fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
//					e.printStackTrace();
				}
				return 4;
			}
		}
	}
		static boolean find(List list, String str) {
		for(Object obj:list) {
//			尝试运行可能抛出异常的代码块,如果抛出异常,
//			就会执行捕获对应的异常类型的代码块catch
//			这样程序就不会因为异常而中断
			try {
				if(obj.equals(str)) {
					return true;
				}
			}catch(NullPointerException e) {
				System.out.println("查找出错");
				continue;
			}
		}
		return false;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值