首页 > 其他分享 >String字符串定义、用法及不可变性

String字符串定义、用法及不可变性

时间:2025-01-21 11:03:17浏览次数:3  
标签:String System println 数组 字符串 可变性 out

文章目录

前言

一、String是什么?

二、使用方法

1.定义字符串

代码如下(示例):

2.定义字符串数组

代码如下(示例):

三、不可变性

代码如下(示例):

总结


前言

大家在学习Java语言时,String字符串类是一块不能缺失的学习内容,所以String是什么?该怎么用?以及它为什么是不可变的?接下来的内容将对以上问题一一解答!

一、String是什么?

String是JAVA数据类型中的一种“引用数据类型”,本身也是一个class类,可以用来定义字符串以及字符串数组。

二、使用方法

1.定义字符串

代码如下(示例):

直接通过String定义字符串,其中内容可以通过"   "存入变量,也可以通过char数组将每一个字存入字符串。

  public static void main(String[] args) {
        String s1 = "无人扶我青云志";

        String s2 = new String(
                new char[]{'我','自','踏','雪','至','山','巅'},0,4
        );
        System.out.println(s1);
        System.out.println(s2);
    }

运行结果如下: 

2.定义字符串数组

代码如下(示例):

通过String[ ]来定义一个字符串数组



public class Test2 {
    public static void main(String[] args) {
        String[] arry1 = {"泰罗","迪迦","赛文","初代","赛罗","戴拿"};
        System.out.println(arry1);
        System.out.println(Arrays.toString(arry1));
    }
}

运行结果: 

字符串数组若直接使用System.out.println(arry1)输出,最终的输出结果为:[Ljava.lang.String;@1b6d3586即String类所在的路径,以及一串由该数组地址计算出的哈希值。所以当我们输出字符数组时需借助Arrays工具类的.toString()方法,将字符串数组的内容输出。

三、不可变性

代码如下(示例):

当对字符经行修改操作后,原字符串不做更改,若要显示更改后的内容,需有一个新的字符串来重新接收修改后的值,或者重新指向自己,进行值的更改。

  public static void main(String[] args) {

        String s = "Hello";
        System.out.println("原字符串:" + s);

        // s未指向新的字符串
        s.toUpperCase();//将字符串中的内容转为大写
        System.out.println("s未指向新的字符串时:" + s);

        //s重新指向s
        s = s.toUpperCase();
        System.out.println("s重新指向自己:" + s);

        //s指向s1
        String s1 = s.toUpperCase();
        System.out.println("显示s指向的新字符串:" + s1);
    }

运行结果:

 根据Sting的核心代码块可以看出String类,内部的数据结构也是一个私有的char类型的数组,且有着final关键字定义,而final有着最终的意思,用final定义的“基本数据类型”无法在被修改,故而正是因为有着final关键字的存在,所以内部数组无法在修改。


总结

总的来说String是一个JAVA定义好的字符串类,其内部为一个char数组,且该数组使用private final定义的,故而在使用时无法在原字符串上修改,所有的操作都将返回一个新的字符串!

标签:String,System,println,数组,字符串,可变性,out
From: https://blog.csdn.net/cyf123__/article/details/145145017

相关文章

  • 《String类的equals()的作用和源代码解读》
    一、equals()方法的由来equals()最开始是定义在Java.lang包下的Object中的一个经行比较的方法,根据Object类的核心代码可以看出来,在Object类中equals()方法比较时使用“==”运算符来比较两者地址,但实际应用情况下,人们往往想比较两者的值是否相同,当两个相同的值存进不同内存地址时......
  • 字符串哈希详解
    哈希函数的选取通常我们采用的是多项式Hash的方法,对于一个长度为l的字符串s来说,我们可以这样定义多项式Hash函数:其中,M需要选择一个素数(至少要比最大的字符要大),b是一个比最大字符大的整数。(ASCII码值比较)之所以选择这样的哈希函数,不仅是因为它不容易产生哈希碰撞(就......
  • TIA SCL编程清除字符串中所有的空格
    今天做一个小的练习,这是2025年第一个记录的学习笔记。在IA新建一个FC,名字叫做TrimSpace,建立以下内部变量: 写一段SCL代码:#len:=LEN(#str_in);#str_trim_out:='';FOR#i:=1TO#lenDOIFMID(IN:=#str_in,L:=1,P:=#i)<>''THEN#str_t......
  • String类的equals()的作用和源代码解读
    1. 了解equals()方法equals方法是用于比较两个对象是否相等的方法,定义在Object类中。其默认实现仅比较对象的引用地址,但可以通过重写方法实现对对象内容的比较。只有引用数据类型才可以使用equals方法,我们点进equals方法的源码:我们看代码前几行,观察到当传入进来的参数之间......
  • 【leetcode 22】541. 反转字符串II
    思路:其实在遍历字符串的过程中,只要让i+=(2*k),i每次移动2*k就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2*k区间的起点,这样写,程序会高效很多。classSolution{publicStringreverseStr(Strings,intk){char[]ch=s.toCh......
  • 内存字符串有关问题
    问题一:#include<iostream>#include<cstdint>#include<cstring>usingnamespacestd;typedefstructdata{charhwid[4];charsip[4];charrev[4];}Data;intmain(){Datastdata;memset(&stdata,0,sizeof(stdata));......
  • 字符串
    字符串定义字符串:由若干个字符构成的字符序列,每一个字符位置是固定的在java中,提供了一个类来表示字符串:StringJava程序中的所有字符串文字(例如"abc")都被实现为此类的实例【对象】。因为String对象是不可变的,它们可以被共享。思考思考:1、同一个内容的字符串,为什么地......
  • 学霸带你游戏化理解字符串操作与匹配算法
    游戏开发字符串操作应用在现代游戏开发中,字符串处理是一个不可或缺的环节。游戏中的文本内容、玩家输入、动态生成的关卡信息等,都依赖于高效和精确的字符串操作。无论是在处理任务文本、玩家名字,还是实时聊天信息、语言本地化,字符串的高效管理和优化都直接影响着游戏的性能和......
  • 算法随笔_9:压缩字符串
    上一篇: 算法随笔_8:寻找重复数-CSDN博客题目描述如下:给你一个字符数组 chars ,请使用下述算法压缩:从一个空字符串 s 开始。对于 chars 中的每组连续重复字符 :如果这一组长度为 1 ,则将字符追加到 s 中。否则,需要向 s 追加字符,后跟这一组的长度。压缩后得到......
  • LeetCode题练习与总结:反转字符串中的单词 Ⅲ -- 557
    一、题目描述给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入:s="Let'stakeLeetCodecontest"输出:"s'teLekatedoCteeLtsetnoc"示例2:输入:s="MrDing"输出:"rMgniD"提示:1<=s.length<=5*10^......