首页 > 其他分享 >String类及其衍生类的简单理解

String类及其衍生类的简单理解

时间:2025-01-18 10:25:10浏览次数:1  
标签:arr String StringBuilder 理解 new sb 衍生 append

String类及其衍生类的简单理解

String

String指的是字符串的类,在java中,它是不可以更改的。

1.下面简单介绍两种构造方法。

public class haohaoxuexi {

    public static void main(String[] args) {

        String a=new String();
        String b="abc";
    }
}

这是两种常用的构造方法

但值得注意的是,两者在内存的存储中有很大区别,其上,a变量储存在堆区中,而b变量储存在串池中。

2.那我们该如何比较两个字符串的内容是否一致呢?

大多数一开始都会想的“”,但String是引用数据类型,只有是基本数据类型,“”才能判断内容是否相等,如果是引用数据类型,则是判断地址值是否相等,这显然违背了我们的初衷。

String类中封装了很多方法,其中就有方法解决了这个问题,下面进行简单的演示

public class haohaoxuexi {

    public static void main(String[] args) {

        String a=new String("abc");
        String b="abc";
        a.equals(b);
        a.equalsIgnoreCase(b);
    }

equals就是判断a与b变量内容是否相等的方法,这高效的解决了这个问题。

3.java与c++不同的是,java中的string类没有提供【】运算符的重载,那我们该如何遍历我们的String类呢?

java中同样提供了丰富的方法解决这个问题,下面进行简单的演示。

public class haohaoxuexi {

    public static void main(String[] args) {

        String a=new String("abc");
        for (int i = 0; i <a.length() ; i++) {
            a.charAt(i);
        }
    }
}

charAt方法可以拿出String中的每一个字母,,这样就提供了便利的方法。

此外还有一种方法,就是把String转换为字符数组进行遍历,简单的代码演示如下

String a = new String("abc");
char[] arr = a.toCharArray();//字符数组故为char
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

既然字符串可以转变为字符数组,字符数组自然可以转变为字符串。这便衍生出了String的第三种构造方式

String a = new String("abc");
char[] arr = a.toCharArray();//字符数组故为char
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}
String b=new String(arr);

如上,字符数组arr又可以被字符串b进行接受,但值得注意的是,他们本身不是一种形式转换为另外一种形式,而是不同数据类型间内容不变的拷贝。

StringBuilder类

StringBuilder是一个容器,它的主要功能是字符串的拼接与反转。与String最大的不同是,该容器是可以变化的,所以极大减少了拼接时候的运行效率,

下面展示一下他的拼接操作与反转操作

StringBuilder sb= new StringBuilder();
sb.append("a");
sb.append("b");
sb.append("c");
sb.append("d");
 System.out.println(sb);

这样便打印出了a,b,c,d,因为append方法的返回值是Stringbuilder,所以可以采取链式编程

   StringBuilder sb= new StringBuilder();
   sb.append("a").append("b").append("c").append("d");
}

下面介绍他的反转操作

StringBuilder sb= new StringBuilder();
sb.append("a").append("b").append("c").append("d");
sb=sb.reverse();
System.out.println(sb);

调用了reverse方法,打印出来的便是dcba

这便是对String和StringBuilder类的简单理解。

标签:arr,String,StringBuilder,理解,new,sb,衍生,append
From: https://www.cnblogs.com/lanyangyangxuejava/p/18678082

相关文章

  • 深入理解 Linux systemd 单元类型及配置详解
    深入理解Linuxsystemd单元类型及配置详解在Linux系统中,systemd是一种强大的初始化系统和服务管理工具,它通过**单元(Unit)**来管理服务、文件系统、设备等。systemd支持多种单元类型,如服务单元(.service)、目标单元(.target)、挂载单元(.mount)、设备单元(.device)、计时单元(.t......
  • 你有用过弹性布局吗?说说你对它的理解
    当然,弹性布局(Flexbox)是前端开发中常用的一种布局方式,它提供了一种更加灵活和高效的方式来创建复杂的布局结构,特别是当你的设计不仅仅是基于简单的块级或行内文本流时。以下是我对弹性布局的理解:基本概念:弹性布局是一种CSS布局模式,它允许你设计复杂的布局结构,而无需使用浮动或定......
  • 你上家公司有写日报、周报或者月报吗?说说你对写日(周、月)这事的理解
    在我之前的公司,我们确实有写日报、周报和月报的习惯。这些报告不仅用于记录我们的工作进展,还是与团队成员和上级进行沟通的重要工具。以下是我对写日(周、月)报这件事的理解,特别是在前端开发领域:一、日报日报主要用于记录当天的工作内容和遇到的问题。对于前端开发者来说,日报可以......
  • 对需求的理解与实践
    一、什么是好的需求需求的质量重于数量:需求并非越多越好,也并非越详细越好。一个好的需求应属于一系列关联需求的一部分,这些需求共同支撑一个发布版本,并为用户提供明确的价值。验收条件:每个需求应有明确的验收条件,达到这些条件即视为需求完成。可讨论与不可讨论的部分:需求......
  • 深入理解第三范式(3NF):数据库设计中的重要性与实践
    title:深入理解第三范式(3NF):数据库设计中的重要性与实践date:2025/1/17updated:2025/1/17author:cmdragonexcerpt:在数据库设计中,规范化是确保数据完整性、减少冗余和提高查询效率的关键过程。第三范式(3NF)作为关系数据库设计的高级规范,建立在前两范式(1NF和2NF)的......
  • 深入理解第二范式(2NF):提升数据库设计的有效性与灵活性
    title:深入理解第二范式(2NF):提升数据库设计的有效性与灵活性date:2025/1/16updated:2025/1/16author:cmdragonexcerpt:数据库的规范化是确保数据完整性和消除数据冗余的关键过程。第二范式(2NF)是关系数据库设计中的重要概念,进一步建立在第一范式的基础之上。通过......
  • Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生
    一、生物素及其衍生物的概述      生物素衍生物是指在生物素(VitaminH或B7)分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。    生物素(Biotin)是一种水溶性维生素,也被称为维生素H或维生素......
  • Java中String类常用的各种方法
    Java中String类常见的方法以下介绍字符串常见的几个方法。介绍String类在Java中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实际上会创建一个新的String对象。......
  • 深入理解 Three.js 加载器:如何导入外部模型(GLTF、OBJ、FBX)
    深入理解Three.js加载器:如何导入外部模型(GLTF、OBJ、FBX)Three.js提供了强大的加载器系统,可以轻松地将外部模型(如GLTF、OBJ、FBX等格式)加载到场景中,为你的3D项目增添真实感。在这篇文章中,我们将深入讲解Three.js加载器的使用方法,并结合实际案例展示如何在Vue项......
  • 说说你对重构的理解
    在前端开发中,重构是指对现有代码进行结构性调整和优化,以提高代码的可读性、可维护性、可扩展性和性能,同时确保代码的功能不发生变化。重构是一个持续的过程,旨在改善代码的内部结构,使其更加健壮和灵活,以适应未来的需求变化。以下是我对前端开发中重构的一些理解:提高代码质量:重......