千家信息网

Java基础之怎么理解字符串String

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Java基础之怎么理解字符串String",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java基础之怎么理解字符串String"吧!字符
千家信息网最后更新 2026年10月31日Java基础之怎么理解字符串String

本篇内容主要讲解"Java基础之怎么理解字符串String",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java基础之怎么理解字符串String"吧!

  字符串常量不可变

  底层原码中使用final修饰 char[] value来存储字符串的值。字符串常量是存在常量池中,一旦声明,就不可以改变,同时常量池中不会存储相同内容的字符串,即s1与s2是相等的。

  String s1 = "aaa";

  s1 = "bbb";

  System.out.println(s1);

  String s1 = "123";

  String s2 = "123";

  System.out.println(s1==s2);

  输出的s1的值是bbb,不是改变了么?注意这里的s1是引用对象,因此s1存在栈空间中,也就是s1与aaa并不存在同一内存空间中,只是中间连接了一条绳子将aaa指向了s1,现在这条绳子由bbb指向了s1,但是aaa其实还留在了常量池中,所以说字符串常量是不可改变的。

  除此之外,String还实现了Serializable接口,表示字符串可以被序列化,还实现了Comparable接口表示字符串可以比较大小

  null," "的区别

  String s1 = null

  String s2 = ""

  null代表的是空对象,并不是字符串,可以赋给任何对象,字符串中表示只是一个引用,还没有内存空间的分配

  " "表示引用已经指向了 一块内存空间了,是一个实际的东西,可以进行操作了,表示一个长度为0的字符串

  数组转成字符串(String的构造)

  String():构造一个空的字符串

  String(byte[] arr): 将字节数组变为一个字符串

  String(byte[] arr, int offset, int lengh): 将字节数组部分变为字符串

  String(char[] arr): 将char字节数组变为字符串

  String(char[] arr, int offset, int length): 将char字节数组部分变为字符串

  String(String original): 字符串常量构建字符串

  byte[]===>String

  全部转换:转换所有byte数据郑州祛胎记医院哪家好 http://www.zykdtj.com/

  byte[] b = {97,98,99,100};

  String str = new String(b);

  System.out.println(str);//abcd

  部分转换: 截取转换,超出索引,报出StringIndexOutOfBoundsException异常,通常Java中数组索引区间左开右闭的

  byte[] b = {97,98,99,100};

  String str = new String(b,1,3);

  System.out.println(str);//bc

  char[]转String等等一些数组转String的方式都和上述大同小异,这些都是对String方法使得构造

  ==与equals()的比较字符串是否相等

  == 比较的地址和内容都相等才相等

  equals()内容相等即是相等

  理解上面两句:

  String s1 = "123";①

  String s2 = "123";②

  String s3 = new String("123");③

  System.out.println(s1==s2);//正确

  System.out.println(s1==s3);//错误

  5

  只要明白了内存分布,判断不成问题。对于①,②来说,上面已经解释过了都在栈内存中,对于③来说,s3是对象存在Java堆中,s1,s2都是存在Java栈中,所以s1==s3是错误的!!!对于equals()就不一样了三者内容都是相等的。

  练习一:

  String s1 = new String("hello");

  String s2 = new String("hello");

  System.out.println(s1==s2);

  System.out.println(s1.equals(s2));

  String s3 = new String("hello");

  String s4 = "hello";

  System.out.println(s3==s4);

  System.out.println(s3.equals(s4));

  String s5 = "hello";

  String s6 = "hello";

  System.out.println(s5==s6);

  System.out.println(s5.equals(s6)

  字符串的拼接

  常量与常量的拼接还在常量池中

  常量池不可有相同的常量

  拼接的时候,只要存在变量都会存到堆中

  调用intern()方法返回常量池里面的常量

  String s1 = "hello";

  String s2 = "world";

  String s3 = "helloworld";

  System.out.println(s3==(s1+s2));//F 变量的连接存在堆中不相等

  System.out.println(s3==(s1+s2).intern());//T 获取的是值相等

  System.out.println(s3.equals(s1+s2));//T 获取内容相等

  System.out.println(s3=="hello" + "world");//T 常量与常量连接还在常量池中

  System.out.println(s3.equals("hello"+"world"));//T 内容相等

  字符串操作常用方法

  字符串的判断:

  equals方法比较两个字符串内容是否相等

  equalsIgnorecase忽略大小写比较两个对象是否相等

  contains是否包含字符串

  startsWith()是否以指定的字符串开头

  endsWIth()是否以指定的字符串结尾

  isEmpty()是否为空

  String s1 = "abcde";

  String s2 = "AbCde";

  String s3 = "abcde";

  //equals

  System.out.println(s1.equals(s2));//t

  System.out.println(s1.equals(s3));//f

  //equalsIgnorecase

  System.out.println(s1.equalsIgnoreCase(s2));//t

  System.out.println(s1.equalsIgnoreCase(s3));//t

  //是否包含指定字符串

  System.out.println(s1.contains("bd"));//f

  //是否以指定字符串开头

  System.out.println(s1.startsWith("ab"));//t

  System.out.println(s1.startsWith("cde",2));//t 字符串是否在索引2开始截取

  //是否以字符串结尾

  System.out.println(s1.endsWith(s3));//t

  //是否为空

  System.out.println(s1.isEmpty());//false

  18

  字符串的获取

  length():字符串的长度

  charAt(inx index):返回某个字符在字符串中的索引

  indexOf(int ch):获取指定的字符在字符串第一次出现的位置,可以写对应的ASCALL码值

  indexOf(int ch, int fromIndex):从指定的索引开始,字符出现的位置

  indexOf(String str):获取指定的字符串在原字符串的位置

  indexOf(String str, int fromIndex):从指定的索引开始,获取字符串第一次出现的位置

  lastIndexOf(int ch):获取指定字符最后一次出现的索引值

  lastIndexOf(String str,int fromIndex)获取指定字符串最后出现的索引值

  subString(int start):从指定位置开始截取字符串

  subString(int start, int end)从指定位置到指定位置截取字符串

到此,相信大家对"Java基础之怎么理解字符串String"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

字符 字符串 常量 内容 索引 位置 数组 内存 对象 方法 字节 空间 基础 指向 部分 相同 两个 变量 只是 大小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 山东特亿宝互联网科技有限公司 互联网巨头科技公司 互联网与科技金融数据 港股互联网科技股 上海致骋互联网科技 天下捷融互联网科技 联恩商钥互联网科技有限公司 全球顶尖互联网科技公司 知域互联网科技有限公司大骗子 注册互联网科技公司经营范围大全 深圳市优智互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 产业互联网科技服务公司 互联网科技资金流入 四川互联网展示科技馆设计 浙南科技城互联网大厦招聘 福建互联网展示科技馆设计 科技信息时代互联网发展 科技互联网企业在行动 湖北九亚互联网络科技有限公司 博彦科技互联网金融 美国互联网科技巨头监管 昭通云南众福互联网科技有限公司 宁夏科技产业互联网案例 浙江互联网科技研学营 卓翼科技产业互联网合作 电子商务与互联网科技的关系 梅州GM互联网络科技有限公司 互联网金融金融科技
0