Java常用类

19 篇文章 1 订阅

一、字符串相关类:String

1.String的特性

1.String类:代表字符串。java中的所有字符串字面值(如:"abc";
2.String是一个final类,代表不可变的字符序列。
3.字符串是常量,用双引号引起来表示。他们的值意境创建不得更改;
4.String对象的字符内容是存储在一个字符数组value[]中的。
public final class String implements Serializable, Comparable<String>, CharSequence {
    private final char[] value;
    private int hash;
    private static final long serialVersionUID = -6849794470754667710L;
    private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
    public static final Comparator<String> CASE_INSENSITIVE_ORDER = new String.CaseInsensitiveComparator();

    public String() {
        this.value = "".value;
    }

    public String(String var1) {
        this.value = var1.value;
        this.hash = var1.hash;
    }

5.字符串常量存储在字符串常量池中,目的是共享
6.字符串非常量对象存储在堆中

结论:

1.常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的常量;
2.只要其中有一个是变量,结果就在堆中;
3.如果拼接的结果调用intern()方法,返回值在常量池中。

2、String使用陷阱

1.String s1 = “a”;

在字符串常量池中创建了一个字面量为a的字符串;

s1 = s1+“b”;

说明:实际上原来的“a”字符串对象已经丢弃了,现在在堆空间中产生了一个字符串s1+"b"(也就是"ab")。
如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的
操作放到循环中,会极大影响程序的性能。

String s2 = “ab”;

说明:直接在字符串常量池中创建一个字面量为"ab"的字符串。

String s3 = “a” + “b”;

说明:s3指向字符串常量池中已经创建的"ab"的字符串。

String s4 = s1.intern();

说明:堆空间的s1对象在调用intern()之后,会将常量池中已经存在的"ab"字符串赋值给s4。

3、String常用方法1

1.int length():返回字符串长度
2.char charAt(int index):返回某索引处的字符
3.boolean isEmpty():判断是否为空字符串
4.String toLowerCase():字符串转为小写
5.String toUpperCase():字符串转为大写
6.String trim():返回字符串的副本,忽略前部空白和尾部空白
7.boolean equals(Object object):比较字符串的内容是否相同
8.boolean equalsIgnoreCase(String anotherString):忽略字符串大小写,比较内容是否相同
9.String concat(String str):将指定字符串连接到此字符串的结尾  等价于'+'
10.int compareTo(String anotherString):比较两个字符串的大小
11.String subString(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串;
12.String subString(int beginIndex,int endIndex):返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。

4、String常用方法2

1.boolean endsWith(String suffix):判断字符串是否以指定的后缀结束
2.boolean startsWith(String prefix):判断字符串是否以指定的前缀开始
3.boolean startsWith(String prefix,int toffset):测试此字符串从指定索引开始的字符串是否以指定前缀开始
4.boolean contains(CharSequence s):当且仅当字符串包含指定的char值序列时,返回true
5.int indexOf(String str):返回指定字符串在此字符串中第一次出现的索引
6.int indexOf(String str,int fromIndex):返回指定字符串在此字符串中第一次出现的索引,从指定的索引开始
7.int lastIndexOf(String str):返回指定子字符串在此字符串中最后边出现的索引;
8.int lastIndexOf(String str,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
注:indexOf和lastIndexOf方法如果未找到都是返回-1

5、String常用方法3

1.String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的;
2.String replace(CharSequence target, CharSequence replacement):使用指定的字面值序列替换此字符串所有匹配字面值目标序列的子字符串;
3.String replace(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串;
4.String replaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串;
5.boolean matches(String regex):告知此字符串是否匹配给定的正则表达式;
6.String[] split(String regex):根据给定正则表达式的匹配拆分此字符串;
7.String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中(limit代表String数组的数量)

6.String与字符数组转换

字符数组–>字符串

1.String类的构造器:String(char [])String(char[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象

字符串–>字符数组

1.public char[] toCharArray():将字符串中的全部字符存放在一个字符数组中的方法
2.public void getChars(int srcBin,int srcEnd,char[] det,int dstBegin):提供了将指定索引范围内的字符串放到数组的方法

7、String与字节数组

字节数组–>字节数组

1.public byte[] getBytes():使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中
2.public byte[] getBytes(String charsetName):使用指定的字符集将此String编码byte序列,并将结果存储到新的byte数组中

二、字符串相关的类:StringBuffer

1.StringBuffer

1.java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新的对象
2.很多方法与String相同
3.作为参数传递时,方法内部可以改变值
4.StringBuffer类不同于String,其对象必须使用构造器生成。
	有三个构造器:
		1.StringBuffer():初始容量为16的字符串缓冲区。
		2.StringBuffer(int size):构造指定容量的字符串缓冲区
		3.StringBuffer(Stringsize):将内容初始化为指定字符串内容
		

2.StringBuffer常用方法

1.StringBuffer append(xxx):提供很多的append()方法,用于进行字符串拼接
2.StringBuffer delete(int start,int end):删除指定位置内容;
3.StringBuffer replace(int start,int end,String str):[start,end]替换成指定字符串
4.StringBuffer insert(int offset,xxx)在指定位置插入xxx;
5.StringBuffer reverse():把当前字符序列逆转
6.当append与insert时,把当前字符序列逆转;
7.public int indexOf(String str);
8.public String substring(int start,int end);
9.public int length();
10.public char charAt(int n);
11.public void setCharAt(int n,char ch);

三、字符串相关类:StringBuilder

1.StringBuilder类特性

1.StringBuilder和StringBuffer非常类似,军代表可变的字符序列,而且提供相关功能的方法也相同
2.面试题:对比StringStringBufferStringBuilder
	String:不可变字符序列;
	StringBuffer:可变字符序列。效率低、线程安全
	StringBuilder:可变字符序列、效率高、线程不安全
注意:作为参数传递的话,方法内部String不会改变其值,StringBufferStringBuilder会改变其值

四、JDK8之前日期时间API

1、java.lang.System类

1.System类提供的public static currentTimeMills()用来返回当前时间与197011000秒之间以毫秒为单位的时间差。此方法适用于计算时间差
	UTC(Coordinated Universal Time)
	GMT(Greenwich Mean Time)
	CST(Central Standard Time)

2、java.util.Date

1.表示特定的瞬间,精确到毫秒

构造器:

1.Date():使用无参构造器创建的对象可以获取本地当前时间。
2.Date(long date)

常用方法

1.getTime():返回自197011000秒 GMT以来此Date对象表示的毫秒数
2.toString():将此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy 其中:dow时一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
3。很多方法已经过时

3.java.text.SimpleDateFormat类

1.Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类使用一种不与语言环境相关的方式来格式化和解析日期的具体类
2.允许进行格式化:日期-->文本、解析:文本-->日期
3.格式化:
	SimpleDateFormat():默认的模式和语言环境创建对象。
	public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象
	public String format(Date date):方法格式化事件对象date
4.解析:
	public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期

4、java.util.Calendar(日历)类

1.Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
2.使用Calendar的实例方法:
	使用Calendar.getIntance()方法。
	调用它的子类GregorianCalendar的构造器。
3. 一个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)
4. 注意: 
	获取月份时:一月是0,二月是1,以此类推,12月是11
	获取星期时:周日是1,周二是2 , ……周六是7

五、JDK8中的日期时间API

1.新时间日期API

1.第三次引入的API是成功的,并且Java 8中引入的java.time.API已经纠正了过去的缺陷,将来很长时间内,都会为我们服务。
2.java8吸收了Joda-Time的精华,以一个新的开始为java创建优秀的API。新的java.time中包含本地日期LocalDate,本地时间LocaTime,本地日期时间LocalDateTime,时区ZoneDateTime和持续时间Duration
			java.time-包含值对象的基础包
			java.time.chrono-提供不同日历系统的访问
			java.time.format-格式化和解析时间和日期
			java.time.temporal-包含底层框架
			java.time.zone-包含时区支持的类

2.LocalDate,LocalTime,LocalDateTime

LocalDate,LocalTime,LocalDateTime类时其中较重要的几个类,它们的实例是不可变的对象。分别表示使用ISO日历系统的日期,时间,日期和时间。提供了简单的本地日期和时间,并不包含当前的时间信息,也不包含与时区相关的信息。
			LocalDate代表IOS格式(yyyy-MM-dd)的日期;
			LocalTime代表时间(HH-mm-ss)
			LocalDateTime表示日期和时间  最常用
1.now():获取当前默认时区的时间
2.of():根据指定日期/时间创建对象
3.getDayOfMonth()/getDayogYear():获得月份天数(1-31)年份天数(1-366)
4.getDayOfWeek():获得星期几(返回DayOfWeek枚举值)
5.getMonth():获得月份,返回Month枚举值
6.getMonthValue()/getYear():获得月份(1-12)/获得年份
7.getHours()/getMinute()/getSecond():获得当前对象对应的小时,分钟,秒
8.withDayOfMonth()/withDayOfYear()/withMonth()/withYear():将月份天数、年份天数,月份、年份修改为指定的值并返回新的对象
9.pliusDays()/plusWeeks()/plusMonths/plusYears()/plusHours():向当前对象添加几天、几周、几个月、几年、几小时
10.minusMonths()/minusWeeks()/MinusDays()/minusYears()/minusHours():从当前对象减去几月、几周、几天、几年、几小时

3、格式化与解析日期或时间
java.time.format.DateTimeFormatter类:该类提供了三种格式化方法:

1.预定义的标准格式(ISO)
2.本地化相关的格式。如:ofLocalizeDateTime(FormatStyle.LONG)
3.自定义格式,如:ofPattern("yyyy-MM-dd HH-mm-ss")

相关方法:

1.ofPattern(String pattern):静态方法,返回指定格式的DateTimeFormatter
2.format():格式化一个日期、时间、返回字符串
3.parse():将指定格式的字符串解析为时间、日期

六、Java比较器

1、说明

在Java中经常会涉及到对象数组的排序问题,也就会涉及到对象之间的比较问题
Java实现对象排序的方式有两种:
	自然排序:java.lang.Comparable
	定制排序:java.util.Comparator

2、方式一

1.Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序称为自然排序。
2.实现Comparable的类必须实现compareTo(Object object)方法,两个对象通过compareTo()方法的返回值比较大小,如果当前对象this大于形参对象,返回正整数;否则返回负整数;若两个对象相等,则返回0;
3.实现Comparable接口的对象列表(数组)可以通过Collection.sort或Arrays.sort进行自动排序,实现此接口的对象可以用作有序映射中的键或有序集合中元素,无需指定比较器。
4.对于类C的每一个e1和e2来说,当且仅当e1.compareTo(e2)==0与e1.compareTo(e2)具有相同的boolean值时,类C的自然排序才叫做与equals一直。建议最好使自然排序与equals一致。
5.Comparable的典型实现(默认都是从小到大排序):
	1.String:按照字符串中字符的Unicode值进行比较
	2.Character:按照字符的Unicode值进行比较
	3.数值类型对应的包装类以及BigInteger、BigDecimal:按照它们对应的数值大小比较
	4.Boolean:true对应的包装类实例大于false对应的包装类实例
	5.Date、Time等:未来的日期时间比过去的日期时间大

3、方式二:定制排序:java.util.Comparator

1.当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,可以考虑用Comparator的对象来排序,强行对多个对象进行整体排序比较。
2.重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2;如果返回0表示相等,返回负整数,表示o1小于o2.
3.可以将Comparator传递给sort()方法(如Collections.sort或Arrays.sort),从而允许在排序顺序上实现精确控制。
4.还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序

七.System类

1、说明

1.System类代表系统,系统级的很多属性和控制方法都放置在该类内部。该类位于java.lang包
2.由于该类的构造器时private的,所以无法创建该类的对象,也就是无法实例化此类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
3.成员变量
		System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入)、标准输出流(显示器)和标准错误输出流(显示器)。
4.成员方法
		1.native long currentTimeMillis():
			该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1日0时0分0秒所差的毫秒数
		2.void exit(int status)
			该方法的作用时退出程序,其中status的值为0代表正常退出,非零代表异常退出,使用该方法可以在图形界面编程中实现程序的退出功能等。
		3.void gc():
			该方法的作用是请求系统进行垃圾回收。至于系统是否回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况
		4.String getProperty(String key)
			该方法的作用是获得系统中属性名为key的属性对应的值,系统中常见的属性以及属性的作用,如下表所示:
			

八、Math类

java.lang.Math提供了一系列静态方法用于科学计算,其方法的参数和返回值类型一般为double型

1.abs 绝对值
2.acos,asin,atan,cos,sin,tan 三角函数
3.sqrt 平方根
4.pow(double a,double b) a的b次幂
5.log 自然对数
6.exp e为底指数
7.max min 最大最小值
8.random() 返回0.0到1.0的随机数
9.long round(double a) double型数据a转换为long型(四舍五入)
10.toDegrees(double angrad) 弧度->角度
11.toRadians(double angdeg) 角度->弧度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值