java三

本文介绍了Java泛型的基本概念和使用方式,包括提供编译时类型安全、类型擦除的特点。通过示例展示了泛型类、泛型接口和泛型方法的定义与实例化,并探讨了通过反射绕过类型检查的可能性。此外,还列举了Math类中的一些常用数学操作方法,如求绝对值、最大值、最小值以及三角函数、指数运算等。
摘要由CSDN通过智能技术生成

3.6. Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。

List<Integer> list = new ArrayList<>(); list.add(12); //这里直接添加会报错 list.add("a"); Class<? extends List> clazz = list.getClass(); Method add = clazz.getDeclaredMethod("add", Object.class); //但是通过反射添加,是可以的 add.invoke(list, "kl"); System.out.println(list);

泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。

1.泛型类:

//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型 //在实例化泛型类时,必须指定T的具体类型 public class Generic<T>{ private T key; public Generic(T key) { this.key = key; } public T getKey(){ return key; } }

如何实例化泛型类:

Generic<Integer> genericInteger = new Generic<Integer>(123456);

2.泛型接口 :

public interface Generator<T> { public T method(); }

实现泛型接口,不指定类型:

class GeneratorImpl<T> implements Generator<T>{ @Override public T method() { return null; } }

实现泛型接口,指定类型:

class GeneratorImpl<T> implements Generator<String>{ @Override public String method() { return "hello"; } }

3.泛型方法 :

public static < E > void printArray( E[] inputArray ) { for ( E element : inputArray ){ System.out.printf( "%s ", element ); } System.out.println(); }

使用:

// 创建不同类型数组: Integer, Double 和 Character Integer[] intArray = { 1, 2, 3 }; String[] stringArray = { "Hello", "World" }; printArray( intArray ); printArray( stringArray );

常用的通配符为: T,E,K,V,?

  • ? 表示不确定的 java 类型
  • T (type) 表示具体的一个 java 类型
  • K V (key value) 分别代表 java 键值中的 Key Value
  • E (element) 代表 Element

    Math 常用类

    表 1 求最大值、最小值和绝对值的方法

    方法

    说明

    static int abs(int a)

    返回 a 的绝对值

    static long abs(long a)

    返回 a 的绝对值

    static float abs(float a)

    返回 a 的绝对值

    static double abs(double a)

    返回 a 的绝对值

    static int max(int x,int y)

    返回 x 和 y 中的最大值

    static double max(double x,double y)

    返回 x 和 y 中的最大值

    static long max(long x,long y)

    返回 x 和 y 中的最大值

    static float max(float x,float y)

    返回 x 和 y 中的最大值

    static int min(int x,int y)

    返回 x 和 y 中的最小值

    static long min(long x,long y)

    返回 x 和 y 中的最小值

    static double min(double x,double y)

    返回 x 和 y 中的最小值

    static float min(float x,float y)

    返回 x 和 y 中的最小值

    表 2 取整方法及其说明

    方法

    说明

    static double ceil(double a)

    返回大于或等于 a 的最小整数

    static double floor(double a)

    返回小于或等于 a 的最大整数

    static double rint(double a)

    返回最接近 a 的整数值,如果有两个同样接近的整数,则结果取偶数

    static int round(float a)

    四舍五入

    static long round(double a)

    四舍五入

    表 3 Math 类中包含的三角函数方法及其说明

    方法

    说明

    static double sin(double a)

    返回角的三角正弦值,参数以孤度为单位

    static double cos(double a)

    返回角的三角余弦值,参数以孤度为单位

    static double asin(double a)

    返回一个值的反正弦值,参数域在 [-1,1],值域在 [-PI/2,PI/2]

    static double acos(double a)

    返回一个值的反余弦值,参数域在 [-1,1],值域在 [0.0,PI]

    static double tan(double a)

    返回角的三角正切值,参数以弧度为单位

    static double atan(double a)

    返回一个值的反正切值,值域在 [-PI/2,PI/2]

    static double toDegrees(double angrad)

    将用孤度表示的角转换为近似相等的用角度表示的角

    static double toRadians(double angdeg)

    将用角度表示的角转换为近似相等的用弧度表示的角

    表4 指数的运算包括求方根、取对数及其求 n 次方的运算。

    方法

    说明

    static double exp(double a)

    返回 e 的 a 次幂

    static double pow(double a,double b)

    返回以 a 为底数,以 b 为指数的幂值

    static double sqrt(double a)

    返回 a 的平方根

    static double cbrt(double a)

    返回 a 的立方根

    static double log(double a)

    返回 a 的自然对数,即 lna 的值

    static double log10(double a)

    返回以 10 为底 a 的对数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值