java常用类之String类

java常用类之String类

1 String类概述

  • 字符串常量是常量,创建之后不可改变
  • 字符串字面值存储在字符串池中,可以共享

敲重点了:

看一下代码:

  • Sring在创建后,在常量池中创建了一个 hello 的常量,在栈中的name引用指向了 hello 常量
  • -当给name赋值为 zhangsan 时,又在常量池中创建了 zhangsan 的常量,name 指向它,那 hello 任然存在,但是运行后会被垃圾回收给回收
  • 在创建一个 name2 这时会在常量池中找有没有 zhangsan 这个常量,有,则 name2 指向它,没有就 创建;此我们知道 存在有一个 zhangsan 的常量,所以 name 和 name2 存的地址是相同的,所以打印后是true
  • 因为 字符串变量存储的是地址,所以 == 判断的也是地址,因此判断两个字符串是否相等时,不用 等于号,而是用equals()方法
  • new 关键字创建String对象,是在堆和常量池中都创建了 对象,下面中的 s1 和 s2 是在堆中的两个不同对象,所以地址是不同的,因此为false.
public class Test01 {
    public static void main(String[] args) {
        String name="hello";
        name="zhangsan";
        String name2="zhangsan";
        System.out.println(name==name2);//true

        String s1=new String("java");
        String s2=new String("java");
        System.out.println(s1==s2);//false 
    }
}

字符串的常用方法

1. length():返回字符串的长度

2. chatAt(int index):返回某个位置的字符

3.contains(String str):是否包含某个字符串

4.toCharArray():将字符串转成数组

5. intdexof(String str):查找str首次出现的下标,存在则返回下标,不存在则返回-1

6.lastIndexof(String str):查找字符串在当前字符串中最后一次出现的索引下标。

7 .trim()去掉字符串前后的空格

8.toUpCase():将小写转成大写

8.endWith(str):判断是否以str结尾

9.starWith(str):判断是否以str开头

10.replace(char oldChar,char newChar):将新字符串替换成旧的字符串

11.split(String str):对字符串进行拆分

12.equals():比较两个字符串是否相等

13.compare():比较大小,此大小为在字典里的顺序,用法:s3.compare(s4) 即用s3的位置减s4的位置

可变长字符串

String类虽然给我们提供了很多很好用的方法,但是,由于String 的不可变性,导致在运行的过程中会出现大量的无用的字符串。此外,每次在操作的时候都会产生一个新的字符串,效率也低。

因此,sun公司又开发出了新的类:
StringBuffer:可变长字符串,JDK1.0提供,运行效率慢,线程安全。
StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全。
下面介绍他们的主要方法,StringBuffer和StringBuilder的方法一样。
代码:

package hai;

public class Testo2 {
    /**
     *StringBuffer和StringBuilderd的使用
     * 和String的区别;1)效率比String高;  2)比String更节省内存。
     *
     */
    public static void main(String[] args) {
        /*1.append 追加
        * */
        /*StringBuffer strb=new StringBuffer();*/
        StringBuilder strb=new StringBuilder();
        strb.append("java,世界第一");
        System.out.println(strb.toString());
        strb.append("java真想");
        System.out.println(strb.toString());
        strb.append("java不错");
        System.out.println(strb.toString());
        /*
        * 2.insert 添加
        * */
        strb.insert(0,"我在最其前面");
        System.out.println(strb.toString());
        /*
        * 3.replace  可以指定位置替换
        * */
        strb.replace(0,4,"hello");
        System.out.println(strb.toString());
        /*
        * 4.删除
        * */
        strb.delete(0,5);
        System.out.println(strb.toString());    
        //清空
        strb.delete(0,strb.length());
        System.out.println(strb.length()    );
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值