String概述、常见构造方法、特点以及遍历案例分析

本文深入探讨了Java中的String类,包括它的不可变性、常见构造方法和字符串常量池。通过案例分析了不同创建方式的区别,如直接赋值与使用new关键字。此外,还介绍了字符串的比较方法、遍历字符串的技巧,以及substring、replace和split等实用方法的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. String

String类在Java.lang包下,使用时不需要导包;String类代表字符串,

Java程序中,所有的双引号字符串,都是string这个类的对象;

字符串是常量,它们的值在创建之后就不能更改了;

2、String常见构造方法

方法名

说明

Public String()

创建一个空白字符串对象,不含有任何内容

Public String(char[ ] chs)

根据字符数组的内容,来创建字符串对象

Public String(String original)

根据传入的字符串内容,来创建字符串对象

String s=”abc”

直接赋值的方式创建字符串对象,内容是abc

注意:String这个类比较特殊,打印其对象名时,不会出现内存地址;而是该对象所记录的真实内容;面向对象-继承,object类;

3、创建字符串对象的区别对比

注意:==号作比较;

基本数据类型:比较的是具体的值;

引用数据类型:比较地址值;

A.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个string对象,并在字符串常量池中维护;

例如:String s1=”abc”;

String s2=”abc”;

字符串常量池:当使用双引号创建字符串对象时,系统会检查该字符串是否在字符串常量池中存在;如果不存在:创建;如果存在:不会重复创建,而是直接复用;

注意:字符串常量池在JDK7版本开始从方法区中挪到了堆内存;

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

例如:

   

4、String字符串特点

Java程序中所有的双引号字符串,都是String类的对象;

字符串不可变,它们的值在创建后不能被更改;

虽然String的值是不可变的,但它们可以被共享;这里的共享说的是字符串常量池:当使用双引号创建字符串对象时,系统会检查该字符串是否在字符串常量池中存在;如果不存在:创建;如果存在:不会重复创建,而是直接复用;

情况1

情况2:

情况3:

情况4:

5、字符串的比较

使用==作比较

基本类型:比较的是数据值是否相同;

引用类型:比较的是地址值是否相同;

字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这种方法叫equals();

Public Boolean equals(Object anObject):将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串;

还有一个比较内容的方法,不考虑大小写:

案例1:用户登录

已知用户名和密码,用程序实现模拟用户登录,总共给三次机会,登录之后,给出相应的提示;

案例2:遍历字符串

第一种方法:

第二种方法:

案例3:键盘录入字符串,统计字符串中大写、小写,数字字符串出现的次数;

案例4:以字符串的形式从键盘接收一个手机号,中间四位屏蔽;

截取字符串:

String substring(int beginIndex):

从传入的索引位置处,向后截取,已知截取到末尾,得到新的字符串并返回;

String substring(int beginIndex,int endIndex):

从beginIndex索引位置开始截取到endIndex索引位置结束,得到新字符串并返回(包含头,不包含尾部);

案例5:键盘录入字符串,替换敏感词

替换敏感词:String replace(CharSequence target,CharSequencereplacement)

将当前字符串中的target(被替换的旧值)内容,使用replacement(替换的新值)进行替换返回新的字符串;

案例6:切割字符串

字符串录入学生信息,切割出有效信息;

String[] split(String regex):根据传入的字符串作为规则进行切割,将切割后的内容存入字符串数组中,并将字符串数组返回;

一般封装数据需要创建要给包:domain;(书写规范)

String方法小结:

方法名

说明

public Boolean equals(ObjectanObject)

比较字符串的内容,严格区分大小写

public Boolean equalsIgnoreCase(String anotherString)

比较字符串的内容,忽略大小写

public int length()

返回此字符串的长度

public char charAt(int index)

返回指定索引处的char值

public char[ ]toCharArray()

将字符串拆分为字符数组后返回

public String substring(int beginIndex,int endIndex)

根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)

public String substring(int beginIndex)

从传入的索引处截取,截取到末尾,得到新的字符串

public String replace(CharSequence target,CharSequencereplacement)

使用新值,将字符串中的旧值替换,得到新的字符串

public String[] split(String regex)

根据传入的规则切割字符串,得到字符串数组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值