栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础系列十 注解、泛型、反射、序列化和常用类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础系列十 注解、泛型、反射、序列化和常用类

Java基础系列第一章 初识Java语言
Java基础系列第二章 Java语言基础
Java基础系列第三章 Java流程控制
Java基础系列第四章 Java数组与字符串
Java基础系列第五章 面向对象程序设计
Java基础系列第六章 Java异常处理
Java基础系列第七章 IO流
Java基础系列第八章 集合框架
Java基础系列第九章 线程
Java基础系列第十章 注解、泛型、反射、序列化和常用类
Java基础系列第十一章 JDBC技术
Java基础系列第十二章 Java网络编程


目录
    • 注解
      • 基本注解
      • 元注解
      • 自定义注解
    • 泛型
    • 反射
    • 序列化与反序列化
    • 常用类
      • Math类
      • Number类
      • Vector类


注解

注解:也称元数据,就是用来描述数据的数据。注解可在编译、类加载、运行时被读取并执行相应处理。注解可声明在包、类、成员变量、成员方法、局部变量、方法参数等前面,用来对其进行说明、注释。注解默认实现java.lang.annotation.Annotation接口类。根据注解作用可区分为基本注解、元注解、自定义注解。

基本注解

基本注解:可直接在程序中当修饰符使用。jdk 8中提供了如下5种基本注解:

  • @Deprecated:表示某个类、方法等已过时,不建议使用。如果使用,在编译时会出现警告信息。
  • @Override:方法重写使用。
  • @SuppressWarnings:抑制警告信息出现。可用于类型、构造方法、成员方法、成员变量、参数等,可配置警告参数,如 @SuppressWarnings(“警告参数”)。
  • @SafeVarargs:抑制堆污染警告。
  • @FunctionalInterfase:指定某个接口必须为函数式接口(指一个接口中只有一个抽象方法)。
元注解

元注解:对注解进行标注的注解。Java提供了如下6种元注解类型:

  • @Target:限制注解的使用范围,如 @Target(“使用范围”)。
  • @Retention:说明注解的保存范围,如@Retention(“保存范围”)。
  • @Document:指定被修饰的注解可被javadoc.exe工具提取成文档。
  • @Inherited:描述父类的注解可以被子类继承。
  • @Repeatable:用于开发重复注解。
  • 类型注解:允许定义ElementType枚举时使用@Target(ElementType.枚举值)来定义。
自定义注解

自定义注解:用户根据自己需求,自己设定。其格式如下:

public @interface 注解名{
数据类型 成员变量名() default 初始值;
}

泛型

泛型:将数据的类型参数化。如果使用Object则可能会在程序运行时产生类型强制转换异常,使用泛型则能在编译时就检测出错误。
泛型一般使用在类、接口和方法上,其格式如下:

类的定义: 类修饰符 class 类名< T >
接口的定义:interface 接口名< T >
方法的定义:方法修饰符 < T > 返回值类型 方法名(参数){}

通配符"?":创建可重新赋值但不可修改其内容的泛型对象,用在方法参数上限制传入的类型实参。但泛型没使用通配符或其他限制类型参数时,< T >等价于< T extends Object>。

通配符和泛型的声明:泛型类名 obj = null;
// 当在程序中使用同一个泛型对象引用不同泛型对象时,需配合通配符一起使用。

反射

反射:可以读和修改字节码文件,可以操作代码片段(class文件),即可以操作字节码文件。相关包java.lang.reflect.*。
反射重要的类:

  • java.lang.Class:代表字节码,代表一个类。
  • java.lang.reflect.Method:代表字节码中的方法字节码。
  • java.lang.reflect.Constructor:代表字节码中的构造方法字节码。
  • java.lang.reflect.Field:代表字节码中的属性字节码。

获取类class的方式:

第一种:Class c = Class.forName(“带包名的完整类名”);
第二种:Class c = 对象.getClass();
第三种:Class c = 任何类型.class;

获取类路径中文件的绝对路径及资源绑定器的使用:

public static void main(String[] args) {
	// 获取类路径中文件的绝对路径
	String path = Thread.currentThread().getContextClassLoader().getResource("test.properties").getPath();
	// 资源绑定器,获取资源文件中的内容。application为文件名,其后缀必须是properties(是一个Map集合,key和value都是String类型)
	ResourceBundle bundle = ResourceBundle.getBundle("test");
	// 需资源文件中有对应的clsName,如clsName=lana
	String clsName = bundle.getString("clsName");
	System.out.println(clsName);
	System.out.println(path);
}
输出:lana
/D:/workSpace/java-demo/javase/target/classes/test.properties
序列化与反序列化

