2024年java基础字符串相加

java基础字符串相加文章目录 String 类 String 类概述 String 类的特点 创建字符串对象两种方式的区别 字符串的比较 用户登录案例 遍历字符串案例 统计字符次数案例 字符串拼接案例 字符串反转案例 金额转换 手机号屏蔽 敏感词替换 身份证信息查看 StringBuilde 基本使用 链式编程 练习 1 对称字符串 练习 2 拼接字符串 StringJoiner

大家好,我是讯享网,很高兴认识大家。



文章目录

  • String类
    • String类概述
    • String类的特点
    • 创建字符串对象两种方式的区别
    • 字符串的比较
    • 用户登录案例
    • 遍历字符串案例
    • 统计字符次数案例
    • 字符串拼接案例
    • 字符串反转案例
    • 金额转换
    • 手机号屏蔽
    • 敏感词替换
    • 身份证信息查看
  • StringBuilder
      • 基本使用
      • 链式编程
      • 练习1:对称字符串
      • 练习2:拼接字符串
  • StringJoiner
  • 字符串的扩展

String类

String类概述

​ String 类代表字符串,Java 程序中的所有字符串java基础字符串相加文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!

String类的特点

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然 String 的值是不可变的,但是它们可以被共享
  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

String类的构造方法

  • 常用的构造方法
    方法名说明public String()创建一个空白字符串对象,不含有任何内容public String(char[] chs)根据字符数组的内容,来创建字符串对象public String(byte[] bys)根据字节数组的内容,来创建字符串对象String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc
  • 示例代码
    讯享网 

创建字符串对象两种方式的区别

  • 通过构造方法创建

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

  • 直接赋值方式创建

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

字符串的比较

==号的作用

  • 比较基本数据类型:比较的是具体的值
  • 比较引用数据类型:比较的是对象地址值

equals方法的作用

  • 方法介绍
    讯享网
  • 示例代码
     

用户登录案例

  • 案例需求

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

  • 代码实现
讯享网

遍历字符串案例

  • 案例需求

​ 键盘录入一个字符串,使用程序实现在控制台遍历该字符串

 
  • 直接遍历字符串
 

统计字符次数案例

  • 案例需求

​ 键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

  • 代码实现
 

字符串拼接案例

  • 案例需求

​ 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,

​ 并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

  • 代码实现
 

字符串反转案例

  • 案例需求

​ 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果

​ 例如,键盘录入 abc,输出结果 cba

  • 代码实现
 

金额转换

  • 案例需求

​ 把2135变成:零佰零拾零万贰仟壹佰叁拾伍元

​ 把789变成:零佰零拾零万零仟柒佰捌拾玖元

  • 代码实现
 

手机号屏蔽

 

需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽

最终效果为:

代码实现:

 

敏感词替换

 

需求1:键盘录入一个 字符串,如果字符串中包含(***),则使用*替换

 

需求2:如果要替换的敏感词比较多怎么办?

 

身份证信息查看

​ 身份证的每一位都是有固定的含义:

  • 1、2位:省份
  • 3、4位:城市
  • 5、6位:区县
  • 7-14位:出生年、月、日
  • 15、16位:所在地派出所
  • 17位:性别(奇数男性,偶数女性)
  • 18位:个人信息码(随机产生)

要求打印内容方式如下:

​ 人物信息为:

​ 出生年月日:XXXX年X月X日

​ 性别为:男/女

 

StringBuilder

StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。

  • 作用:提高字符串的操作效率

当我们在拼接字符串和反转字符串的时候会使用到

  • 构造方法
 
  • 常用方法
 

基本使用

 

链式编程

 

练习1:对称字符串

需求:

​ 键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是

 

代码示例:

 

练习2:拼接字符串

需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回。

​ 调用该方法,并在控制台输出结果。

​ 例如:数组为int[] arr = {1,2,3};

​ 执行方法后的输出结果为:[1, 2, 3]

代码示例:

 

StringJoiner

StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。

JDK8出现的

  • 构造方法
 
  • 成员方法
 

基本使用:

 
 

字符串的扩展

  1. 字符串存储的内存原理

    String s = “abc”;直接赋值

    特点:

    ​ 此时字符串abc是存在字符串常量池中的。

    ​ 先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。

    所以,直接赋值的方式,代码简单,而且节约内存。

  2. new出来的字符串

    看到new关键字,一定是在堆里面开辟了一个小空间。

    String s1 = new String(“abc”);

    String s2 = “abc”;

    s1记录的是new出来的,在堆里面的地址值。

    s2是直接赋值的,所以记录的是字符串常量池中的地址值。

  3. ==号比较的到底是什么?

    如果比较的是基本数据类型:比的是具体的数值是否相等。

    如果比较的是引用数据类型:比的是地址值是否相等。

    结论:==只能用于比较基本数据类型。不能比较引用数据类型。

  4. 扩展底层原理:字符串拼接的底层原理
    如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
    如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
小讯
上一篇 2024-12-28 10:33
下一篇 2024-12-27 17:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1888.html