StringBuilder、正则表达式、Object类、包装类常用方法以及自动拆箱

StringBuiler

由于字符串不支持频繁修改 ,设计了字符串工具类,内部维护一个可变的char数组,内存开销少,运行效率高,提供了基础的修改字符串操作,提供了增删改查。

1.追加字符串

StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb.append(" World"));`

2.将StringBuiler转化为String

   String s= sb.toString();

3.修改操作

 sb.replace(0,5,"Hi");

也可以替换比原先长的字符串

4.删除操作

  sb.delete(0,2);

5.插入操作

sb.insert(0,"Hi");

6.翻转字符串

sb.reverse()

StringBuffer和StringBuilder的区别主要是StringBuffer是线程安全的,可并发处理,性能稍慢,而StringBuilder是非线程安全的 ,不可并发处理,性能稍快。

正则表达式

[abc] 可以是其中任意一个字符
[^abc] 除了a、b、c的任意字符
[a-z]a、b、c到z的任意一个字符
[a-zA-Z0-9]表示a-z,A-Z,0-9的任意一个字符
&&表示与的关系
数量词
X?表示0个或者一个X
X*表示0个或者任意个X
X+表示大于一个X
X{n}表示 n个X
X{n,}表示n个到任意个X
X{n,m}表示n个到m个X
分组

()内可以加|表示或者的意思

split()

字符串的split()方法,默认是拆分字符串,如果字符串开始为可拆分内容,会首先拆出一个空字符串,如果遇到了两个可拆分内容时候,他们中间会拆出一个空字符串,但是如果默认连续出现可拆分内容,那么之间拆分出的所有空字符串就会被忽略。
重载的split()方法

split(“拆分内容”,limit(拆分项的数量)

当拆分项不足的时候则保留 最多可拆分项(包括原本 最后舍弃的空串)
当limit为负数时候应该应拆尽拆,能拆分出多少就保留多少(包括最后本应该舍弃的空字符串)

 String str="=1==2=3=4=5=6=======";

给定的字符串如果为上述字符串,则切出的结果应该是[,1,2,3,4,5,6]
但如果后面是下面的字符串

 String str="=1==2=3=4=5=6=======7";

则结果应该是[,1,2,3,4,5,6,7]

relpaceall()

str.relaceAll("正则表达式","要替换的内容")

matches(r1)

判断字符串是否符合正则标准

Object

什么是Object?
在java的类继承结构中,java.lang.object类位于最顶端,如果定义一个类时,没有使用extends声明其超类,则默认是Object,Obeject类的引用变量可以指向所有类型。
1.clone方法

保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

2.getClass方法

final方法,获得运行时类型。

3.toString方法

该方法用得比较多,一般子类都有覆盖。

4.finalize方法

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

5.equals方法

equals方法

比较对象的虚地址,但是可以在类中被重写。

如:String类重写了,两个相同值的String对象相比较为 true;

String str=new String(“123”);

String str1=new String(“123”);

System.out.println(str.equals(str1));à打印为true.

“==”

比较的是内存中的虚地址

 String str=new String(“123”);

 String str1=new String(“123”);

 System.out.println(str==str1);à打印为false。

6.hashCode方法

获取对象的哈希码值,为16进制

equals方法与hashCode方法关系

如果两个对象使用equals比较返回true,那么它们的hashCode值一定要相同。

如果两个对象equals比较返回false,那么它们的hashCode值不一定不同,覆盖equals,往往需要覆盖hashCode,可以使用Eclipse自动生成,保证equals返回true,则hashCode相同;equals返回false,则hashCode不同。在Set集合部分有实际应用。

7.wait方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

(1)其他线程调用了该对象的notify方法。

(2)其他线程调用了该对象的notifyAll方法。

(3)其他线程调用了interrupt中断该线程。

(4)时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8.notify方法

该方法唤醒在该对象上等待的某个线程。

9.notifyAll方法

该方法唤醒在该对象上等待的所有线程。

要注意的是equals()和==的区别,==用于比较变量的值,可以应用于任何类型,如果应用的是基本类型则实际比较的是值得大小,如果应用的是引用类型则比较的是地址值是否相同。判断两个对象是否为同一个对象。(指向同一个对象)。equals默认比较的也是地址值,如果重写之后可以比较内容是否相同。

包装类以及自动拆箱

包装类概述,在进行类型转换的范畴之中他有一种特殊的转换,将int这种基本数据类型转化为引用类型。所有基本类型都能转化为一种包装类型。

基本类型包装类型
shortShort
intInteger
byteByte
longLong
charCharactor
floatFloat
doubleDouble
booelanBoolean

上述包装类型的超类都是java.long.Number类。Integer提供了一些常量比如最大的int值可以通过Integer.MAX_VALUE.以及Integer的静态方法Integer.parseInt用于将字符串转化为Int。
在jdk5时候引入了自动拆箱和自动装箱包装,如下述代码都是正确的

Integer a=100;
Integer b=200
Integer c=a+b;
Double d=c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值