iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java String类的性质与比较
  • 908
分享到

Java String类的性质与比较

2024-04-02 19:04:59 908人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1.什么是String?2.String类的构造方法3.String类的性质4.String之间的相互比较1.什么是String? 首先,初学者一定要知道String是一个类,

1.什么是String?

首先,初学者一定要知道String是一个类,它是字符串类型,但它不属于基本数据类。 所谓字符串类型,意思就好比将字符(也就是char类型)像烤串一样串起来,列如' a '和' b '拼接起来变成"ab"(注意字符串使用双引号)。' a '和' b'是字符类型也就是char类型,而" ab"则是一个字符串类型。ps:字符串可以为中文

当然以上只是口头描述,具体的解释还是看jdk文档

2.String类的构造方法

学习一个类首先需要学习它的构造方法,掌握了它的所有实例化方式才能更好的使用它,以下是jdk文档对String类构造方法的总结。(ps:jdk文档对我们的学习具有很大帮助,里面记录了java所有的包和接口,可以去网上下载一个中文版的)

通过jdk文档中我们可以看出String类的构造方法很多,但是我们只要掌握常用的二种即可

1.public String(char[] value)

public String(char[] value)
通过传入一个char[]构建一个String对象,会将char[]内的数据挨个拼接成一个字符串。在写代码的过程中经常会涉及到char与String的转换,所以该方法需要熟记

下面为代码演示


public class myString {
    public static void main(String[] args) {
        char[] arr={'a','b','c','d'};
        String string = new String(arr);
        System.out.println(string);//abcd
 
    }
}

2.public String(char[] value, int offset, int count)

public String(char[] value,int offset,int count)
第二种构造方法是在第一种的基础上多了两个变量,其中offset是初始的偏移量,count是我们需要复制的长度,就是在数组value上选取一部分成为String对象。该方法在某些情况下会使用到,需要记住

下面为代码演示


public class myString {
    public static void main(String[] args) {
        char[] arr={'a','b','c','d','e','f'};
        String string = new String(arr,1,4);
        System.out.println(string);//bcde
          //offect为开始复制的下标,count为复制的长度
    
    }
}

byte类型的数组转化为String其实也同理与char,这里也不过多叙述,我们使用String时通常是像常用数据类型一样直接使用给它赋值,学好String最主要还是学好它的性质。

3.String类的性质

jdk文档中可以很清楚的看见在String类的声明中它被finaly修饰,所以它具有不可变性。

但是这个不可变性怎么理解呢?


public class myString {
    public static void main(String[] args) {
        int b=100;
        System.out.println(b);//100
        b=10;
        System.out.println(b);//10
 
        String a="aaaa";
        System.out.println(a);//aaaa
        a="bbbb";
        System.out.println(a);bbbb
 
    }
}

有人看到这段代码打印结果就会发出疑问,a的值不一样和b变化了吗?

但这里我们要搞清楚一个误区:a只是一个String对象的引用,它保存的是这个String对象的地址,并不是String本身,我们通过访问a去访问到String对象实际的内容

我们通过一个图来了解

修改后:

对图解析:我们可以发现我们将对a赋值"bbbb"时,原来的字符串常量池中的aaaa并未改变,而是在字符串常量池中重新产生了一个新的String对象"bbbb",并让a指向它。所以我们说的不可变性是指String对象的内容一旦确定是无法更改的。这需要我们时刻记住

通过String类的不可变性,就产生了String的最大考点。

4.String之间的相互比较

String类是非常重要且常见的类,我们使用的场景非常多,对String类之间是否相等的比较情况场景非常多见,掌握比较String比较的能力必不可少。

1.


 
    public class myString {
        public static void main(String[] args) {
             
            String a1=new String("AAAA");
            String a2=new String("BBBB");
            System.out.println(a1==a2);//false
            System.out.println(a2.equals(a2));//true
        }
    }

解析:虽然a1与a2指向的对象内容相同,但地址不同,两者指向的不是同一个对象,==比较的是地址,而equals比较的是内容

2.


 public class myString {
        public static void main(String[] args) {
 
            String a1=new String("AAAA");
            String a2=a1;
            System.out.println(a1==a2);//true
            System.out.println(a2.equals(a2));//true
        }
    }
 
 
 
  public static void main(String[] args) {
    
                String a1=new String("AAAA");
                String a2=new String(a1);
                System.out.println(a1==a2);//false
                System.out.println(a2.equals(a2));//true
            }
    }

解析:这里将String当做基本类型使用,上面将a1赋值给a2的操作,可以理解为a1的地址赋值给a2,所以a1与a2存放的都是"AAAA"的地址。而下面的代码将a1作为参数给a2,会重新开辟一片内存空间给a2,使其内容与a1一致,但地址不一样。

3、


public class myString {
            public static void main(String[] args) {
 
                String a1="aaaa";
                String a2="aaaa";
                System.out.println(a1==a2);//true
                System.out.println(a2.equals(a2));//true
            }
    }

解析:当做基本数据类型使用的String对象会保留在字符串常量池中,每一次这样使用时JVM会检索常量池是否已经存在,如果已经存在将不会再创建,而是让新的引用再次指向已经存在的String对象

总结:对于String类的比较我们需要使用equals,因为equals单单只考虑字符串的内容,而==还需要考虑地址

到此这篇关于Java String类的性质与比较的文章就介绍到这了,更多相关Java String内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java String类的性质与比较

