提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、泛型
泛型:类型不确定,即“参数化类型”。就是将类型由原来的具体的类型参数化,类型也可以定义成参数形式(类型形参)。只在使用/调用时传入具体的类型(类型实参)。
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泛型中的通配符——“ ?”
类型通配符是使用 ?代替方法具体的类型实参。
- <? extends Parent> 指定了泛型类型的上界
- <? super Child> 指定了泛型类型的下界
- <?> 指定了没有限制的泛型类型
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提供了大量能使我们快速便捷地处理数据的函数和方法。