反射和多线程基础

这篇博客详细介绍了Java中的反射和多线程基础知识。从反射的概念、用途和使用方法,到进程和线程的区别,再到线程的创建方式、状态、分类以及线程的优先级设置,深入浅出地讲解了Java并发编程的基础。文中还通过实例演示了如何通过Runnable接口、Thread类和Callable接口创建线程,并讨论了不同创建方式的区别。
摘要由CSDN通过智能技术生成
一、今日内容
1.1 课程回顾
1.2 反射是啥
1.3 进程和线程
1.4 线程的创建方式
1.5 线程的状态
1.6 线程的常用方法
二、课程回顾

Java的基本语法:

​ 1.数据类型:基本、引用

​ 2.运算符:算术、逻辑、比较、赋值、位、三目

​ 3.表达式

​ 4.顺序结构

​ 5.分支结构:选择结构:if switch

6.循环结构:for while do/while

Java:面向对象:

1.最终的目的:消除重复代码

2.核心:类和对象

3.特征:封装、继承、多态、抽象

4.关键字:static,public,private、class、interface this super 等

5.抽象类和接口

Java中数组:

数组:存储多个相同数据类型的数据结构

特点:长度固定

声明和初始化:数据类型 [] 变量名=初始化;动态初始化、静态初始化

索引:索引从0开始

算法:

1.排序算法

2.查找算法

多维数组:Java允许数组的元素又是一个数组

Java中的集合:

集合:存储多个指定数据类型的元素。

特点:长度可变,存储引用类型

种类:List、Set、Map

常用的集合类:ArrayList、HashMap、TreeSet等

泛型:引用类型的占位符 出现好处:代替了Object,避免了转型(向上转型、向下转型)

Java中的流:

File:Java中操作文件或目录的类。记忆:常用的方法:创建、删除、重命名、获取

流:数据通信的通道。

根据功能分:节点流、过滤流

根据单位分:字节流、字符流

根据方向分:输入流、输出流

Java的节点流:文件流(操作的数据都是跟文件有关):Filexxx. 内存流(操作的数据都是跟数组有关):Bytexxx

Java的过滤流:缓冲流、对象流、数据流、转换流等等

输入流:read(读取)、skip(跳过)

输出流:write(写出)、flush(刷新)

Java中的异常:

异常:Java主要分为:Error:人为不可解决、Exception:异常,运行的特点:运行时异常、编译时异常

编译异常:代码在编译阶段,显示的异常 IOException

运行异常:代码在运行阶段,显示的异常 RuntimeException、IndexOutofException

自定义异常:自定义类并继承Exception

三、Java中的反射
3.1 反射是什么

反射机制是Java程序,在运行中,动态获取类的信息(方法、属性、注解等)、并且还可以调用类的属性、和方法。这种动态获取类的信息、以及动态调用对象的方法和属性的行为就叫反射。

反射:就是可以获取类的信息、和执行方法。

3.2 反射可以做什么

1.运行时获取类中的属性

2.运行时获取类中的方法

3.运行时创建类的对象

4.运行时,执行类中的方法

5.运行时,校验属性是否属于某个类

6.实现动态代理

3.3 反射怎么用

通过反射实现,类中的属性、方法的获取。还可以运行类中的方法。

创建Class对象的几种方式:

1.类名.class

2.Class.forName

3.对象名.getClass

代码演示:获取类中的属性

public static void main(String[] args) {
   
	//1.创建反射对象--Class<T>
	Class<Student> clz=Student.class;
	//2.获取Student类中的属性
	//公共属性,包含继承属性
	Field[] arrF=clz.getFields();
	//所有属性,不包含继承的属性
	Field[] arrF2=clz.getDeclaredFields();
	//3.显示 获取到的属性
	System.err.println("公共属性,包含继承属性:"+Arrays.toString(arrF));
	System.err.println("所有属性,不包含继承的属性:"+Arrays.toString(arrF2));
}

代码演示:获取类中的方法

public static void main(String[] args) {
   
	//1.获取反射对象
	Class<Student> clz=Student.class;
	//2.获取对象中的方法
	//公共方法,包含继承方法
	Method[] arrM=clz.getMethods();
	//所有方法,不包含继承方法
	Method[] arrM2=clz.getDeclaredMethods();
	//3.显示对应的方法
	System.err.println("公共方法:"+Arrays.toString(arrM));
	System.err.println("所有方法:"+Arrays.toString(arrM2));
}

代码演示:通过反射执行类中的方法

public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
   
	//1.获取反射对象
	Class
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值