java基础之--String类

今天在项目目中遇到了需要处理字符串的业务,索性就把String类的所有方法特性总结下来,以便日后查看!

1.字符串(String)是由多个字符(char)组成的一串数据(字符序列)

a:字符串字面值常量"abc",也可以看成是一个字符串对象。

b:字符串是常量,一旦被赋值,就不能被改变。

2.常见构造方法:

1)public String();

2)public String(byte[] bytes);    将字节数组转成人能看懂的

3)public String(byte[] bytes,int index,int length);

4)public String(char[] value);

5)public String(char[] value,int index,int count);

6)public String(String original);

3.判断功能:

1)boolean equals(Object obj);        比较字符串是否相同,区分大小写

2)boolean equalsIgnoreCase(String str) ;   比较字符串是否相同,不区分大小写

3)boolean contains(String str);     字符串对象是否包含给定字符串

4)boolean startsWith(String str);

5)boolean endsWith(String str);

6)boolean isEmpty();

4.获取功能:

1)int length();

2)char charAt(int index);    返回指定索引位置的char值

3)int indexOf(int ch);

4)int indexOf(String str);     indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。

5)int indexOf(int ch,int fromIndex);

6)int indexOf(String str,int fromIndex);

7)int lastIndexOf(String str);  返回在此字符串中最右边出现的指定子字符串的索引,如果没有找到子字符串,则返回-1。

8)String substring(int start);

9)String substring(int start,int end);

5.转换功能:

1)byte[] getBytes();    将字符串转成计算机能看懂的

2)char[] toCharArray();

3)static String valueOf(char[] chs);

4)static String valueOf(int i);

5)String toLowerCase();

6)String toUpperCase();

7)String concat(String str) 

6.替换功能:

1)String replace(char old,char new)

2)String replace(String old,String new)

3)String trim()  (去掉空格)

4)int compareTo(String str)    (字典顺序比较)

5)int compareToIgnoreCase(String str)    (了解)

6)String[] split(String regex) (补充,切割功能)

面试常用:

一、字符串相加:

1. String str1 = "abc";
    System.out.println(str1 == "abc");

步骤:
1) 栈中开辟一块空间存放引用str1,
2) String池中开辟一块空间,存放String常量"abc",
3) 引用str1指向池中String常量"abc",
4) str1所指代的地址即常量"abc"所在地址,输出为true

2. String str2 = new String("abc");
    System.out.println(str2 == "abc");

步骤:
1) 栈中开辟一块空间存放引用str2,
2) 堆中开辟一块空间存放一个新建的String对象"abc",
3) 引用str2指向堆中的新建的String对象"abc",
4) str2所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出为false

3. String str3 = new String("abc");
    System.out.println(str3 == str2);

步骤:
1) 栈中开辟一块空间存放引用str3,
2) 堆中开辟一块新空间存放另外一个(不同于str2所指)新建的String对象,
3) 引用str3指向另外新建的那个String对象
4) str3和str2指向堆中不同的String对象,地址也不相同,输出为false

4. String str4 = "a" + "b";
  System.out.println(str4 == "ab");

步骤:
1) 栈中开辟一块空间存放引用str4,
2) 根据编译器合并已知量的优化功能,池中开辟一块空间,存放合并后的String常量"ab",
3) 引用str4指向池中常量"ab",
4) str4所指即池中常量"ab",输出为true

结论:

a:字符串如果是变量相加(有变量参与),先开辟空间,在拼接

b:字符串如果是常量相加(常量优化机制),是先加,然后在常量池中找,如果有就直接返回,否则,就创建。

二、concat(String str)  与 + 的区别:

1.+可以是字符串或者数字及其他基本类型数据,而concat只能接收字符串。

2.+左右可以为null,concat为会空指针。

3.如果拼接空字符串,concat会稍快,在速度上两者可以忽略不计,如果拼接更多字符串建议用StringBuilder

猜你喜欢

转载自blog.csdn.net/ahutdbx/article/details/82665926