Java的Arrays工具类,String类StringBuffer和StringBuilder(Day17)

1.数组工具类

java.util.Arrays

  • Arrays是一个工具类。
  • 其中有一个sort()方法,可以排序,静态方法(为了方便使用,工具类的方法一般都是静态,所以采用类名调用即可)。
  • Arrays.sort();
  • 需要使用Arrays方法时查找API帮助文档,切记死记硬背,多用几次就记住了。(在IDEA中按两次Shift键,查找类,即可查找类中的方法)
  • 二分查找方法:
    Arrays.binarySearch(arr,x);x为要查找的值。返回-1元素不存在。

2.字符串类(String)

  • 字符串一旦创建不能更改.字符串是引用数据类型.
  • 在jdk当中,字符串都是直接存储在"方法区"的字符串常量池"当中的.因为字符串在实际开发中使用太频繁,为了执行效率,所以把字符串放到了方法去的字符串常量中.
  • 拼接操作并没有更改字符串,而是在字符串常量池中生成了另一个字符串对象.遇到双引号括起来的字符串就会生成一个字符串对象.
  • 如果用new创建一个字符串,会在堆内存中生成一个对象,但是字符串常量池中也有.
    *在这里插入图片描述
    在这里插入图片描述
  • 直接定义字符串对象时,用双等号比较两个字符串相等的原因
    在这里插入图片描述
  • 而用new关键字创建String对象时.用双号比较不相等的原因如下图:.所以应该用equals方法.巧了String类重写了equals方法.
    在这里插入图片描述
  • 字符串为String类的对象者是为什么"fas".equals(k))可以使用的原因
  • 题目:
  • 将byte数组中的部分或全部元素转换成字符串方法
  • byte[] bytes ={97,98,99};
    String s2 = new String(bytes);//这里还有两个量可以写,第一是,下标起始位置,二是转换的长度.
    System.out.println(s2);(默认调用toString方法,String类重写了toString方法.所以输出abc).
  • char数组与上面的byte数组类似.
  • compareTo方法类似于C语言的那个strcmp()函数.(在string.h 库函数中,按照字母的排序,比较两个字符串是否相等)
  • contains()方法,判断前面的字符串是否包含后面的字符串,返回值为boolean类型.
  • endWith(".java")方法判断字符串是否以.java结尾.
  • equalsIgnoreCase在equals基础上忽略大小写.
  • getBytes()方法将字符串转换成byte数组.
  • indexOf()方法,判断子字符串在字符串首次出现的索引.
  • lastIndexOf方法,最后一次出现的索引.
  • isEmpty()方法,判断某个字符串是否为空串
  • .判断数组长度是length属性,判断字符串是否为空串用的是length方法.
  • replace()方法,将字符串里的老字符串替换成新的字符串.
  • split()以括号内的字符进行拆分,存入String数组中.
  • StartWith()判断某个字符串是否以子字符串开始
  • substring()返回从指定位置开始结束的字符串,两个参数给的话可以返回指定两个位置间的字符串,左闭右开.
  • toCharArray()将字符串转换成char数组.
  • toLowerCase()将字符串转换成小写
  • trim()方法,去除字符串前面和后面的空字符.
  • String中只有一个方法是static,不需要对象I(valueof方法),将非字符转换成字符串.并且println方法调用了valueof方法,所以 能打印在控制台上的都是字符串.

开发中,如果需要进行字符串的频繁拼接,会存在什么问题?

因为java的字符串是不可变的,每次拼接都会产生新的字符串.这样会占用大量的方法区内存,造成空间的浪费(字符串常量值).

  • 这时StringBuffer就粉墨登场,哈哈,
  • 用的时候,倒入类:import java.util.StringBuffer;
  • 默认创建一个初始化容量为16的byte[]数组,用来保存字符串.想要追加append()上,会自动扩容,想要删除delete方法上…
  • StringBuffer的优化.解决默认16空间,导致空间不足,经常扩容的问题.即创建时指定容量.
  • StringBuffer sb = new StringBuffer(100);

StringBuilder和StringBuffer

StringBuffer中的方法都有:synchronized关键字修饰,表示StringBuffer在多线程环境下时安全的.而StringBuilder是不安全的.
在这里插入图片描述

发布了50 篇原创文章 · 获赞 8 · 访问量 3064

猜你喜欢

转载自blog.csdn.net/jiahuan_/article/details/105157701