序列化Serialize:java对象转换为字节序列。将Java对象的状态保存下来的过程。解决对对象流进行操作时引发的问题。
反序列化DeSerialize:将字节序列恢复成Java对象。
注意点:参与序列化和反序列化的对象,必须实现Serializable接口(Serializable接口标识作用,会自动生成一个序列化版本号)。transient关键字表示游离的,不参与序列化,被static修饰的字段也不参与序列化。

常用类 Math类

Math类:主要提供数学上的一些运算方法,如:随机数、指数、三角函数等。
Math类的常数:

  • E:数学上的自然数e,大约为2.718281828459045
  • PI:圆周率π,大约为3.141592654

随机数设置:

随机数:(数值类型)(random() * (最大范围值 - 最小范围值 + 1) + 最小范围值);

数学类方法和说明:

方法说明
static 数值类型 max(数值类型 值, 数值类型 值)返回两个数值中的最大值
static 数值类型 min(数值类型 值, 数值类型 值)返回两个数值中的最小值
static double pow(double 底数, double 次方)返回底数的指定次方的值
static double sqrt(double 值)返回指定值的平方根
static double exp(double 值)返回以自然数E为底的指定次方的值
static double log(double 值)返回指定值的对数值
static double sin(double 弧度)返回三角函数的正弦值
static double cos(double 弧度)返回三角函数的余弦值
static double tan(double 弧度)返回三角函数的正切值
static double asin(double 弧度)返回三角函数的反正弦值
static double acos(double 弧度)返回三角函数的反余弦值
static double atan(double 弧度)返回三角函数的反正切值
static double toRadians(double 弧度)将弧度转换成角度
static double toDegrees(double 角度)将角度转换成弧度
static double ceil(double 值)取整到不小于指定值的最小整数
static double floor(double 值)取整到不大于指定值的最大整数
static double rint(double 值)返回双精度浮点数最接近的整数值
static int rount(float 值)返回单精度浮点数四舍五入后的整数值
static long rount(float 值)返回双精度浮点数四舍五入后的长整数值
static 数值类型 abs(数值类型 值)返回指定数值的绝对值
Number类

Number类:类型包装器类,其主要作用是将基本数据类型包装成对象类型。为抽象类,包含被定义为Final的派生类Byte、Double、Float、Integer、Long和Short,不能被重新定义。
Number类的常数:

常数说明
MAX_VALUE各个数据类型派生类的最大值
MIN_VALUE各个数据类型派生类的最小值
TYPE将数据类型以其基本数据类型的名称来表示
NaN在Double和Float类型中,表示数值除以0的情况
NEGATIVE_INFINITYDouble和Float类型中的负无穷大常数
POSTITIVE_INFINITYDouble和Float类型中的正无穷大常数

Number类及派生类的常用方法:

常用方法说明
int intValue()将Number类中的对象数值转换成int数值
long longValue()将Number类中的对象数值转换成long数值
float floatValue()将Number类中的对象数值转换成float数值
double doubleValue()将Number类中的对象数值转换成double数值
byte byteValue()将Number类中的对象数值转换成byte数值
short shortValue()将Number类中的对象数值转换成short数值
int compareTo(数据类型 值)比较两个数据类型的值,返回0表示相等,返回值小于0表示被比较的值小于参数值,返回值大于0表示被比较的值大于参数值
int equals(Object obj)比较两个对象是否相等
Vector类

Vector类:Vector向量与ArrayList类相似,都是使用索引(下标)值来存取元素,区别是Vector类可应用于多线程同步处理数据。
Vector类构造函数如下:

构造方法说明
Vector()创建一个空向量对象,默认容量为10
Vector(Collection 集合对象)以集合对象创建向量对象
Vector(int i)创建一个向量对象,容量为i
Vector(int i, int r)创建一个容量为i的向量对象,其每增加一个元素需增加的容量为r

Vector类常用方法如下:

常用方法说明
int capacity()返回向量对象的容量
void copyInto(Object[ ] obj)复制向量对象的元素给指定的数组对象obj,需确定数组有足够的容量
void setSize(int i)重新设置向量对象的容量
Object elementAt(int i)返回向量对象中指定下标i的元素
Object firstElement()返回向量对象中第一个元素
Object lastElement()返回向量对象中最后一个元素
void setElementAt(Object obj, int i)将向量对象中指定下标i的元素替换成新的对象obj
void removeElementAt(int i)删除向量对象中指定下标i的元素
void insertElementAt(Object obj, int i)将对象obj添加到向量对象中指定下标i的位置
void addElementAt(Object obj)将对象obj添加到向量对象末尾
boolean removeElement(Object obj)删除向量对象中的对象obj,成功则返回true
boolean containsAll(Collection 集合对象)判断向量对象中是否包含集合对象中的所有元素
boolean retainAll(Collection 集合对象)在向量对象中保留集合对象中的所有元素,删除其他元素
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号