java基础扫盲-String类常用的方法

简介: java基础扫盲-String类常用的方法

1 扫盲-String类常用的方法

1.1:首先了解下String类的基本结构:

java.lang.Object 。。。。java.lang.String String类的直接父类是Object类。实现了如下Serializable, Comparable, CharSequence这三个接口

1.2:如何去定义一个字符串:

字符串是一个非常特殊的一个对象,使用双引号引来字面量就是字符串。A:String name="张三";

B:String name1=new String();

C:String name3=new String("张三");

"":字符串空也是一个对象。

1.3:String类中常用的方法

1:求字符串的长度:public int length();

  1. String  str1="aaaaa";
  2. System.out.println(str1.length());//5

2:求字符串某一位置字符:返回字符串中指定位置的字符:public  char  charAt(int index);

注意:字符串中第一个字符索引是0,最后一个是length()-1

  1. String  str1=new String("abc");      
  2. System.out.println(str1.charAt(1)); //b

3:提取子串:用String类的subString方法可以提取字符串中的子串,该方法有两种参数:1):该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回:public String substring(int beginIndex)

  1.  String  str1=new String("asdfzxc");
  2.  System.out.println(str1.substring(2));// dfzxc   [beginIndex,~]

2):该方法从beginIndex位置起,从当前字符串中取出endIndex-1位置的字符作为一个新的字符串返回:public String subString(int beginIndex,int endIndex)

  1.   String  str1=new String("asdfzxc");
  2.   System.out.println(str1.substring(2,4));//df  [beginIndex,endIndex)

4:字符串比较 1) public int compareTo(String anotherString):该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。

  1.  String  str1=new String("asdfzxc");
  2.  String  str2=new String("ASDFZXC");
  3.  System.out.println(str1.compareTo(str2));//32

2)   public int compareToIgnore(String anotherString):与compareTo方法相似,

但忽略大小写。

  1. String  str1=new String("asdfzxc");
  2.   String  str2=new String("ASDFZXC");
  3.   System.out.println(str1.compareToIgnoreCase(str2));//0

3)   public boolean equals(Object anotherObject):比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。

  1.  String  str1=new String("ASDFZXC");
  2.   String  str2=new String("ASDFZXC");
  3.   System.out.println(str1.equals(str2));//true

String类中的equals方法重写了Object类中的equals方法:

  1.  public boolean equals(Object anObject) {
  2.        //如果当前的引用和传过来的引用相同的话,直接返回true
  3.        if (this == anObject) {
  4.            return true;
  5.        }
  6.        //instanceof:用来计算当前的对象是否是String类的实例或者是String类的本身
  7.        if (anObject instanceof String) {
  8.        //拿到当前的字符串
  9.            String anotherString = (String)anObject;
  10.        //拿到内容的长度
  11.            int n = value.length;
  12.        //和当前的内容的长度进行比较,如果内容长度相同的话,再继续比价每个字符是否相同
  13.            if (n == anotherString.value.length) {
  14.                char v1[] = value;
  15.                char v2[] = anotherString.value;
  16.                int i = 0;
  17.                while (n-- != 0) {
  18.                    if (v1[i] != v2[i])
  19.                        return false;
  20.                    i++;
  21.                }
  22.                return true;
  23.            }
  24.        }
  25.        //如果内容不相同则返回false。
  26.        return false;
  27.    }

4)  public boolean equalsIgnoreCase(String anotherString):与equals方法相似,但忽略大小写。

  1.     String  str1=new String("asdfzxc");
  2.     String  str2=new String("ASDFZXC");
  3.     System.out.println(str1.equalsIgnoreCase(str2));//true

