入门学习__认识String类

认识String类
1、为什么需要学习String
① 核心类,很常用!!!
② String 是Java中写好的一个类: 描述一个字符串(一串字符)
2、认识String :查看String类描述

  1. String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现【对象】。
    a. 简单理解:”ABC” 一个具体的字符串就是一个String类的对象
  2. “ABC”字符串是常量:值;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:String str = “abc”;
    a. 字符串常量在创建之后就不能更改了
    a) 字符串对象存在于堆中,存在了,字符串的值都不能改变了
    i. 分析:多个字符被解析放到字符串类中的一个私有字段private final char value[];
    ii. 字符串内部字符数组使用final修饰,并且是数组,数组长度固定,final修饰不能改变
    b. 字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享
    a) String str = “abc”;
    b) String st1 = str;//持有String 对象地址,共享String对象
    c) 什么是字符缓冲去:str 变量,存在于栈中就是缓冲区,所以应用类型数据持有地址可以变
    3、String对象的创建方式(目前介绍常见)
    ① String s = “skajh看哈师大”;
    ② 通过调用String类的构造方法【很多…】
    String()
    String(String str)
    …更多构造方法 ,以后再说(IO流的时候)

4、关于空字符串
① String str1 = null; 表示str1没有指向一个对象
② String str2 = “”; 有一个对象,对象是空
③ String str3 = new String(); 和②差不多
④实际应用中我们需要如何区分?
A. 理解到①表示没有对象
B. ②③有对象,但是是空的,其实也没有多大意思

5、字符串的比较/常量池
(1) 当使用String str = “A” ;的方式赋值,会将该字符串值【对象】放入到常量池
(2) 当再次使用String st1 = “A”的方式会先检查常量池是否有“A”值,
① 如果存在直接引用
② 如果不存在,会放入常量池
(3) 常量池与享元模式类型,但是区别,享元模式是已经缓存,但是常量池是在使用的时候缓存
(4) 字符串拼接
① 常量方式拼接,并直接使用赋值符号赋值,会检查常量池
② 变量方式拼接,不会检查常量池

最后记住一点: 引用数据类型如果向比较值,推荐使用equals
String类覆写了Object中的equals方法,比价的就是字符串的字面值
6、String中的常用方法
7、创建了几个对象–参看面试题 (对于实际开发没有一点意思)
8、小结:
5.2 StringBuffer/StringBuilder

  1. 拼接数字示例
  2. String/StringBuffer/StringBuilder的关系
    ① 这3个类没有直接或者间接的继承关系(不是直系亲属)
    StringBuffer sb = “123”; 报错
    ② 都表示字符序列(简单理解为字符串)
    CharSequence (字符序列的接口)
    |— String
    |----StringBuffer
    |----StringBuilder
    ③ 区别
    String : 它的对象一旦被创建那么值和长度就固定不变了
    StringBuffer : 它的对象内容是可以被改变的;
    是线程安全的
    版本是1.0
    StringBuilder : 它的对象内容是可以被改变的;
    是线程不安全的
    版本是 1.5
    相当于StringBuffer效率更高一点
  3. StringBuffer/StringBuilder中的常用方法
    ① 这两个中的方法几乎是一样的;
    ② 上面3个都表示字符序列,因此有很多一样的方法(暂时就忽略)
    ③ 今天重点关注这两个中特有的方法: 更改对象中数据的方法
    思考:哪些操作可能会改变对象中的数据?
    插入、替换、删除、追加。。。
    ===============================================================
    ④ 构造方法:
  1. StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 初始容量什么意思?
  2. StringBuilder(CharSequence seq) 构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符。
    new StringBuilder(“懂了吗?”)
    new StringBuilder(new StringBuffer(“这下呢?”))
    new StringBuilder(new StringBuilder(“。。。。”))
  3. StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。
  4. StringBuilder(String str)
    ⑤ 常用在方法:
    StringBuilder append(…)
    StringBuilder delete(int start, int end)
    StringBuilder insert(插入点,插入的数据)
    StringBuilder replace(int start, int end, String str)
    StringBuilder reverse() 翻转
    String substring(int start) 返回一个副本,本身的对象没有被改变
    String substring(int start, int end) 返回一个副本,本身的对象没有被改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值