Java常用类之String

简介: 当对字符串重新赋值时,需要重写指定内存区域赋值,不能用原有的value进行赋值当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能在原有的基础上赋值调用String的replace()方法修改字符或字符串时,也需要重新指定内存区域
🏠个人主页: 黑洞晓威
🧑个人简介:大家好,我是晓威,一名普普通通的大二在校生,希望在CSDN中与大家一起成长呀。

🎁如果你也在正在学习Java,欢迎各位大佬来到我的博客查漏补缺呀,如果有哪里写的不对的地方也欢迎诸佬指正啊。

常用类String

String的特点

  1. 声明为final,不可被继承
  2. 实现了Serializable接口,字符串支持序列化
  3. 实现了Comparable接口,表示String可比较大小
  4. String内部定义了final char[] value用于存储字符串数据
  5. String代表不可变字符序列,简称不可变性

体现:

  1. 当对字符串重新赋值时,需要重写指定内存区域赋值,不能用原有的value进行赋值
  2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能在原有的基础上赋值
  3. 调用String的replace()方法修改字符或字符串时,也需要重新指定内存区域
  1. 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
  2. 字符串的常量池不会存储相同的字符串。
public class text02 {
    public static void main(String[] args) {
        String s1="abc";
        String s2="abc";


        System.out.println(s1==s2);//地址相同
        System.out.println(s1);
        System.out.println(s2);

        s1="hello";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s1=s2);//地址不同
        
    }
}

练习题:

  1. 模拟trim()方法
public class text02 {
    public static void main(String[] args) {
        String s="   hello   ";
        way(s);
    }

    public static void way(String str) {
        int i;
        for (i = 0; i < str.length(); i++) {
            if (str.charAt(i) != ' ') {
                break;
            }
        }

        int j;
        for (j = str.length()-1; j >= 0; j--) {
            if (str.charAt(j) != ' ') {
                break;
            }
        }

        String s1=str.substring(i, j+1);
        System.out.println(s1);

    }

}
  1. 将字符的指定部分进行反转,如”hello“反转为”hlleo“
public class text02 {
    public static void main(String[] args) {
        String s = "hello";
        String s1=way(s,1,3);
        System.out.println(s1);
    }

    //s为开始反转的下标,e为结束反转的下标
    public static String way(String str,int s,int e) {
        char[] chars = str.toCharArray();{
            for (int i = 0; i <(e-s)/2 ; i++) {
                char temp=chars[s];
                chars[s]=chars[e];
                chars[e]=temp;
                e--;
                s++;
            }

        }
        String s1 = new String(chars);
        return s1;

    }
}
  1. 获取两个字符串中最大相同字串
public class text02 {
    public static void main(String[] args) {
        String s1="abcdhello";
        String s2="hsinsrkhello";
        int result =way(s1,s2);
        System.out.println(result);
    }

    public static int way(String str1,String str2) {
        int max=1;
        int imax = 0;
        int jmax = 0;
        for (int i = 0; i < str1.length(); i++) {
            for (int j = i;j<str1.length();j++){
                String s = str1.substring(i,j+1);
                if(str2.contains(s)){
                    int nmax=j-i+1;
                    if(nmax>max){
                        max=nmax;
                         imax=i;
                         jmax=j;
                    }
                }
            }
        }
        String smax=str1.substring(imax,jmax+1);
        System.out.println(smax);
        return max;
    }
}
  1. 对字符串字符进行自然顺序排序
public class text02 {
    public static void main(String[] args) {
        String s1="hsinndlslaonvbc";
        String s2 = way(s1);
        System.out.println(s2);
    }

    public static String way(String str) {
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            for(int j = i+1;j<chars.length;j++){
                if (chars[i]>chars[j]) {
                    char temp=chars[i];
                    chars[i]=chars[j];
                    chars[j]=temp;

                }
            }
        }
        String str2=new String(chars);
        return str2;
    }
}
🎉文章到这里就结束了,感谢诸佬的阅读。🎉

💕欢迎诸佬对文章加以指正,也望诸佬不吝点赞、评论、收藏加关注呀😘在这里插入图片描述

相关文章
|
1天前
|
Java 数据安全/隐私保护
Java中的类与对象详解
Java中的类与对象详解
|
1天前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以&#39;\0&#39;结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加&#39;\0&#39;。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。
|
1天前
|
Java 数据安全/隐私保护
Java中的类继承与多态详解
Java中的类继承与多态详解
|
1天前
|
存储 C++
【C++】string类的使用③(非成员函数重载Non-member function overloads)
这篇文章探讨了C++中`std::string`的`replace`和`swap`函数以及非成员函数重载。`replace`提供了多种方式替换字符串中的部分内容,包括使用字符串、子串、字符、字符数组和填充字符。`swap`函数用于交换两个`string`对象的内容,成员函数版本效率更高。非成员函数重载包括`operator+`实现字符串连接,关系运算符(如`==`, `&lt;`等)用于比较字符串,以及`swap`非成员函数。此外,还介绍了`getline`函数,用于按指定分隔符从输入流中读取字符串。文章强调了非成员函数在特定情况下的作用,并给出了多个示例代码。
|
1天前
|
设计模式 Java
Java中的动态加载与卸载类
Java中的动态加载与卸载类
|
21小时前
|
存储
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
|
1天前
|
C++
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
1天前
|
C++
C++】string类的使用③(修改器Modifiers)
这篇博客探讨了C++ STL中`string`类的修改器和非成员函数重载。文章介绍了`operator+=`用于在字符串末尾追加内容,并展示了不同重载形式。`append`函数提供了更多追加选项,包括子串、字符数组、单个字符等。`push_back`和`pop_back`分别用于在末尾添加和移除一个字符。`assign`用于替换字符串内容,而`insert`允许在任意位置插入字符串或字符。最后,`erase`函数用于删除字符串中的部分内容。每个函数都配以代码示例和说明。
|
1天前
|
安全 编译器 C++
【C++】string类的使用②(元素获取Element access)
```markdown 探索C++ `string`方法:`clear()`保持容量不变使字符串变空;`empty()`检查长度是否为0;C++11的`shrink_to_fit()`尝试减少容量。`operator[]`和`at()`安全访问元素,越界时`at()`抛异常。`back()`和`front()`分别访问首尾元素。了解这些,轻松操作字符串!💡 ```
|
1天前
|
安全 Java
Java中的集合类性能比较与选择
Java中的集合类性能比较与选择