equalsIgnoreCase方法的源代码如下:

      public boolean equalsIgnoreCase(String anotherString) {

        return (this == anotherString) ? true

               : (anotherString != null)

  1.              && (anotherString.value.length == value.length)

                && regionMatches(true, 0, anotherString, 0, value.length);

  1.    }
  2.    public boolean regionMatches(boolean ignoreCase, int toffset,
  3.            String other, int ooffset, int len) {
  4.        char ta[] = value;
  5.        int to = toffset;
  6.        char pa[] = other.value;
  7.        int po = ooffset;
  8.        // Note: toffset, ooffset, or len might be near -1>>>1.
  9.        if ((ooffset < 0) || (toffset < 0)
  10.                || (toffset > (long)value.length - len)
  11.                || (ooffset > (long)other.value.length - len)) {
  12.            return false;
  13.        }
  14.        while (len-- > 0) {
  15.            char c1 = ta[to++];
  16.            char c2 = pa[po++];
  17.            if (c1 == c2) {
  18.                continue;
  19.            }
  20.            if (ignoreCase) {
  21.                // If characters don't match but case may be ignored,
  22.                // try converting both characters to uppercase.
  23.                // If the results match, then the comparison scan should
  24.                // continue.
  25.                char u1 = Character.toUpperCase(c1);
  26.                char u2 = Character.toUpperCase(c2);
  27.                if (u1 == u2) {
  28.                    continue;
  29.                }
  30.                // Unfortunately, conversion to uppercase does not work properly
  31.                // for the Georgian alphabet, which has strange rules about case
  32.                // conversion.  So we need to make one last check before
  33.                // exiting.
  34.                if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
  35.                    continue;
  36.                }
  37.            }
  38.            return false;
  39.        }
  40.        return true;
  41.    }

5) contentEquals比较两个字符串的内容是否相同

  1.     String  str1=new String("asdfzxc");
  2.     String  str2=new String("ASDFZXC");
  3.     System.out.println(str1.contentEquals(str2));//false

5:replace:替换的方法 1)public String replace(char oldChar, char newChar):用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。

  1.   System.out.println("fluck fluck fluck".replace("f","l"));//luck  luck  luck

2) public String replaceFirst(String regex, String replacement):该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。

  1.   String str3 = str.replaceFirst("asd","fgh");//str3 = "fghzxcasd"

3) public String replaceAll(String regex, String replacement):该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。

  1.   String str4 = str.replaceAll("asd","fgh");//str4 = "fghzxcfgh"

注意:replace方法不能使用正则表达式,replaceAll方法可以使用正则表达式

6: String[] split(String str):将str作为分隔符进行字符串分解,分解后的字字符串在字符串数组中返回。

    String personString="张三_10_男";

     String[] person = personString.split("_");

     System.out.println(person);//[Ljava.lang.String;@15db9742]

  1.  for(String info:person){
  2.            System.out.print(info);//张三 10 男
  3.        }
  4.   String personString="张三_10_男";
  5.   String[] person = personString.split("_");
  6.   System.out.println(Arrays.toString(person));//[张三,10,男]
相关文章
|
2月前
|
Java 开发者
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
123 0
|
16天前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
48 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
17天前
|
JavaScript 前端开发 Java
Java 编程进阶实操中工具集整合组件封装方法与使用指南详解
本文详细介绍Hutool工具集和图书管理系统相关组件的封装方法及使用示例。通过通用工具类封装(如日期格式化、字符串处理、加密等)、数据库操作封装(结合Hutool DbUtil与MyBatis)、前端Vue组件封装(图书列表与借阅表单)以及后端服务层封装(业务逻辑实现与REST API设计),帮助开发者提升代码复用性与可维护性。同时,提供最佳实践建议,如单一职责原则、高内聚低耦合、参数配置化等,助力高效开发。适用于Java编程进阶学习与实际项目应用。
87 10
|
1月前
|
人工智能 安全 Java
Java并发包下Atomic相关类的使用
本文介绍了 `java.util.concurrent.atomic` 包下的各类原子类及其使用场景,包括基本类型原子类(如 `AtomicInteger`、`AtomicLong`)、数组类型原子类(如 `AtomicIntegerArray`)、引用类型原子类(如 `AtomicReference`)、对象属性修改原子类(如 `AtomicIntegerFieldUpdater`)以及原子操作增强类(如 `LongAdder` 和 `LongAccumulator`)。同时,详细对比了不同原子类在高并发场景下的性能表现,展示了 `LongAdder` 的高效性。
78 31
|
1月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
152 20
|
1月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
59 9
|
13天前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
|
28天前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
36 0
|
28天前
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
167 0
|
2月前
|
Java 数据安全/隐私保护
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
下一篇
oss创建bucket