千家信息网

Java中String类字符串怎么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关Java中String类字符串怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言在java中,和C语言一样,也有关于字符串的定
千家信息网最后更新 2026年10月31日Java中String类字符串怎么用

这篇文章将为大家详细讲解有关Java中String类字符串怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、前言

在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们一起来学习一下。

二、String类概述

string在软件包java.lang下,所以不需要导包。

String字符串是java中的重点,String 类表示字符串类 ,所有的字符串(如"adf")都属于

此类,也就是说有" "双引号括起来的都属于此类,

三、字符串的特点

字符串不可变,他们的值在创建之后不能被改变。

虽然String的值的不可变的,但是他们可以被共享。共享就是其他成员也可以拥有这个值,

字符串效果相当于数组(char[] ),但是底层原理是字节数组(byte[] )

jdk8以前是字符数组,jdk9以后是字节数组。

四、String 构造方法

public String()  //创建一个空白字符串对象,不含有任何内容。public String(char[] ch)//根据字符数组的内容来创建字符对象。public String (byte[] b)//根据字节数组的内容来创建字节对象。String s="abc"         //字节赋值的方式创建对象,内容就是abc。

图示:

代码演示:

public class StringDemo {    public static void main(String[] args) {        String s1=new String();//创建空的字符串,其中不包括任何内容        System.out.println("s1:"+s1);        char[]chs={'a','b','c'};        String s2=new String(chs);//给chs创建对象        System.out.println("chs:"+s2);//输出ch:abc        byte[]bys={97,98,99};        String s3=new String(bys);        System.out.println("bys:"+s3);//输出bys:abc,他会 转化成对应的Ascll码值        String s4="abc";        System.out.println("s4:"+s4);//输出s4:abc    }}

综上看,推荐使用直接赋值的方式得到字符串对象。

五、String类对象的特点

通过new创建的的字符串对象,每一次new都会申请一个内存空间,虽然内容一样,但是地址不同

通过直接赋值的方式来创建对象,赋值相同的值,因为是常量在堆内存的常量池中,进入常量池的规则是:如果常量池中没有这个常量,则在常量池中创建一个,如果有,则把已经存在的常量地址赋值给他,所以创建不同的变量去接受相同的值,他的内容是一样的,地址也是一样的 。

六、比较字符串的方法

我们在比较两个数字是否相同时,一般用的是==来判断,那么要比较两个字符串相等

用的是什么呢,答案是用equals。

==用来判断两个字符串的地址是否相同,相同返回true,不同返回false。

equals用来比较两个字符串的值是否相同,相同返回true,不同返回false。

用法:

public class String1 {    public static void main(String[] args) {        String s1="hello";        String s2="world";        String  s3= "helloworld";        String s4=s1+s2;        System.out.println(s7==s8);//0        System.out.println(s3==s4);//比较两个字符串的地址是否相同        System.out.println(s3.equals(s4));//比较两个字符串中的值是否相同    }}

代码图示:

原因下文分析。

七、判断两个字符串地址是否相等

在字符串中,两个字符串相加可以的到一个新的字符串,这是我们知道的,但是地址会是一样的吗

看下列代码:

public class String1 {    public static void main(String[] args) {        String s1="hello";        String s2="world";        String  s3= "helloworld";        String s4=s1+s2;        String s5="he"+"llo";        String s6="hello"+"world";        String s7="hello"+s2;        String s8=s1+"world";        System.out.println(s3==s6);//比较两个地址是否相同        System.out.println(s1==s5);        System.out.println(s3==s7);        System.out.println(s3==s8);         System.out.println(s7==s8);        System.out.println(s3==s4);        System.out.println(s3.equals(s4));//比较两个字符串中的值是否相同    }}

我们仔细分析:

第一个:

   String  s3= "helloworld";   String s6="hello"+"world";

s3首先在常量池中创建了一个helloworld的常量,s6是有两个新的字符串连接起来的,

这两个字符串常量创建新的字符串常量,存储在常量池中时,因为helloworld已经存在,

所以常量池就不会创建新的字符串了,直接把已经存在的s3地址赋值给s6,所以他们地址

相同。

第二个:

String s1="hello"; String s5="he"+"llo";

这个分析和第一个一样,地址相同。

第三个:

  String s2="world";String  s3= "helloworld";String s7="hello"+s2;

s2在常量池中创建world,s3在常量池中创建helloworld,s7是由一个变量s2连接一

个新的字符串"world",首先会在常量池创建字符串"world",然后两者之间进行"+"

操作,根据字符串的串联规则,s7会在堆内存中创建StringBuilder(或StringBuffer)

对象,通过append方法拼接s2和字符串常量"world",此时拼接成的字符串"helloworld"

是StringBuilder(或StringBuffer)类型的对象,通过调用toString方法转成String对

象"helloworld",所以s7此时实际指向的是堆内存中的"helloworld"对象,堆内存中对

象的地址和常量池中对象的地址不一样。

StringBuilder和StringBuffer的区别

  • 1.StringBuffer 对几乎所有的方法都实现了同步,线程比较安全,在多线程系统中可以保

  • 证数据同步。

  • 2.StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder。

  • 3.当需要考虑线程安全的场景下使用 StringBuffer,如果不需要考虑线程安全,追求效率的场

  • 景下可以使用 StringBuilder。

第四个:

 String s1="hello";String  s3= "helloworld"; String s8=s1+"world";

解释同上,重新简单的说一下,s3在先在常量池中创建helloworld,s8是由变量s1和常量

world加起来的,会先在常量池中创建world,然他他们现在之后会在堆内存中存在,所以

他们的地址不同。

总结:一般带有变量的相加操作是在堆中创建的

第五个:

   String s1="hello";        String s2="world";        String s7="hello"+s2;        String s8=s1+"world";

解释和上面有些相似之处,他们都是有变量加常量,所以他们都是在堆内存中创建的,

堆内存的地址是不会相同的。

第六个:

 String s1="hello";  String s2="world"; String  s3= "helloworld";   String s4=s1+s2;

首先在常量池中创建唯一的常量,然后再,s4进行两个变量的相加操作,所生成的是在
堆内存中的,所以地址不同。

关于"Java中String类字符串怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

字符 字符串 常量 地址 对象 相同 两个 中创 内存 内容 不同 数组 线程 变量 字节 方法 安全 代码 方式 是在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 花魁咖啡 广东万易互联网科技有限公司惠州分公司 广州淘业互联网络科技 朗新科技与工业互联网 平安科技 互联网 互联网 的科技创新 掌上梦互联网科技 互联网科技公司名称 金融科技和互联网金融 宁波青枫互联网科技有限公司 互联网金融中的现代科技 南平创想时代互联网科技有限公司 厦门千工互联网科技有限公司 移动互联网年度科技创新 注册互联网科技公司经营范围大全 哈尔滨屹滨互联网科技有限公司 中科明德北京互联网科技 科技互联网专业工作会议发言稿 长沙易易互联网科技有限公司 迪茉互联网科技 新华互联网科技校企合作 农村开互联网科技讲堂 创业天下互联网科技有限公司 互联网科技与大数据专业 美国互联网科技实力 中天科技中国工业互联网 郑州欣桑互联网科技有限公司 吉林省码上互联网科技电话 中国科技和美国互联网
0