JavaSE的三个特殊类(1)——String类、Object类、包装类

在学习JavaSE的过程中String类、Object类、包装类是必学的知识点。我在下边总结一下基本的知识点。

1、String类

    String类在所有项目开发之中都会使用到,而且用到的还比较多。

    在C语言中,字符串的表示一般是用char* 加‘\0‘结尾来表示的字符串的。在Java这种强类型的语言中单独定义的String类型来表示字符类型。

1.1、String类的两种实例化方式

    1.直接赋值:String str = "Hello Bit"

    2.用关键字new进行对象实例化:String str = new String("Hello Bit")

1.2、字符串比较

    此处有坑!!!!需注意!!!!(参考1.4)

	public static void main(String[] args) {
		String str = "Hello Bit";    //str是一个对象存储在堆内存中
		System.out.println(str);
		String str1 = new String("Hello Bit");
		System.out.println(str1);
		System.out.println(str == str1);       //如果是“=”的话就是赋值符号了,需要注意
		System.out.println(str.equals(str1));
	}

    此处的第三处结果是:false

    String类"=="与"equals"的区别

    1. ”==”:进行的数值比较,比较的是两个字符串对象的内存地址数值。

    2. “equals()”:可以进行字符串内容的比较

1.3、字符串常量是String的匿名对象

    在 String str = ”hello“中,本质上就是将一个匿名的String类对象设置有名字,而且匿名对象一定保

存在堆内存中。

    而此处需要注意的是:任何的字符串常量都是String的匿名对象,所以该对象永远不会为null。

1.4 、String类两种实例化的区别

    1.采用直接赋值:

    

    此时的String直接由堆内存传到了常量池上。只开辟了一份空间。

    2.采用构造方法:


    此时的String在堆上开辟了空间,回到1.3中,字符串常量是String的匿名对象,匿名对象使用一次就等待被回收,即第一个hello使用一次后就等待被回收机制回收,就等同于垃圾空间。第二个传递值并且不会自动保持在对象池。

    总结一下:String类中两种对象实例化的区别
    1. 直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。
    2. 构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用
    intern()方法手工入池。

    因此,我们一般会采取第一种方式即直接赋值。

1.5 、字符串常量不可变更

    字符串不可更改,是指字符串内容一直不会改变,字符串想要改变实质上是不停的给字符串下边增加字符常量的空间。这块有一个特别特别需要注意的是,在服务器上千万千万不能给String  ++操作。原因是因为会造成大量的垃圾空间,服务器是上千万人在运行,整一个这样的操作,,,赶紧跑路吧。。。

    字符串使用原则:
    1. 字符串使用就采用直接赋值。
    2. 字符串比较就使用equals()实现。
    3. 字符串别改变太多

下边进行一些字符串常常用到的函数(很实用的)

1.6 、字符与字符串   

     字符串就是一个字符数组,所以在String类里面支持有字符数组转换为字符串以及字符串变为字符的操作方法。

    public String(char value[ ])   将字符数组中的所有内容变为字符串

    public String(char value[ ] ,int offset,intcount)  将部分字符数组中的内容变为字符串

1.7、字节与字符串

    public String(byte bytes[ ])    将字节数组变为字符串

    public String(byte bytes[ ],int offset,int length)  将部分字节数组中的内容变为字符串

    public byte[ ] getBytes()      将字符串以字节数组的形式返回

1.8、字符串比较

    public boolean equals(Object anObject)    区分大小写的比较

    public boolean equalsIanoreCase(String anotherString)    不区分大小写的比较

    public int compareTo(String anotherString)    比较两个字符串大小关系

1.9、字符串查找

    public boolean contains(CharSequence s)    判断一个字符串是否存在

    public int indexOf(String str)     从开始查找指定字符串的位置,查到了返回位置的开始索引,如果查不到返回-1

     public int indexOf(String str,int fromIndex)    从指定位置开始查找子字符串位置

1.10、字符串替换

    public String replaceAll(String regex,String replacment)   替换所有指定内容

    public String replaceFirst(String regex,String replacement)   替换收个内容

1.11、字符串拆分

    public String[ ] split(String regex)    将字符串全部拆分

    实现:

String str = "hello world hello bit" ;
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) {
System.out.println(s);
}

    public String[ ] split(String regex,int limit)   将字符串部分拆分,改数组长度就是limit极限

    实现:

String str = "hello world hello bit" ;
String[] result = str.split(" ",2) ;
for(String s: result) {
System.out.println(s);
}

    以上的拆分形式都很容易。如果发现有些内容无法拆分开就需要使用"\"转义

1.12、 字符串截取

     public String substring(int beginIndex)     从指定索引截取到结尾

     public String substring(int beginIndex,int endIndex)    截取部分内容

1.13、常见的一些字符串操作

    public String trim()   去掉字符串中的左右空格,保留中间空格

    public String toUpperCase()   字符串转大写

    public String toLowerCase()   字符串转小写

    public native String intern()    字符串入池操作

    public String concat(String str)   字符串连接,等同于“+”,不如吃

    public int length()    取得字符串长度

    public boolean isEmpty()  判断是否为空字符串

1.14、 StringBuffer类

      常用的函数:

    1. 字符串反转:

     public synchronized StringBuffer reverse()

StringBuffer sb = new StringBuffer("helloworld");
System.out.println(sb.reverse());

    2.删除指定范围的数据:

    public synchronized StringBuffer delete(int start, int end)

    3.插入数据

    public synchronized StringBuffer insert(int offset, 各种数据类型 b)

!!!!!!!!!划重点!!!!!!!!

解释String、StringBuffer、StringBuilder的区别:
1. String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
2. StringBuffer采用同步处理,属于线程安全操作;而StringBuilder采用异步处理,属于线程不安全操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值