Java String类

1.String类

1.1什么是String类

针对字符串创建的类

1.2String类的用法

1.2.1字符串构造

1.2.2 String是引用类型,内部并不存储字符串本身

1.3 String对象的比较

对于基本类型变量,==比较的是他们的

对于内置类型,==比较的是他们的地址

    public static void main(String[] args) {
        int a = 1;
        int b = 1;
        int c = 2;
        String s = new String("HHX");
        String s1 = new String("HHX");
        String s2 = s;

        System.out.println(a==b);//true
        System.out.println(a==c);//false
        System.out.println(s==s1);//false
        System.out.println(s==s2);//ture
    }

String类重写了Objectequals方法,比较的是内容

 
 public static void main(String[] args) {
        String s = "HHX";
        String s1 = "HHX";
        System.out.println(s==s1);//true
        System.out.println(s.equals(s1));//true
    }

1.5字符串的不可变性

Sting类描述字符串中的内容不可修改

可以看到String的字符实际上保存在value中但是value是由final修饰的,而String不可改变的原因实际上不是因为被final修饰,而是因为value被private修饰获取不到value

这里可以看到final修饰的引用对象的内容可以被修改而value被private修饰,所以数组的引用不能被修改 

2.StringBuffer和StringBuilder

StringBufferStringBuilderappend方法不会创建对象

效率高

字符串s+=并不是直接修改,而是new一个新的对象,这样就会造成资源的浪费

public static void main(String[] args) {
        //可以看待在对String类进行修改时,效率是非常慢的,因此:尽量避免对String的直接需要,如果要修改建议尽量
        //使用StringBuffer或者StringBuilder。
        long start = System.currentTimeMillis();
        String s = "";
        for (int i = 0; i < 10000; i++) {
            s += i;
        }1
        long end = System.currentTimeMillis();
        System.out.println(end - start);

        start = System.currentTimeMillis();
        StringBuffer sbf = new StringBuffer();
        for (int i = 0; i < 10000; i++) {
            sbf .append(i);
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);

        start = System.currentTimeMillis();
        StringBuilder sbd = new StringBuilder();
        for (int i = 0; i < 10000; i++) {
            sbd .append(i);
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
    }

2.1区别

区别在于StringBuffer作用于多线程,而StringBuilder作用于单线程

StringBuffer被synchronized修饰,相当于有一把锁,在多线程工作时不会被打扰StringBuilder在单线程工作安全,但也不是说StringBuffer就是最好,频繁的开锁和解锁也是一种资源的浪费

2.2方法

关于String StringBuffer StringBuilder方法大家可参阅  Java Platform SE 8

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值