首页 > 代码库 > java学习笔记——String类

java学习笔记——String类

一、概述

·字符串是一个特殊的对象

·字符串一旦初始化就不可以被改变

·String str = "abc";

·String str1 = new String("abc");

 有什么区别?

package com.java.study.StringDemo;

public class StringDemo {
    
    public static void main(String[] args) {
        
        String s1 = "abc"; //s1是一个类类型变量,"abc"是一个对象
                           //字符串最大特点:一旦被初始化就不可以被改变
        String s2 = new String("abc");
        
        //s1和s2有什么区别?
        //s1在内存中有一个对象
        //s2在内存中有两个对象
        
        
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));//String类复写了Object类中的equals方法
                                          //该方法用于判断字符串是否相同
    }

}

 

二、常见功能获取和判断

String类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作

常见的操作有哪些?

"abcd"

1.获取

  1.1 字符串中包含的字符数,也就是字符串的长度

    int length():获取长度

  1.2 根据位置获取位置上的某个字符

    char chartAt(int index)

  1.3 根据字符获取该字符在字符串中的位置

    int indexOf(int ch):返回的是ch在字符串中第一次出现的位置

    int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置

 

    int indexOf(String str):返回的是str在字符串中第一次出现的位置

    int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置

2.判断

  2.1 字符串中是否包含某一个子串

    boolean contains(str)

    特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示str不在字符串中存在

         所以,也可以用于对指定判断是否包含

         if(str.indexOf("aa")!=-1)  而且该方法既可以用于判断,又可以获取出现的位置

  2.2 字符串中是否有内容

    boolean isEmpty();原理就是判断长度是否为0

  2.3 字符串是否以指定内容开头

    boolean startsWith(str);

  2.4 字符串是否以指定内容结尾

    boolean endsWith(str);

  2.5 判断字符串的内容是否相同,复写了Object类中的equals方法

    boolean equals(str)

  2.6 判断内容是否相同,并忽略大小写

    boolean equalsIgnoreCase();

3.转换

  3.1 将字符数组转成字符串

    构造函数:String(char[]);

         String(char[],offset,count):将字符数组中的一部分转成字符串 

    静态方法:

        static String copyValueOf(char[]);

        copyValueOf(char[],int offset,int count);

  3.2 将字符串转成字符数组

        char[] toCharArray()

  3.3 将字节数组转成字符串     

         String(byte[]);

 

         String(byte[],offset,count):将字节数组中的一部分转成字符串 

 

  3.4 将字符串转成字节数组

        byte[] getBytes()

  3.5 将基本数据类型转成字符串

    static String valueOf(int)

    static String valueOf(double)

4. 替换

  String replace(oldchar,newchar);  

5.切割

  String[] split(regex);

6.子串 获取字符串中的一部分

  String substring(begin);//从指定位置开始到结尾

  String substring(begin,end);//包含头 不包含尾

7.转换,去除空格,比较

  7.1 将字符串转成大写或者小写

    String toUpperCase();

    String toLowerCase();

  7.2 将字符串两端的多个空格去除

    String trim();

  7.3 对两个字符串进行自然顺序的比较

    String compareTo(string);

 

 1 package com.java.study.StringDemo.StringMethodDemo;
 2 
 3 public class StringMethodDemo {
 4     
 5     public static void method_7() {
 6         String s = "     hello  JAVA   ";
 7         sop(s.toUpperCase());
 8         sop(s.toLowerCase());
 9         sop(s.trim());
10         
11         String s1 = "abc";
12         String s2 = "aaa";
13         sop(s1.compareTo(s2));
14         
15     }
16     
17     public static void method_sub() {
18         String s = "abcdef";
19         
20         sop(s.substring(2));
21         sop(s.subSequence(2, 4));
22     }
23     
24     public static void method_split() {
25         String s = "zhangsan,lisi,wangwu";
26         String[] arr = s.split(",");
27         for(int i=0;i<arr.length;i++) {
28             sop(arr[i]);
29         }
30     }
31     
32     public static void method_replace() {
33         String s = "hello java";
34         //String s1 = s.replace(‘a‘,‘n‘);//如果要替换的字符不存在 返回的还是原串
35         String s1 = s.replace("java", "world");
36         sop("s="+s);
37         sop("s1="+s1);
38     }
39     
40     public static void method_trans() {
41         char[] arr = {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘};
42         String s = new String(arr);
43         
44         sop("s="+s);
45     }
46     
47     public static void method_is() {
48         String str = "ArrayDemo.java";
49         
50         //判断文件名称是否是Array单词开头
51         sop(str.startsWith("Array"));
52         //判断文件名称是否是.java单词结尾
53         sop(str.endsWith(".java"));
54         //判断文件名称是否包含Demo单词        
55         sop(str.contains("Demo"));
56         
57     }
58     
59     public static void method_get() {
60         String str = "abcdeakpf";
61         
62         //长度
63         sop(str.length());
64         
65         //根据索引获取字符
66         sop(str.charAt(4));//当访问到字符串中不存在的角标时,会发生StringIndexOutBoundsException.
67         
68         //根据字符获取索引
69         sop(str.indexOf(‘a‘,3));//如果没有找到,返回-1
70         
71         //反向索引一个字符出现的位置
72         sop(str.lastIndexOf(‘a‘));
73         
74     }
75     
76     
77     public static void main(String[] args) {
78         
79         method_7();
80         //method_sub();
81         //method_split();
82         //method_replace();
83         //method_trans();
84         //method_get();
85         //method_is();
86     
87     }
88     
89     public static void sop(Object obj) {
90         System.out.println(obj);
91     }
92     
93 }

 

 

 

三、StringBuffer

·字符串的组成原理就是通过该类实现的

·StringBuffer可以对字符串内容进行增删

·StringBuffer是一个容器

·很多方法与String相同

·StringBuffer是可变长度的

 

StringBuffer是字符串缓冲区 是一个容器

特点:

 

·长度是可变的

·可以直接操作多个数据类型

·最终会通过toString方法变成字符串

1.存储

  StringBuffer append();将指定数据作为参数添加到已有数据结尾处

  StringBuffer insert(index,数据);可以将数据插入到指定index位置

2.删除

3.获取

4.修改

 

java学习笔记——String类