JAVA学习七:常用类库

常用类库
1.泛型
概述:
泛型,即参数化类型,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后在使用/调用时传入具体的类型。

泛型的使用
注意:在编译之后程序会采取去泛型化的措施。
也就是说java中的泛型,只在编译阶段有效。
在编译过程中,正确检查泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型不会进入到运行时阶段。

作用:在上面声明
泛型类
public class ClassName{
private T data;
}
当无法确定类中某一个成员变量的类型时,可以使用泛型<字母>代替这个类型,然后用户在使用这个类时,需要确定这个变量类型。
Person p = new Person<>();
以上就是使用时的语法

泛型接口
在实现接口时,可以选择指定泛型类型,也可以选择不指定。

泛型方法
private static T 方法名(){}
public static void print(A a){
System.out.print(a);
}
调用时:print(“haha”);/print(123);根据传入参数不同改变方法的参数

2.java.util.Objects

3.java.lang.Math

Math.abs(num);求绝对值
Math.min(num1,mun2);求两者的较小值
Math.max();求较大值
Math.round(1.5);四舍五入
面试题Math.round(-100.5);得到是-100(四舍五入的入是变大一个)
Math.floor(3.5);求小于等于参数的最大整数
Math.ceil();求大于等于参数的最小整数

4.java.util.Arrays
用的多的:

Arrays.toString(arr);查看下标

Arrays.sort(arr);排序

Arrays.binarySearch(arr,5);二分查找(找5)

arr2 = Arrays.copyOf(arr1,15);扩容将arr1复制给arr2并将长度变成15

5.java.math.BigDecimal
概念:通过在控制台运行0.1+0.2,会发现float与double的运算误差。
所以要用BigDecimal类加以描述。

常用构造方法
public BigDecimal(String val){
}
常用方法:
add加 subtract减 multiply乘 divide除
调用就是用一个BIG…对象调用方法传入另一个对象。b3 = b1.add(b2);
double b4 = b3.doubleValue();再转成double的数据
6.java.util.Date
Date表示特定的时刻,精度为毫秒。

long l = new Date().getTime();
获取从格林威治历的当地时间,也就是1970年1月1日00:00:00。(北京时间)8:00:00
到现在经过的毫秒数。

构造方法:Date()无参构造方法,分配的是当前时间—此时此刻次毫秒。

Date(long date)指定一个long类型的,代表过去或未来的某个时间。

怎么比较两个Date类型的时间

Date date = new Date();

7.java.text.DateFormat
抽象类,无法直接使用。需要用子类实现。已知子类:SimpleDateFormat

作用:将日期格式化

SimpleDateFormat format = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm ss”);这样就创建了一个用于格式化日期的类。

//format:将date对象转换为字符串成
String text = format.format(date);

//parse:将一段字符串转换为date
date = format.parse(“2012年12月12日 12:12 12”);

date.getTime();这样可以获得当前时间的时间戳,13位的long数字。然后可以进行计算,比较等。

8.java.util.Calendar
这个也是抽象类,可以通过getInstance方法获取一个对象。
Calendar c1 = Calendar.getInstance();

//它把年月日时分秒这些信息都存在了一个数组里。
原理就是通过修改常量值修改它的数组达到修改日期的目的。
值得注意的是,通过常量修改,在数组中是从0开始的。
也就是0是显示的1月。

int year = c1.get(Calendar.YEAR);//获取当前日期的年

int day = c1.get(Calendar.DAY_OF_YEAR);//获取当前是一年中的第几天。

c1.set(Calendar.YEAR,2021);//设置这个对象的年

c1.add(Calendar.YEAR,1);//把当前对象的年+1

getTime();
获取日历时间表示的date值。
Date d = c1.getTime();

getActuaMaxmum();
获取某字段的最大值。
c1.getActuaMaxmum(Calendar.DAY_OF_MONTH);
获取当前对象的当前这个月的最大天数。

9.java.lang.System
System类中大多是静态方法,
可以调用gc()垃圾回收器。
也可以选择exit()终止虚拟机。0表示正常终止,非0表示非正常终止。

currentTimeMillis()可以获取当前时间戳,得到long长整形的数字。

arraycopy()可以复制数组。

10.String类(绝对重点)
String类表示字符串,Java中所有的字符串文字都是此类的实例。
字符串是不变的,它们的值在创建后无法更改。
字符串缓冲区支持可变字符串。因为String对象是不可变的,所以可以共享它们。例如String str1 = “abc”;String str2 = “abc”;
str1和str2指向同一块内存地址。所以str1==str2;
只要有new了,就会创建两个对象,就不是同一个地址了。

内存:字符串常量池
方法区,又称永久代(永久在内存中存储的内容)。
JDK1.8之后移除了永久代,用元空间取代,这时候,
字符串常量池还在堆,运行时常量池还在方法区,只不过方法区的实现从永久代变成元空间;

堆:
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的…
堆在逻辑上分为三部分:
新生代:刚创建的对象,会进行很快的gc垃圾回收,如果一个对象经过15次回收都没被回收。就会把它移进老年代。
老年代:↑
永久代:不进行gc—比如类,方法,常量,静态修饰的东西。

构造方法:
String();
String str = “”;//绝大多数使用
String(byte[] bytes);
//传入字节数组构造新的string
String(char[] value);
//传入char数组构造新的string
String(byte[] bytes,String charsetName);
//构造一个新的String由指定的字节的数组解码charset;

常用方法:
charAt(int index);通过传入下标获取这个下标上的char值
compareTo(String anotherString);比较两个字符串大小
contains(CharSequence cs);比较是否包含某字符
注意点1
String s1 = “a”;String s2 = “b”;String s3 = “c”;
s1 = s1+s2+s3;
内存中运行方式是:
首先走s1+s2.得到新的字符串ab,得到一个新的字符串内存地址。
然后把ab和s3拼接,得到一个新的字符串abc和新的内存。
最后把新的内存地址赋给s1.此时等于产生了两个常量池内存垃圾。
而且这个垃圾不会被gc回收,所以要避免+号拼接。
2.如果需要字符串拼接,那就不能用String类,使用另外两个类。
StringBuffer和StringBuilder跟String不同,是可变字符序列。

StringBuffer与StringBuilder使用方法一样,builder是线程不安全的实现,buffer是线程安全的实现。
构造器
StringBuffer();
构造一个字符串缓冲区(一个数组),其中没有字符,初始容量为16个字符。每次存字符串都存在这个数组里。
怎么拼:
先new StringBuffer,然后通过append()把所有的内容拼接在里面。
怎么用:
toString方法反转字符串。
StringBuffer sb = new StringBuffer();
sb.append(“1”);
sb.append(“2”);
sb.append(“3”);
String str = sb.toString();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值