java 常用类学习-包装类、String、StringBuffer、StringBuilder

java常用类

Object、Math、Random、File、包装类、Date、String、String Buffer、StringBuilder

1.包装类 Wrapper

  • 什么是包装类?
    1. 针对八种基本数据类型 定义相应的引用类型—包装类。
    2. 有了类的特点,就可以调用类中的方法。(包装类的意义)
基本数据类型包装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
  • 包装类的继承体系
    1. Boolean继承Object类,实现Serializable接口、Comparable接口
      在这里插入图片描述

    2. Character继承Object类,实现Serializable接口、Comparable接口
      在这里插入图片描述

    3. 剩下的继承Number类,Number类继承Object类,也实现Serializable接口、Comparable接口在这里插入图片描述

  • 包装类和基本数据类型的转换
    • 装箱:基本数据类型 ====> 包装类型,反之就是拆箱。
    • jdk5以后有自动装箱和拆箱方式。
    • 自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
      在这里插入图片描述
  • 包装类型和string类型的转换
            //包装类====>String
          Integer i1 = 100;
          //方式一
          String s1 = i1.toString();
          //方式二
          String s2 = String.valueOf(i1);
          //方式三
          String s3 = i1+"";
          
          //String=====>包装类
          String s4 = "12345";
          //方式一
          Integer i2 = new Integer(s4);
          //方式二
          Integer i3 = Integer.valueOf(s4);
    

2.String类

  • String对象用于保存字符串,也就是一组字符序列

  • 字符串常量对象是用双引号括起来的字符序列。

  • 字符串的字符使用Unicode字符编码,一个字符占两个字节。

  • String类常用构造器:

    • String s1 = new String();
    • String s1 = new String(String original);
    • String s1 = new String(char[] a);
    • String s1 = new String(char[] a,int startlndex,int count);
  • 创建String对象方式:
    一:直接赋值 String s = “hi”;
    二:调用构造器 String s2 = new String(“hi”);
    两种创建方式的区别:
    直接赋值(指向常量池)先在常量池中找 如果没有找到 会在堆内存创建对象,再在常量池中存入数据。调用构造器(指向堆)直接在堆内存创建对象。
    在这里插入图片描述

  • String特性
    1)String是一个final类,代表不可变的字符序列
    2)字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的。

String类常用方法

  • str.contains(String a)是字符串处理函数,返回布尔值以指示一个字符串a是否包含在字符串str中。
    在这里插入图片描述
    在这里插入图片描述

StringBuffer类

  • java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
  • String Buffer中很多方法与String相同。
  • StringBuffer是一个容器。
  • StringBuffer是final修饰,不能被继承。

在这里插入图片描述

StringBuffer常见构造器

  • StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。
  • StringBuffer(CharSequence seq) 构造一个字符串缓冲区,它包含与指定CharSequence相同的字符。
  • StringBuffer(int capacity)//capacity容量 构造一个不带字符,但具有指定初始容量的字符串缓冲区。即对char[]大小进行指定。
  • StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。(字符串初始长度为:str长度+16)

String与StringBuffer区别

1.String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。
2.StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高。(它的字符内容value放在堆内存中,更改时不用每次都更改地址)

String与StringBuffer转换

  • String–>StringBuffer
  • StringBuffer–>String
    在这里插入图片描述

StringBuffer类常用方法

1)增 append
2)删 delete(start,end) 前闭后开
3)改 replace(start,end,string)//将start----end 间的内容替换掉,不含end
4)查 indexof //查找子串在字符串第1次出现的索引,如果找不到返回-1
5)插insert(3,“xxx”)在索引为3处插入xxx
6)获取长度 length

StringBuilder类

  • StringBuilder 一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。它比StringBuffer要快。在单线程的情况下使用StringBuilder
  • 在StringBuilder上的主要操作是append和insert方法,可重载这些方法已接受任意类型的数据。
    在这里插入图片描述
    在这里插入图片描述

String、StringBuffer、StringBuilder比较

  • StringBuilder和StringBuffer类似,均代表可变的字符序列,而且方法也一样。
  • String :不可变字符序列,效率低,但是复用率高。
  • StringBuffer:可变字符序列,效率较高(增删),线程安全(synchronized修饰)。
  • StringBuilder:可变字符序列,效率最高,线程不安全。

使用原则:

  1. 如果字符串存在大量的修改操作,一般用StringBuffer或StringBuilder
  2. 如果字符串存在大量的修改操作,在单线程的情况使用StringBuilder;在多线程的情况使用Stringbuffer
  3. 如果字符串很少修改,被多个对象引用,使用String,比如配置信息等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值