本文链接: https://www.lsjlt.com/news/154898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java String类的性质与比较
    目录1.什么是String?2.String类的构造方法3.String类的性质4.String之间的相互比较1.什么是String? 首先,初学者一定要知道String是一个类,...
    99+
    2022-11-12
  • String类下compareTo()与compare()方法比较
    String类下compareTo()与compare()方法比较这两个方法经常搞混淆,现对其进行总结以加深记忆。compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某...
    99+
    2023-05-31
    string compareto() compare()
  • Java基础之String类使用与字符串比较
    目录一、String类概述二、String类的特点三、String类的构造方法四、创建字符串对象两种方式的区别五、字符串的比较六、用户登录案例一、String类概述 String类代...
    99+
    2022-11-13
  • Java中比较抽象类与接口的异同
    目录一.抽象类(一)概念(二)抽象类和抽象方法(三)使用抽象类的意义二.接口(一)概念(二)语法三.比较抽象类与接口Q: 为什么有了抽象类还要接口? Q: 如何确定在什么情况下应该使...
    99+
    2022-11-12
  • FreeBSD8.0与Ubuntu9.10的性能比较
    本篇内容介绍了“FreeBSD8.0与Ubuntu9.10的性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ubuntu 9...
    99+
    2023-06-17
  • Go和Laravel:数据类型的比较与对比
    Go和Laravel是两种不同的编程语言,各有其独特的特点和优势。其中,数据类型是两种语言中最为基础和重要的部分,本文将从数据类型的角度对Go和Laravel进行比较与对比。 一、基础数据类型 Go和Laravel的基础数据类型都有一些相...
    99+
    2023-07-19
    numy laravel 数据类型
  • Java中怎么比较抽象类与接口的异同
    本篇内容主要讲解“Java中怎么比较抽象类与接口的异同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么比较抽象类与接口的异同”吧!一.抽象类(一)概念    &n...
    99+
    2023-06-22
  • java string比较大小的方法是什么
    在Java中,可以使用以下几种方法来比较字符串的大小:1. 使用`equals()`方法:`equals()`方法比较两个字符串是否...
    99+
    2023-09-04
    java
  • Java抽象类和接口的比较
    这篇文章主要介绍“Java抽象类和接口的比较”,在日常操作中,相信很多人在Java抽象类和接口的比较问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java抽象类和接口的比较”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • Percona Server与MySQL 5.5性能的比较
    本篇内容介绍了“Percona Server与MySQL 5.5性能的比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2022-10-18
  • PHP与JSP的性能测试比较
    小编给大家分享一下PHP与JSP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!测试环境:◆硬件:P4 2.4G,1G内存◆软件:WindowsXP+...
    99+
    2023-06-17
  • 【数据结构Java版】对象的比较之Comparable与Comparator比较器
    目录   一、基本类型的比较 二、对象类型的比较 (1)对象类型比较出现的问题 (2)重写基类equals方法 (3)基于Comparable接口的比较 1.实现Comparable接口,重写compareTo方法 (4)基于Compara...
    99+
    2023-09-06
    数据结构 比较 Comparable Comparator 算法
  • Java中long类型与Long类型的区别和大小比较详解
    前言最近在学习java,接触到了long类型,发现网上这方面的资料较乱,所以决定总结一下,在Java中我们经常要做一些判断,而对于判断的话,用的最多的便是“>”、“==”、“<”的比较,这里我们进行一个Long类型数据和long...
    99+
    2023-05-30
    java long类型 ava
  • java中Javers 比较两个类的差异
    目录Javers引入方法:示例遇到的问题:BigDecimalDate相关注解Javers 在开发过程中遇到需求,比较数据库中的原数据与新修改要写入库中的数据。这个实体类是比较复杂的...
    99+
    2022-11-13
  • 深入理解JAVA抽象类和接口的比较与异同
    目录一、理解抽象类  二、从语法定义层面看抽象类和接口三、从编程的角度看抽象类和接口四、从设计理念层面看抽象类和接口五、总结 抽象类(abstract ...
    99+
    2022-11-13
  • Java NIO与IO的区别以及比较
    目录前言一、NIO的简介二、IO的传统方式三、NIO的详细介绍四. 举例说明前言 传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内...
    99+
    2022-11-13
  • Java中常用的json库性能比较
    本篇内容介绍了“Java中常用的json库性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用于比较的库用4中json库进行比较,分别是...
    99+
    2023-06-16
  • Java 与 Python两种编程语言的比较
    Java 和 Python 是两种非常流行的编程语言,它们都有自己的优势和特点。下面是 Java 和 Python 的比较: Java Java 是一种静态类型的编程语言,主要用于构建大型、高性能、跨平台的应用程序。以下是 Java 的一些...
    99+
    2023-09-21
    python java 开发语言
  • java中int转string与string转int的效率对比
    目录int转string与string转int的效率对比string转int,两种方法int转string一般用三种方法string转int问题分析分析一波1、针对传入的字符串为空对...
    99+
    2022-11-13
  • Java生成随机数之Random与ThreadLocalRandom性能比较详解
    目录前言Random的使用实现原理ThreadLocalRandom的使用实现原理性能对比总结前言 大家项目中如果有生成随机数的需求,我想大多都会选择使用Random来实现,它内部使...
    99+
    2022-12-15
    Java Random ThreadLocalRandom Java Random Java ThreadLocalRandom Java 随机数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作