14.Java-String 字符串详解

Java 字符串

String 字符串详解

  1. 实例化String对象
    直接赋值
    使用关键字new
  2. String的内容比较
  3. 字符串的内容不可更改

实例化

1
2
3
4
5
6
7
8
public class StringDemo01{
public static void main(String[] args){
//String str = "Hello";//第一种,直接赋值,使用这种更合理一些
String str = new String("Hello");//第二种实例化方式,同时开辟两个空间,堆顶的空间是垃圾空间,等待被回收的。
System.out.println(str);

}
}

内容比较

1
2
3
4
5
6
7
8
9
10
11
public class StringDemo02{
public static void mian(String[] args){
int a = 10;
int b = 10;
System.out.println(a == b);//true
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);//false,"=="比较的是地址
System.out.println(str1.equals(str2));//true,"equals"比较的内容
}
}

不可更改

1
2
3
4
5
6
7
8
public class StringDemo03{
public static void main(String[] args){
String str = "Hello";
String Str1 = Str+"World";
//str = str+"World";//改变的是堆内存地址的指向
System.out.println(str1);
}
}

String 字符串常用方法

  1. 字符串长度:length()方法
  2. 字符串转换数组:toCharArray()方法
  3. 从字符串中取出指定的字符:charAt()方法
  4. 字符串与byte数组的转换:getBytes()方法
  5. 过滤字符串中存在的字符:indexOf()方法
  6. 去掉字符串的亲厚空格:trim()方法
  7. 从字符串中取出子字符串:subString()方法
  8. 大小写转换:toLowerCsae() getUpperCsae()方法
  9. 判断字符串的开头结尾字符:endsWith() startWith()方法
  10. 替换 String 字符串中的一个字符:replace()方法

eclipse 整理代码快捷键ctrl+shift+F

1.length() 方法

1
2
3
4
5
6
public class StringDemo04{
public static void main(String[] args){
String str = "jikexueyuan";
System.out.println(str.length());
}
}

2.toCharArray() 方法

1
2
3
4
5
6
7
8
9
public class StringDemo05{
public static void main(String[] args){
String str = "jikexueyuan";
char data[] = str.toCharArray();
for(int i = 0; i <= data.length; i++){
System.out.println(data[i]+" ");
}
}
}

实现效果:

1
j i k e x u e y u a n

3.charAt() 方法

1
2
3
4
5
6
public class StringDemo06{
public static void main(String[] args){
String str = "jikexueyuan";
System.out.println(str.charAt(7));//取出的是第 8 个字符
}
}

4.getBytes() 方法

1
2
3
4
5
6
7
8
9
10
public class StringDemo07{
public static void main(String[] args){
String str = "jikexueyuan";
byte bytes[] = str.getBytes();
for(int i = 0; i < bytes.length; i++){
System.out.println(new String(bytes)+"\t");
}

}
}

5.indexOf() 方法

1
2
3
4
5
6
public class StringDemo08{
public static void main(String[] args){
String str = "jikexueyuan@163.com";
System.out.println(str.indexOf("@"));
}
}

实现结果:

1
11

6.trim() 方法

1
2
3
4
5
6
public class StringDemo08{
public static void main(String[] args){
String str = " jikexueyuan@163.com";
System.out.println(str.trim());
}
}

StringBuffer 方法

  1. 认识StringBuffer:
    缓冲区,本身也是操作字符串,但是与String不同,StringBuffer是可以被更改的
    StringBuffer是一个操作类,所以必须通过实例化操作
  2. StringBuffer 常用方法:
    append(): //追加
    insert()://插入
    replace(): //替换
    indexOf(): //过滤字符串中存在的字符
  3. StringBuffer类的应用

1. 实例化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
public class StringBufferDemo01{
public static void main(String[] args){
StringBuffer sb = new StringBuffer();
sb.append("jikexueyuan");
System.out.println(sb.toString());
tell(sb);
System.out.println(sb.toString());
//System.out.println(sb.toString());//转换成 String 类型
}
public static void tell(StringBuffer s){
s.append("i love jikexueyuan");
}
}

实现效果:

1
2
jikexueyuan
jikexueyuani love jikexueyuan

复原

1
2
3
4
5
6
7
8
9
10
11
12
public class StringBufferDemo01{
public static void main(String[] args){
String sb = "Hello";
System.out.println(sb.toString());
tell(sb);
System.out.println(sb.toString());
}
public static void tell(String s){
s.append("i love jikexueyuan");
s = "helloii";
}
}

实现效果:

1
Hello

2.append() 和 insert() 方法

1
2
3
4
5
6
7
public class StringBufferDemo01{
public static void main(String[] args){
StringBuffer sbf = new StringBuffer();
sbf.append("Hello");
sbf.insert(0,"i love");
Syetem.out.println(sbf.toString());
}

实现效果:

1
i loveHello

3.replace() 方法

1
2
3
4
5
6
7
8
9
public class StringBufferDemo01{
public static void main(String[] args){
StringBuffer sbf = new StringBuffer();
sbf.append("Hello");
sbf.insert(0,"i love");
Syetem.out.println(sbf.toString());
sbf.replace(1,3,"wwtliu");
Syetem.out.println(sbf.toString());
}

实现效果:

1
2
i loveHello
iwwtliuoveHello

4.StringBuffer 应用

1
2
3
4
5
6
7
8
9
10
11
public class StringDemo05{
public static void main(String args[]){
//String str = "jikexueyuan";//非常耗资源
StringBuffer str = new StringBuffer();//这个代码快很多
str.append("jikexueyuan");
for(int i = 0; i <= 100; i++){
//str = str +i;//String 追加
str = append(i);//StringBuffer 追加
}
Syetem.out.println(str);
}

StringBuider 用法

  1. 一个可变的字符序列,该类被设计作用 StringBuffer 的一个简单替换,用在字符缓冲区被单个线程使用的时候。建议优先考虑该类,速度比 StringBuffer 要快。
  2. 但是如果涉及到线程安全方面,建议使用 StringBuffer。
  3. 使用方法:
    append()
    insert()

14.Java-String 字符串详解
https://bubao.github.io/posts/6750e8fa.html
作者
一念
发布于
2016年7月29日
许可协议