常用的String类、正则表达式、Date类、Calendar 类、BigDecimal类

常用的String类:

public byte[] getBytes():把字符串转换成字节数组

public char[] toCharArray():将此字符串转换为一个新的字符数组。

static String valueOf(char[] data):将字符数组转化成字符串(原则上来说,该方法可以将任意类型都转化成字符串)

substring(int beginIndex,int endIndex) 返回一个新的字符串,它是此字符串的一个子字符串

public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

字符串的内容一旦被创建也就意味着无法进行改变,如果我们将它进行改变则会创建一个新的字符串对象

如果需要对字符串进行频繁的改变,我们就应该使用字符串缓冲区类

StringBuffer(字符串缓冲区类):线程安全的可变字符序列。

StringBuffer方法:

public int capacity():返回的是当前缓冲区的容量

public int length():返回的是一个具体的长度

增:

StringBuffer(“toobug”);

sb.append(“好啊”);

sb.insert(1, “笨笨的”);

删:

sb.delete(1,4); 从指定位置开始到指定位置结束的删除 结束长度为end-1

sb.deleteCharAt(5);根据索引位置删除指定字符

改:

sb.replace(0, 5, “JAVA好”);从指定索引开始,到指定索引结束,替换指定内容

sb.setCharAt(1, ‘好’);根据指定索引,替换字符内容

查:

sb.toString():打印出sb的字符串内容

sb.indexOf(“t”):查找该字符在字符中首次的索引位置

sb.substring(0, 3):从指定索引开始到指定索引结束,结束对应的字符串内容

1.String/StringBuffer/StringBuilder三个的区别?

a.String是一个不可变的字符序列,而StringBuffer/StringBuilder是可变的字符序列

b.StringBuffer是同步,所以效率低,但是数据是安全的,

   而StringBuilder不是同步的,所以他的效率更快,但是数据是不安全的

   

2.StringBuffer底层还是来维护一个数组,那么他和数组的区别是什么?

StringBuffer,是不是只能存储一个字符序列的内容?

而数组是可以存储多个类型的容器,但是必须是同一种数据类型

public boolean matches(String regex)

正则表达式:符合一定规则的字符串

正则表达式:语法

字符

x 字符 x

\ 反斜线字符

\t 制表符 (’\u0009’)

\n 新行(换行)符 (’\u000A’)

\r 回车符 (’\u000D’)

字符类

[abc] a、b 或 c(简单类)

[^abc] 除了abc,其余任意字符都允许使用

[a-zA-Z] 能包含a-z / A-Z范围内的字符

[0-9]能包含0-9的数据

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配) .

\d 数字:[0-9]

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]

边界匹配器

^ 行的开头

$ 行的结尾

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 上一个匹配的结尾

\Z 输入的结尾,仅用于最后的结束符(如果有的话)

\z 输入的结尾

Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次 [0-9]{4,14}

需求:我需要获取int的最大取值范围和最小取值范围

为了对基本数据类型提供更多的操作,Java为一种基本数据类型都提供了对应的包装类(包装类类型)

byte Btye

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean

Integer(int value)

构造一个新分配的 Integer 对象,它表示指定的 int 值。

Integer(String s)

构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。

注意:这里的内容必须是整数类型,而不能是字符串类型

JDK5的新特性:

自动装箱:把基本数据类型转换为包装数据类型

自动拆箱:把包装数据类型自动转换为基本数据类型

// Integer i = new Integer(100);//Integer i = Integer.valueOf(500); //自动装箱

Integer i = 500;

int x = i + 200; //int x = i.intValue() + 200;//自动拆箱

System.out.println(x);

Date:表示特定的瞬时时间,精确到毫秒

构造方法:

Date():根据当前默认的时间格式返回当前时间

Date(long date):根据给定的毫秒值来创建时间对象

getTime():获取时间以毫秒为单位

//将系统默认时间转换成自定义的模板格式

//创建时间对象

Date d = new Date();

//创建时间格式化对象,并且设定日期格式

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

//将指定的Date的对象进行模板格式化

String s = sdf.format(d);

System.out.println(s);

System.out.println("--------------------------------------");

//将模板格式,转换成系统默认时间

String string = “7-30 17:13:48”;

SimpleDateFormat sdf1 = new SimpleDateFormat(“MM-dd HH:mm:ss”);

Date d1 = sdf1.parse(string);

System.out.println(d1);

Calendar 类

Calendar rightNow = Calendar.getInstance(); //来获取子类对象

//获取年

int year = rightNow.get(Calendar.YEAR);

//获取月

int month = rightNow.get(Calendar.MONTH);

//获取日

int date = rightNow.get(Calendar.DATE);

System.out.println(year+“年”+(month+1)+“月”+date+“日”);//month需要+1

BigDecimal类

因为我们的CPU对浮点数运算无法进行精确,容易丢失精度,数据越广 精度丢失越大

如何解决?

BigDecimal bd1 = new BigDecimal(“0.09”);

BigDecimal bd2 = new BigDecimal(“0.01”);

//加

System.out.println(bd1.add(bd2));

//减

System.out.println(bd1.subtract(bd2));

//乘

System.out.println(bd1.multiply(bd2));

//除

System.out.println(bd1.divide(bd2));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值