常用实用类

1 String类

String类为final类,String对象的实体不能发生变化

1.1 构造String对象

  • 可以用String类声明对象,例如:
    String s= new String("i am a student");
  • 也可以用一个已创建的String对象创建另一个String对象,例如:
    String tom=new String(s);
  • 可以用字符数组创建String类的对象:
char a[]={'b','o','y'};
String a=new String(a);
//相当于 String s= new String("boy");
  • 构造方法String(char a[], int startIndex, int count)提取字符数组a中从startIndex个字符开始的count个字符
char a[]={'s','o','k','h','l'}
String s= new String(a,1,2);
//相当于String s =new String("ok");

1.2 String类常用方法

1. length()
String a=new String("hello");
int m=a.length();
int ,n="hi".length();
//m值为5,n值为2
2. equals(String s)

比较当前String对象是否与参数s指定的Sting对象字符序列相同

String tom=new String("1");
String sam=new String("0");
String rick=new String("1");
tom.equals(sam);  //值为false
tom.equals(rick);   // 值为true
/*因为tom和rick是对象,存放着引用,
但是tom和rick引用不同,
所以tom==rick是false*/

equalsIgonreCase(String s)比较时可忽略大小写

3. startsWith(String s) 、 endsWith(String s)
String tom="123456";
String sam="654321";
tom.startsWtih("12");   // true
sam.endsWith("21");   //true
4. regionMatches(int firstStart, String other, int otherStart, int length)

从当前String对象的字符序列firstStart位置开始,取长度为length的字符序列,与参数other的一个字符序列。其中other的子字符序列是从otherStart位置开始,取length长度的子字符序列。如果相同就返回true

  • 重载方法:
    regionMatches(boolean b,int firstStart, String other, int otherStart, int length)
    可以通过参数b决定是否忽略大小写,b取true就忽略
5. contains(String s)

判断当前String对象是否含有s的字符序列,含有就返回true

6. indexOf(String s)

从当前String对象的字符序列索引为止0开始检索,返回首次出现s的字符序列的位置,没有检索到就返回-1.
indexOf(String s , int startPoint)索引位置从startPoint开始检索

7. substring(int startpoint)

返回一个新的String对象,从startpoint开始截取到最后。
substring(int start,int end)从start截取到end

String tom="abcdefgh";
String s=tom.substring(2,5);
//s的字符序列是“cde”

1.3 String对象与基本数据的相互转化

1. String对象转化为数字
int x;
String s="123";
x=Integer.parseInt(s);

Byte、Short、Long、Float、Double类同理

  • Long类中下列方法返回整数i的不同进制的字符序列表示:
String toBinaryString(long i); //二进制
String toOctalString(long i);  //八进制
String toHexString(long i); //十六进制
String toString(long i, int p);  //p进制
2.数组转化为String对象
  • 任何数字和String常量""做并运算“+”,都将得到一个String对象:
    String str=3.14+"";
    那么str对象的字符序列就是3.14
  • 还可以使用下列String类的类方法
public static String valueOf(byte n)
public static String valueOf(int n)
public static String valueOf(long n)
public static String valueOf(float n)
public static String valueOf(double n)

例如:
String strr= String.valueOf(123.555)
String对象str的字符序列就是123.555

1.4 对象的String表示

Object类的toString()方法,一个对象调用该方法返回一个String对象,称该String对象为当前对象的String表示

  • 一个对象调用toString()方法返回的String对象的字符序列一般形式为:
    创建对象的类的名字@对象的引用的字符序列表示

1.5 字符序列与字符、字节数组

1. 字符序列与字符 数组
  • 将String对象字符序列放入数组的方法:
  1. public void getChars(int start, int end, char c[], int offset)
    将String对象字符序列从start到end的字符复制到数组c中,从数组c的offset位置开始存放这些字符。
  2. public char[] getArray()
    将String对象字符序列依次存放再一个字符数组的单元中,并且返回该数组的引用
2. 字符序列与字节 数组
  • 用指定的字节数组构造一个String对象:
    String (byte[])
    从offset位置取length个字节构造一个String对象:
    String(byte[],int offset, int length)

  • public byte[] getBytes():将字符序列转换为平台默认编码,将编码依次存放在byte数组的单元中,返回byte数组的引用

  • public byte[] getBytes(String charsetName):将字符序列转换为参数charsetName指定编码,将编码依次存放在byte数组的单元中,返回byte数组的引用

2 正则表达式

2.1 正则表达式与元字符

  • String对象调用public boolean matches(String regex)判断当前String对象的字符序列是否和参数regex指定的正则表达式相匹配
  • 元字符自行查表
    注:由于“.”代表任何一个字符,所以在正则表达式中如果想使用普通意义的点字符,必须使用[.]\\.
  • 限定符自行查表

