常用类,枚举和注解,集合和泛型以及lambda表达式学习总结
常用类
1.string类
public int length()
public char charAt(int index):
//返回在指定index位置的字符。index从0开始
public boolean equals(Object anObject):
//比较两个字符串是否相等。相等返回true。否则返回false
public int compareTo(String anotherString)
public int indexOf(String s):
//返回s字符串在当前字符串中首次出现的位置。若没有,返回-1
public int indexOf(String s ,int startpoint):
//返回s字符串从当前字符串startpoint位置开始的,首次出现的位置。
public int lastIndexOf(String s):
//返回s字符串最后一次在当前字符串中出现的位置。若无,返回-1
public int lastIndexOf(String s ,int startpoint)
public boolean startsWith(String prefix):
//判断当前字符串是否以prefix开始。
public boolean endsWith(String suffix):
//判断当前字符串是否以suffix结束。
public boolean regionMatches(int firstStart,String other,int otherStart ,int length):
//判断当前字符串从firstStart开始的子串与另一个字符串other从otherStart开始,length长度的字串是否equals
public String substring(int startpoint)
public String substring(int start,int end):
//返回从start开始到end结束的一个左闭右开的子串。start可以从0开始的。
public String replace(char oldChar,char newChar)
public String replaceAll(String old,String new)
public String trim():
//去除当前字符串中首尾出现的空格,若有多个,就去除多个。
public String concat(String str):
//连接当前字符串与str
public String[] split(String regex):
//按照regex将当前字符串拆分,拆分为多个字符串,整体返回值为String[]
2、StringBuffer 类
java.lang.StringBuffer代表可变的字符序列,可对字符串内容进行增删,而String每次有新的字符串就会在字符串常量池里新建一个字符串。 StringBuffer是一个容器。
StringBuffer类有三个构造方法:
1.StringBuffer()初始容量为16的字符串缓冲区
2.StringBuffer(int size)构造指定容量的字符串缓冲区 3.StringBuffer(String
str)将内容初始化为指定字符串内容 3、StringBuilder 类
效率:StringBuilder>StringBuffer>String
日期类
1、java.lang.System类
System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。此方法适于计算时间差。
计算世界时间的主要标准有:
UTC(Universal Time Coordinated)
GMT(Greenwich Mean Time)
CST(Central Standard Time)
2、java.util.Date类
表示特定的瞬间,精确到毫秒
java.sql.Date类是其子类
构造方法: Date( )使用Date类的无参数构造方法创建的对象可以获取本地当前时间。 Date(long date)
常用方法:
getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
3、java.text.SimpleDateFormat类
易于国际化,默认的模式和语言环境创建对象
格式化:日期->文本 使用SimpleDateFormat的format方法
解析:文本->日期 使用SimpleDateFormat的parse方法
4.java.util.Calendar(日历)类
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法
使用Calendar.getInstance()方法
调用它的子类GregorianCalendar的构造器。
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
public void set(int field,int value)
public void add(int field,int amount)
public final Date getTime()
public final void setTime(Date date
Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。
- abs 绝对值
- acos,asin,atan,cos,sin,tan 三角函数
- sqrt 平方根
- pow(double a,double b) a的b次幂
- log 自然对数
- exp e为底指数
- max(double a,double b)
- min(double a,double b)
- random() 返回0.0到1.0的随机数
- long round(double a)
- double型数据a转换为long型(四舍五入)
- toDegrees(double angrad) 弧度—>角
- toRadians(double angdeg) 角度—>弧度
常用方法:
public BigInteger abs()
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger remainder(BigInteger val)
public BigInteger pow(int exponent)
public BigInteger[] divideAndRemainder(BigInteger val)
BigDecimal类
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持任何精度的定点数。
构造器:
public BigDecimal(double val)
public BigDecimal(String val)
常用方法:
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
集合
认识集合 开发应用程序时,如果想存储多个类型的数据可以使用数组来实现;但是使用数组存在一些明显的缺陷
1.数组长度固定不变,不能很好的适应元素数量动态变化的情况
2.可以通过数组名.length来获取数组的长度,却无法直接获取数组中实际存储的元素个数
3.数组采用在内存中分配连续空间的存储方式存储,根据元素信息查找时效率比较低,需要多次比较
List接口
Collection接口是最基本的集合接口,可以存储一组不唯一、无需的对象。
List接口正是继承自Collection接口
是一个有序集合,用户可以使用List接口中的元素,类似于数组中。List接口中允许存放重复元素,也就是说List可以存储一组有序、不唯一的对象。
改接口常用实现类有:ArrayList和LinkedList。
1.使用ArrayList类动态存储数据
-
ArrayList集合类:对数组进行封装,实现了长度可变的数组,而且和数组采用相同的存储方式,,在内存中分配连续的空间,它不等同于数组,
-
ArrayList集合中可以添加任何类型的数据,并且添加的数据类型都将转换成object类型,但是在数组中只能添加同意数据类型的数据。
-
在ArrayList集合中可以存储任何类型的对象,在编程中将接口的引用指向实现类的对象是Java实现多态的一种形式,也是软件开发中实现低耦合的方式之一。
-
ArrayList集合因为可以使用索引来直接获取元素,所以它的优点是遍历元素和随机访问元素的效率比较高。
2.使用LinkedList类动态存储数据
LinkedList类:它是接口的链接列表实现类。它支持实现所有List接口可选的列表的操作,并且允许元素值是任何数据,包括null。采用链表存储方式存储数据,优点在于插入、删除元素时效率比较高,但是LinkedList类的查找效率很低。
在Collection基础上增加的方法:
-
add():在列表的指定位置查出指定元素 addAll():将指定集合中的所有元素都插入到列表的指定位置
-
get():返回列表中指定位置的元素 indexOf():返回此列表中第一次出现的指定元素的索引;如不包含,返回-1
-
lastIndexOf():返回此列表中最后出现的指定元素的索引;如不包含,返回-1 listIterator():返回此列表的列表迭代器
-
listIterator(int index):返回此列表的列表迭代器,从列表的指定位置开始 remove():移除列表中指定位置的元素
-
set():用指定元素替换列表中指定位置的元素 subList(int fromIndex,int
-
toIndex):返回列表中[fromIndex,toIndex)之间的部分视图
Set接口
set接口概述:
set接口是Collection接口的另外一个常用子接口,Set接口描述的是一种比较简单的集合。集合中的对象并不按特定的方式排序,并且不能保存重复的对象,也就是说Set接口可以存储一组唯一、无序的对象。
Set接口常用的实现类有HashSet。
使用HashSet类动态存储数据,HashSet集合的特点如下:
-
集合内的元素是无序排列的
-
HashSet类是非线程安全的
-
允许集合元素值为null
Iterator接口
概述:此接口表示对集合进行迭代的迭代器。Iterator接口为集合而生,专门实现集合的遍历。此接口主要有如下两个方法:
- 1.hasNext():判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true。
- 2.next():访问要返回的下一个元素。 凡是由Collection接口派生而来的接口或者类,都实现了iterate()方法,iterate()方法返回一个Iterator对象。
Map接口
概述:Map接口存储一组成对的键(key)—值(value)对象,提供key到value的映射,通过key来检索。Map接口中的key不要求有序,不允许重复。value同样不要求有序,但允许重复。
使用HashMap类动态存储数据
HashMap类优点:查询指定元素效率高
Collection类
概述: Collection类是Java提供的一个集合操作工具类,它包含了大量的静态方法,用于实现对集合元素的排序、查找和替换等操作。
compareTo()方法被称为它的自然比较方法。此方法用于比较此对象与指定对象的排序,如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
compareTo()方法的定义语法格式如下:
int compareTo(Object obj);
其中:
1.参数:obj即要比较的对象
2.返回值:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象返回不同的值
实现此接口的对象列表(和数组)可以通过Collection.sort()方法(和ArrayList.sort()方法)进行自动排序。
替换集合元素(fill)
概述: 若有一个需求,需要把List集合中所有的元素都替换为相同的元素,则可以使用Collections类的静态方法fill()来实现。
泛型
定义语法格式:类1或者接口<类型实参>对象 = new类2<类型实参>();
例如:ArrayList< String > list = new ArrayList < String >();
解释:创建一个ArrayList集合,但规定该集合中存储的元素类型必须为String类型
泛型在集合中的应用:
- 1.List的泛型形式----->List< E >
- 2.ArrayList的泛型形式------->ArrayList< E > 在使用put()方法存储数据时,Map集合的key类型必须为String类型而value类型必须为自己创建的类型的数据而在遍历键集的for循环中,key的类型不再是Object而是String;同理value也不是Object而是Student,也不需要进行强制转换。
深入泛型
在学习如何使用泛型前,还需要了解一下两个重要概念。
1.参数化类型:参数化类型包含一个类或者接口,以及实际的类型参数列表。
2.类型变量:是一种非限定性标识符,用来指定类、接口或者方法的类型。
Lambda表达式
1.λ 希腊字母,英语名称 lambda
2.避免匿名内部类定义过多,只保留核心逻辑
3.实质属于函数式编程
eg:
//1.匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
//2.用lambda简化
like = () -> {
System.out.println("I like lambda5");
};
感想:这一阶段学习知识点较多,容易混淆,需要阶段性回顾总结。