java学习--String类StringBuffer类StringBuilder类

String类简介

关系图:

value不可修改的是value指向的地址,因为可以value为一个数组,而数组名其实就相当于一个指针,指向着一块地址,然后在指向的地址里存放相应的值,值可以任意是什么,但是地址不可改变

创建对象方式

内存分布图

现在堆开辟空间将value数组存放在其中然后在常量池找有没有想要的这串字符,有就直接指向拿来,没有就新创建

例题

去常量池找有没有相应的字符串,有就直接指向,没有就新建

b.intern返回的是b的字符串地址,而b他是指向堆中的地址由堆中地址指向常量池的,所以两个地址不同最后一个为false

没有new一个String,只要常量池有这串字符,那么就是相等的指向已有的

特性以及例题

他是先在常量池创建一个对象存放hello,然后再在常量池找有没有haha,没有就重新创建一个哈哈,而不是直接改变hello

我们Debug进去可以发现,直接来到了StringBuilder的无参构造器,那么代表其实进行了StringBuilder stringbuilder=new StringBuilder()动作

再然后我们可以看出来,先把hello传入其中

、然后再是abc

再来到了toString 他return了一个new String(value ,0,count),就代表新创建了一个对象,value为一个字符串数组存放了之前传进来的值,count为个数,所以,c其实新建了个对象在堆中用,其中的value指向常量池存放了字符串

这个其实值得注意的是调用方法时,传进去的是地址还是参数,首先,我们都知道,数组名代表的其实就是数组的地址,所以,传进去的是地址,那么在方法中改变数组的值,实际值也会改变,但是,字符串传进去的就是字符串而已,并非其地址所以,他在方法中改变,并不会影响外部的值

所以最终的结果是hspandhava

String类常见方法

StringBuffer类简介

关系图

String类与StringBuffer类比较

StringBuffer类构造器简介

String与StringBuffer转换方式

StringBuffer类常用方法

append源码

改写的toSTring

delete

replace

例题

import java.util.Scanner;

/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
*/public class StringBurber_
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str=scanner.next();
        String str1=scanner.next();
        StringBuffer stringBuffer = new StringBuffer(str1);
        int i=stringBuffer.indexOf(".");
        for (i=i-3;i>0;i=i-3)
        {
            stringBuffer=stringBuffer.insert(i,",");
        }
        System.out.println(stringBuffer);


    }
}

StringBuilder类简介

关系图

String,StringBuffer,StringBuilder类比较

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值