Java常用类库

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、泛型

泛型:类型不确定,即“参数化类型”。就是将类型由原来的具体的类型参数化,类型也可以定义成参数形式(类型形参)。只在使用/调用时传入具体的类型(类型实参)。

1.1使用

1.1.1泛型类

public class ClassName<T>{
	private T data;
	public T getData(){
		return data;
	}
	public void setData(T data){
		this.data=data;
	}
}

1.1.2泛型接口

public interface IntercaceName<T>{
	T getData();
}

在实现接口时,可以选择指定泛型类型,也可以选择不指定,如下:
注意两种写法

指定类型:

public class Interface1 implements IntercaceName<String>{
	private String text;
	@Override
	public String getData(){
		return text;
	}
}

不指定类型:

public class Interface1<T> implements IntercaceName<T>{
	private T data;
	@Override
	public T getData(){
		return data;
	}
}

1.1.3泛型方法:

private static <T> T 方法名(T a, T b){}

具体:
public class Demo{
	public static void main(String[] args){
		print(123123);	//此时会自动装箱成Interger
	}
	public static <A> void print(A a){
		System.out.println(a);
	}
}

1.1.4泛型限制类型

在使用泛型时,可以指定泛型的限定区域,
例如:
- 必须是某某类的子类, 或某某接口的实现类,格式如下:

<T extends 类或接口1 & 接口2>

具体例子 :

public class Demo{
	public static void main(String[] args){
		//Plate<String> p = new Plate<>();   //当下面限制了泛型类型时,只能在Plate中传入Apple,传入String会报错
		//p.data="String";
		Plate<Apple> p = new Plate<>();
	}
}
interface Fruit{}
class Apple implements Fruit{}
class Plate<T extends Fruit>{
	T data;
}

1.1.5泛型中的通配符——“ ?”

类型通配符是使用 ?代替方法具体的类型实参。

  1. <? extends Parent> 指定了泛型类型的上界
  2. <? super Child> 指定了泛型类型的下界
  3. <?> 指定了没有限制的泛型类型
Plate<? extends Fruit> p = new Plate<Apple>();

作用:
1.提高代码复用率
2.泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

二、常用类库

1.java.util.Objects

类Objects是Java中所有类层次的基类(顶级父类)
Objects类下包含很多方法,下面主要对equals()、 isNull()进行说明

1.1equals()方法

public class Demo{
	public static void main(String[] args){
		Person p1=null;
		Person p2= new Person();
		//System.out.println(p1.equals(p2));	//会抛出空指针异常
		System.out.println(Objects.equals(p1,p2));	//当通过Objects调用equals()比较两个对象,可以避免有空指针,原因是有如下源码
	}
}
//源码:
public static boolean equals(Object a, Object b){
	return (a==b) || (a != null && a.equals(b));
}
//当a为空时,直接返回false,避免了空指针异常

1.2isNull()、nonNull()方法

isNull()判断对象是否为空,若为空则返回True、
nonNull()判断对象是否不为空,若不为空则返回True。

public static boolean isNull(Object obj){
	return obj == null;
}

2.java.lang.Math

public class Demo{
	public static void main(String[] args){
		System.out.println(Math.abs(-100));	
		System.out.println(Math.min(100,200));
		System.out.println(Math.max(100,200));
		System.out.println(Math.round(100.55);//四舍五入函数,输出101
		System.out.println(Math.round(-100.5);//四舍五入函数,输出-100
		//返回小于等于参数的最大整数
		System.out.println(Math.floor(3.5);	//输出3.0
		System.out.println(Math.floor(-3.5);//输出-4.0
		//返回大于等于参数的最大整数
		System.out.println(Math.ceil(3.5);	//输出4.0
		System.out.println(Math.ceil(-3.5);	//输出-3.0
	}
}

3.java.util.Arrays

该类包含用于操作数组的各种方法(例如排序和搜索),此类还包含一个静态工厂,允许将数组视为列表。
Arrays类下面包含的部分方法如下:可以通过二分查找byte数组元素等(binarySearch)
在这里插入图片描述
也可用于比较不同类型的数组(compare):
在这里插入图片描述
用于对数组进行排序:(Sort)
在这里插入图片描述
还可以把数组元素变为String类型:(toString)
在这里插入图片描述

用copyof实现数组的动态扩容,(扩容原理:当原先数组大小不够时,先创建一个新的数组,然后复制给原来的数组对象)
在这里插入图片描述

public class Demo{
	public static void main(String[] args){
		int[] arr = {8,1,2,3,4,5,6,7};
		System.out.println(arr);	//输出数组地址I@7c30a502
		System.out.println(Arrays.toString(arr));//输出[8,1,2,3,4,5,6,7]
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));//输出[1,2,3,4,5,6,7,8]
		System.out.println(Arrays.binarySearch(arr,6));//查找数字6在数组中的下标,输出5
		System.out.println(arr.length);	//输出数组长度为8
		arr= Arrays.copyof(arr, newLength:15);//对数组扩容,新长度为15
		System.out.println(arr.length);	//输出15
	}
}

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

4 java.math.BigDecimal

该类专用于进行算数运算,可以解决小数的误差问题

通过在控制台运行0.1+0.2,会发现float和double的运算误差
由于float类型和double类型在运行时可能会有误差,为了实现精确运算则需要借助java.math.BigDecimal类加以描述

常用构造方法

public BigDecimal(String val){
}

常用方法

1.public BigDecimal add(BigDecimal augend);	加法运算
2.public BigDecimal subtract(BigDecimal augend);	减法运算
3.public BigDecimal muliply(BigDecimal augend);	乘法运算
4.public BigDecimal divide(BigDecimal augend);	除法运算

5java.util.Date

Class Date
long getTime():返回此Date对象表示的1970年1月1日00:00:00GMT以来的毫秒数

public static void main(String[] args){
	//创建一个当前时间的Date
	Date date=new Date();
	//
	System.out.println(date.toString());
}

6. java.text.DataFormat

该类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化和分析日期或时间。
抽象类无法直接使用,应该用其子类SimpleDateFormat

y:年 M:月 d:日
H:时 m:分 s:秒
SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss");
//将date对象,转换为字符串(yyyy-MM-dd HH:mm ss)
String text = format.format(new Date());
//将yyyy-MM-dd HH:mm ss日期字符串转换为date 对象
Date date=format.parse("2021-12-12 12:12 12");	//	将字符串解析为时间

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值