Java常用类2

StringBuffer和StringBuilder

StringBuffer与StringBuilder类介绍

StringBuffer是String的对等类,提供了许多字符串功能。您可能知道,String表示长度固定、不可修改的字符序列。与之相对应,StringBuffer表示可增长、可写入的字符序列。StringBuffer允许在中间插入字符和子串,或在末尾追加字符和子串。StringBuffer能够自动增长,从而为这类添加操作准备空间,并且通常预先分配比实际所需更多的字符空间,以允许空间增长。

StringBuilder类是由JDK 5引入的,以增加Java的字符串处理能力,提供与StringBuffer相同的功能。

StringBuffer与StringBuilder的区别:

StringBuffer类是线程安全的,而StringBuilder则不是,即不保证其对象的同步性,在多线程环境中是不安全的。

StringBuilder在性能上要比StirngBuffer好一些。

StringBuffer类的构造方法

StringBuffer( )    //默认预留16个字符的空间

StringBuffer(int  size)  //size指定预留的字符空间

StringBuffer(String  str)  //额外预留16个字符的空间  abc+16

StringBuffer(CharSequence  chars)  //额外预留16个字符的空间

提示:

再次分配内存空间是很耗时的操作。此外,频繁分配空间会产生内存碎片。

StringBuffer类的常用方法

1.append ()

append()方法将各种其他类型数据的字符串表示形式连接到调用StringBuffer对象的末尾。该方法有多个重载版本,下面是其中的几个:

StringBuffer  append(String  str)

StringBuffer  append(int  num)

StringBuffer  append(Object  obj)

2.insert ()

在指定位置插入参数提供的内容,返回修改后的该StringBuffer对象引用。该方法有多个重载版本,下面是其中的几个:

StringBuffer  insert(int index, String str)

StringBuffer  insert(int index, char ch)

StringBuffer  insert(int index, Object obj)

3.StringBuffer  delete (int start,int end) 10    包含5   不包含10

删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用。

4.StringBuffer  deleteCharAt(int index)  8

移除指定位置的字符,返回修改后的该StringBuffer对象引用。

5.StringBuffer  reverse()

将字符序列逆序,返回修改后的该StringBuffer对象引用。

6.StringBuffer  setCharAt( (int index,char ch)   5   a

将指定索引处的字符设置为 ch,返回修改后的该StringBuffer对象引用。

public static void main(String[] args){

StringBuffer sb = new StringBuffer();

sb += “I”;

sb.append(“am”);

sb.append(true);

System.out.println(sb);

}

几点说明:

(1)StringBuffer对象不能使用 += 赋值

(2)注意使用StringBuffer的append()方法连接字符串与使用“+”运算符直接连接String对象的区别。

案例:StringBufferDemo

长度与容量的概念

长度是指StringBuffer中实际保存的字符的个数,容量是指已经分配的空间大小。

1.int  length()

获取StringBuffer对象的当前长度

2.void  setLength(int len)    50    20   6    50   10

设置StringBuffer对象中字符串的长度。当增加字符串的大小时,会向末尾添加空字符。如果调用setLength()时使用的值小于length()返回的当前值,则超出新长度的字符将丢失。

3.int capacity( )

获取StringBuffer对象的当前容量

4.void ensureCapacity(int minCapacity)

设置缓存的大小。minCapacity指定了缓存的最小尺寸。(出于效率考虑,可能会分配比minCapacity更大的缓存。)

扩容后的数组长度为字节数组定长*2 +2 ,扩容不够时直接扩容到最大(指定大小)。

Math类

常用方法

abs(a)返回绝对值

max(a,b)返回较大值

min(a,b)返回较小值

Random类

常用方法

nextInt(a)生成并返回0~a之间的整数,不包含a

Date类

Date类封装了当前日期和时间。位于java.util包。

(1)类构造方法

public Date()   //使用当前日期和时间初始化对象

public Date(long date) //参数date为自从1970年1月1日子时经历的毫秒数

(2)常用方法

long getTime()

返回从1970年1月1日午夜开始已经流逝毫秒数

void setTime(long time)

将日期和时间设置为time所指定的值,time是是自从1970年1月1日午夜开始已经流逝的毫秒数

String toString()

将调用Date对象转换成字符串并返回结果

(3)Date类示例

package com.bw;

import java.util.Date;

public class DateTest {

public static void main(String[] args) {

Date d = new Date();

System.out.println(d);

//System.out.println(d.toLocaleString());

long time1 = d.getTime();//1970-1-1 00:00:00 GMT  到现在的  总毫秒数

System.out.println(time1);

long time2 = System.currentTimeMillis();

System.out.println(time2);//1970-1-1 00:00:00 GMT  到现在的  总毫秒数

Date d2 = new Date(time2);

System.out.println(d2);

}

}

Calendar与GregorianCalendar类

        Calendar是抽象类,提供了一套方法将毫秒数形式的时间转换成大量有用的组分,例如年、月、日、小时、分和秒。

        GregorianCalendar是Calendar的具体实现,它实现了您熟悉的常规的格林尼治日历。Calendar类的getInstance()方法通常会返回一个使用默认地区和时区下的当前时间初始化的GregorianCalendar对象。

SimpleDateFormat类

      SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

1.字符串转日期  2008-07-10 19:20:00 要把它转成日期,可以用

sf.format(date)

2. 日期转字符串假如把今天的日期转成字符串可用 String str = sf.format(new Date());

3. 这个字符串内容的格式类似2008-07-10 19:20:00。

JDK1.8新增日期常量类

Jdk1.8新增三大日期常量类,与String类相同都是通过final来修饰,线程安全。

LocalDate:表示日期(年月日)

LocalTime :表示时间(时分秒)

LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张同学(恩师白云)

感谢您的打赏,我们一起进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值