黑马程序员_Java基础_我的Day13学习笔记

01. StringBuffer类的概述

  • A:StringBuffer类概述
    • 通过JDK提供的API,查看StringBuffer类的说明
    • 线程安全的可变字符序列
  • B:StringBuffer和String的区别
    • String是一个不可变的字符序列
    • StringBuffer是一个可变的字符序列

02. StringBuffer类的构造方法

  • A:StringBuffer的构造方法:
    • public StringBuffer():无参构造方法
    • public StringBuffer(int capacity):指定容量的字符串缓冲区对象
    • public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
  • B:StringBuffer的方法:
    • public int capacity():返回当前容量。 理论值(不掌握)
    • public int length():返回长度(字符数)。 实际值
  • C:案例演示
    • 构造方法和长度方法的使用

03. StringBuffer的添加功能

  • A:StringBuffer的添加功能
    • public StringBuffer append(String str):
      • 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
    • public StringBuffer insert(int offset,String str):
      • 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
      • 在指定位置添加元素,如果没有指定位置的索引就会报索引越界异常(可以建立对象的时候,初始化一个值)
    • StringBuffer是字符串缓冲区,当new的时候时在堆内存创建了一个对象,底层是一个长度为16的字符数组。当调用添加的方法时,不会再重新创建对象,在不断向原缓冲区添加字符

04. StringBuffer的删除功能

  • A:StringBuffer的删除功能
    • public StringBuffer deleteCharAt(int index):
      • 删除指定位置的字符,并返回本身
    • public StringBuffer delete(int start,int end):
      • 删除从指定位置开始指定位置结束的内容,并返回本身
    • 不要用sbuf = new StringBuffer()清空缓冲区,原来的会变成垃圾

05. StringBuffer的替换和反转功能

  • A:StringBuffer的替换功能
    • public StringBuffer replace(int start,int end,String str):
      • 从start开始到end用str替换
  • B:StringBuffer的反转功能
    • public StringBuffer reverse():
      • 字符串反转

06. StringBuffer的截取功能及注意事项

  • A:StringBuffer的截取功能
    • public String substring(int start):
      • 从指定位置截取到末尾
    • public String substring(int start,int end):
      • 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
  • B:注意事项
    • 注意:返回值类型不再是StringBuffer本身!!!

07. StringBuffer和String的相互转换

  • A:String – StringBuffer
    • a:通过构造方法
    • b:通过append()方法
  • B:StringBuffer – String
    • a:通过构造方法(StringBuffer sbuf = new StringBuf(“ImKing”);String s = new String(sbuf);)
    • b:通过toString()方法
    • c:通过subString(0,length);

08. StringBuffer和StringBuilder的区别

  • A:StringBuilder的概述
    • 通过查看API了解一下StringBuilder类
  • B:面试题

    • String,StringBuffer,StringBuilder的区别
    • StringBuffer和StringBuilder的区别

      • StringBuffer是jdk1.0版本的,是线程安全的(同步),效率低
      • StringBuilder是jdk1.5版本的,是线程不安全的(不同步),效率高
    • String和StringBuffer,StringBuilder的区别

      • String是一个不可变的字符序列
      • StringBuffer,StringBuilder是可变的字符序列

09. String和StringBuffer分别作为参数传递

  • A:形式参数问题
    • String作为参数传递
    • StringBuffer作为参数传递
  • B:案例演示
    • String和StringBuffer分别作为参数传递问题
    • String类型虽然是引用数据类型,但是当做参数传递时和基本数据类型是一样的。StringBuffer则不同

10. 数组高级二分查找代码实现及注意事项

  • A:案例演示
    • 数组高级二分查找代码
  • B:注意事项
    • 如果数组无序,就不能使用二分查找。
      • 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。

11. Arrays类的概述和方法使用

  • A:Arrays类概述
    • 针对数组进行操作的工具类。
    • 提供了排序,查找等功能。
  • B:成员方法
    • public static String toString(int[] a)
    • public static void sort(int[] a)
    • public static int binarySearch(int[] a,int key)

12. 基本类型包装类的概述

  • A:为什么会有基本类型包装类
    • 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
  • B:常用操作
    • 常用的操作之一:用于基本数据类型与字符串之间的转换。
  • C:基本类型和包装类的对应
  • *
    byte            Byte
    short           Short
    int             Integer
    long            Long
    float           Float
    double          Double
    char            Character
    boolean         Boolean

13. Integer类的概述和构造方法

  • A:Integer类概述

    • 通过JDK提供的API,查看Integer类的说明

    • Integer 类在对象中包装了一个基本类型 int 的值,

    • 该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,
    • 还提供了处理 int 类型时非常有用的其他一些常量和方法
  • B:构造方法
    • public Integer(int value)
    • public Integer(String s)
  • C:案例演示
    • 使用构造方法创建对象

14. String和int类型的相互转换

  • A:int – String
    • a:和”“进行拼接(推荐)
    • b:public static String valueOf(int i)(推荐)
    • c:int – Integer – String(Integer类的toString方法())
    • d:public static String toString(int i)(Integer类的静态方法)
  • B:String – int

    • a:String – Integer – int
    • public static int parseInt(String s)
  • C:基本数据类型包装类有八种,其中七种都有parseXxx()的方法,可以将这七种的字符串表现形式转换成基本数据类型

  • D:char的包装类Character中没有parseXxx方法,字符串到字符的转换通过toCharArray()就可以把字符串转换为字符数组

15. JDK5的新特性自动装箱和拆箱

  • A:JDK5的新特性
    • 自动装箱:把基本类型转换为包装类类型
    • 自动拆箱:把包装类类型转换为基本类型
  • B:案例演示
    • JDK5的新特性自动装箱和拆箱
    • Integer ii = 100;
    • ii += 200;
  • C:注意事项
    • 在使用时,Integer x = null;代码就会出现NullPointerException。
    • 建议先判断是否为null,然后再使用。

16. Integer的面试题

  • A:Integer的面试题
  • 看程序写结果
    Integer i1 = new Integer(97);
    Integer i2 = new Integer(97);
    System.out.println(i1 == i2); // false
    System.out.println(i1.equals(i2)); // true
    System.out.println("-----------");

    Integer i3 = new Integer(197); 
    Integer i4 = new Integer(197);
    System.out.println(i3 == i4); // false
    System.out.println(i3.equals(i4)); // true
    System.out.println("-----------");

    Integer i5 = 97;
    Integer i6 = 97; // 自动装箱
    System.out.println(i5 == i6); // true
    System.out.println(i5.equals(i6)); // true
    System.out.println("-----------");

    Integer i7 = 197;
    Integer i8 = 197;
    System.out.println(i7 == i8); // false
    System.out.println(i7.equals(i8)); // true
  • 注意:-128~127是byte的取值范围,如果在这个范围内,自动装箱就不会新创建对象,而是从常量池中获取;如果超过了byte取值范围就会再新创建对象。

个人认为StringBuffer这一小节相对容易掌握,所以呢,先关概念都熟悉一下吧。尤其是其中的一些注意事项哦,,,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值