2.2字符序列的替换与分解

String对象调用
public String replaceAll(String regex,String replacement)
返回一个新的String对象,其字符序列中所有和参数regex相匹配的子字符序列替换成参数replacement指定的字符序列,例如:

String s="12hello567";
String result=s.replaceAll("\\d+","你好,");
//result的字符序列为 你好hello你好

3 StringTokenizer类

  • 用途:分析一个字符序列并将字符序列分解成可被单独使用的单词
  • 构造方法:
    1. StringTokenizer(String s):构造一个StringTokenizer对象,例如fenxi。fenxi使用默认的分隔标记分解出参数s的字符序列中的单词,即这些单词成为fenxi中的数据
    2. StringTokenizer(String s, String delim):构造一个StringTokenizer对象,例如fenxi。fenxi用参数delim的字符序列中的字符的任意排列作为分隔标记,分解出参数s的字符序列中的单词,即这些单词成为fenxi中的数据
      例如:
    StringTokenizer fenxi=new StringTokenizer("we are student");
    StringTokenizer fenxi=new StringTokenizer("we,are;student",", ;");
    
  • fenxi调用String nextToken()方法逐个获取fenxi中的单词,每当nextToken()返回一个单词,fenxi就自动删除该单词;
  • fenxi调用boolean hasMoreTokens()判断fenxi中还有无单词,有就返回true;
  • fenxi调用countTokends()返回当前fenxi中单词的个数

4 Scanner类

Scanner类的对象从字符序列中解析程序所需要的数据

  • 为了创建Scanner对象,需要把一个String对象传递给所构造的Scanner对象,例如,对于:
    String s="hello,i am Tom";
    为了解析出s的字符序列中的单词,可以如下构造一个Scanner对象:
    Scanner scanner=new Scanner(s);
    那么scanner默认使用空格作为分隔标记来解析s的字符序列中的单词。
    也可以让Scanner对象调用方法useDelimiter(正则表达式)将正则表达式作为分隔标记

特点如下:

  • scanner调用next()方法依次返回s的字符序列中的单词,如果全部返回完了,调用hasNext()将返回false,否则返回true
  • scanner可以调用nextInt()或者nextDouble()将数字型单词转化为int或double数据返回

StringTokenizer和Scanner对比
  • StringTokenizer类把分解出的全部单词存放到StringTokenizer对象的实体中,能快速获得单词,但对象实体**占用较多内存
  • Scanner类仅存放怎样获取单词的分隔标记(相当于把单词在字典里,大脑只记查字典的规则),获得单词的速度较慢,但是节省内存空间

5 Pattern与Matcher类

模式匹配就是检索和指定模式匹配的字符序列

6 StringBuffer类

6.1 对象的创建

该类的对象实体内存空间可以自动改变大小,便于存放可变的字符。例如一个StringBuffer对象调用append方法可以添加字符序列

StringBuffer buffer=new StringBuffer("hello");
buffer.append(",i am Tom.");
//buffer对象的实体变成“hello, i am Tom”
  • 三个构造方法
    1. StringBuffer():使用该方法创建对象,该对象的实体初始容量可以容纳16个字符,对象的尸体存放的字符序列长度大于16时,容量自动增加。通过length()获取存放的字符序列的长度,通过capacity()获取当前实体的实际容量
    2. StringBuffer(int size):初始容量为size个字符
    3. StringBuffer(String s):初始容量为s的字符序列的长度再加16个字符

6.2 常用方法

6.2.1. append方法
  • StringBuffer append(String s):将s的字符序列追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用
  • StringBuffer append(int n):将n作为字符序列尾加到当前对象的字符序列,并返回当前对象的引用
    (类似的long、boolean、float、double、char)
6.2.2
  • public char charAt(int n):得到参数n指定位置上的单个字符。n大于0,小于当前对象的字符序列长度
  • public void setCharAt(int n, char ch):将n位置出的字符用参数ch指定的字符替换。n大于0,小于当前对象的字符序列长度
6.2.3
  • StringBuffer insert(int index, String str):将参数str指定的字符序列插入参数index指定的位置,并返回当前对象的引用
6.2.4

public StringBuffer reserve():将字符序列反转,并返回当前对象的引用

6.2.5
  • StringBuffer delete(int startIndex, int endIndex):删除从startIndex到endIndex-1的子字符序列
  • StringBuffer deleteCharAt(int index):删除index位置的字符
6.2.6

StringBuffer replace(int startIndex, int endIndex, String str):将从startIndex到endIndex-1的子字符序列替换成参数str指定的字符序列,返回对象的引用。

7 日期和时间

相关方法自行查阅

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容