By CaesarChang
~关注我 带你看更多精品知识
!需要大量记忆
泛型
就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定 义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
定义一个泛型类:(最多使用)
public class ClassName<T>{
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
} }
使用的话 ClassName<(要传入的类型 像String Integer)> c=new ClassName();
泛型接口:
泛型方法:
泛型限制类型
1. 在使用泛型时, 可以指定泛型的限定区域 , - 例如: 必须是某某类的子类或 某某接口的实现类,格式:
<T extends 类 或 接口1 & 接口2> 一定是extends
泛型中的通配符 ?
类型通配符是使用 ?代替方法具体的类型实参。
1 <? extends Parent>指定了泛型类型的上届
2 <? super child>指定了泛型类型的下届
3<?> 指定了没有限制的泛型类型
作用:
1、 提高代码复用率
2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)
注意:
java中的泛型只在编译阶段有效,不会进入运行时段(已经给定类型)
Java中 Object 与 Objects 的区别与联系
类Object 是每个类的超类。Objects 是 Object 类的子类。Java中的所有类最终都继承于 Object 。
Objects 是工具类,用于封装一些平时使用频率很高或容易出错的操作,这些操作形成了 Objects 的各个方法。
Objects
Objects.equals
Objects.equals(obj1,obj2)
isNull
boolean isNull(Object obj)
- int compare(T a, T b, Comparator c)
如果参数相同,则返回0,否则返回c.compare(a,b)。因此,如果两个参数都为null,则返回0。 - System.out.println(Objects.compare(1, 2, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}));
int hash(Object... values)
为所有指定的对象生成哈希码。它可以用于计算对象的哈希码,该哈希码基于多个实例字段
int hashCode(Object o)
返回指定对象的哈希码值。如果参数为null,则返回0
String toString(Object o)
如果参数为null,则toString()方法返回一个“null”字符串
T requireNonNull(T obj)
T requireNonNull(T obj, String message)
检查参数是否为null。如果参数为null,它会抛出一个NullPointerException异常。
第二个版本可以指定 当参数为null时抛出的NullPointerException的消息。
Math:
Math.abs(-10) 绝对值
*Math.sqrt(X)//计算平方根
Math.cbrt(X)//计算立方根
Math.pow(a, b)//计算a的b次方
Math.max( , );//计算最大值
*Math.min( , );//计算最小值
Math.ceil(X) 接近此数的大的整数的值
Math.floor(X) 接近此数的小的整数的值
Math.random() [0,1)
Math.round(X) round 四舍五入,float时返回int值,double时返回long值
Arrays:
binarySearch
使用前提:
数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置
Arrays.binarySearch(arr, 20)
填充数组:fill
int []arr = new int[5];
Arrays.fill(arr, 2);
结果是:2 2 2 2 2
sort
Arrays.sort(arr);
比较数组元素是否相等:equals 返回值为boolean
Arrays.equals重写了equals,所以,这里能比较元素是否相等。
Arrays.equals(arr1,arr2)
截取数组:copeOf和copeOfRange
int []arr1 = Arrays.copyOf(arr, 3); //前三个元素 也可用于动态扩容
int []arr1 = Arrays.copyOfRange(arr,1,3);//[1,3)
BigDecimal
double中的0.1其实是0.1000000000000000055511151231257827021181583404541015625,若是需要精确计算的结果,则必须使用BigDecimal类来操作。用来对超过16位有效位的数进行精确的运算
初始化:
- BigDecimal(int)
创建一个具有参数所指定整数值的对象 - BigDecimal(double)
创建一个具有参数所指定双精度值的对象 - BigDecimal(long)
创建一个具有参数所指定长整数值的对象 - BigDecimal(String)
创建一个具有参数所指定以字符串表示的数值的对象 - 例如: BigDecimal a =new BigDecimal(0.1);
常用方法:
- add(BigDecimal)
BigDecimal对象中的值相加,返回BigDecimal对象 - subtract(BigDecimal)
BigDecimal对象中的值相减,返回BigDecimal对象 - multiply(BigDecimal)
BigDecimal对象中的值相乘,返回BigDecimal对象 - divide(BigDecimal)
BigDecimal对象中的值相除,返回BigDecimal对象 - toString()
将BigDecimal对象中的值转换成字符串 - doubleValue()
将BigDecimal对象中的值转换成双精度数 - floatValue()
将BigDecimal对象中的值转换成单精度数 - longValue()
将BigDecimal对象中的值转换成长整数 - intValue()
将BigDecimal对象中的值转换成整数 - 例如BigDecimal a =new BigDecimal(0.1); int i = a.intValue();
Date
DateFormat
DateFormat其本身是一个抽象类,SimpleDateFormat 类是DateFormat类的子类,一般情况下来讲DateFormat类很少会直接使用,而都使用SimpleDateFormat类完成
|
将Date格式化为日期时间字符串。 |
|
从给定字符串的开头解析文本以生成日期。 |
例如:
Calendar(日历类):
Calendar不能被new 只可以调用getInstance()方法
System
1、System.arraycopy(a,b,c,d,e);
起始位置,c是复制到的数组,d是复制到这个数组的起始位置,e是复制的长度
System.currentTimeMillis();
返回毫秒数,这个就比较简单了,和Date类中的getTime方法一样。
System.gc()
可用于垃圾回收
System.exit(1) 或 System.exit(0)。
java中程序退出 0代表正常退出 其他异常退出 同时有了它 finally 可以不执行 直接结束
String(绝对重点)
string类是不可以变序列
String不变的性质是因为每次都从String 池里面取,如果有则直接用,否则创建新的放入。
字符串长度char charAt(int index)
返回指定索引处的 char 值。