Java基础知识——String篇

news2024/10/10 10:47:14

一、String

1、是什么

String 是 Java 中用于表示字符串的类。Java 中的字符串是不可变的,也就是说一旦创建,字符串的内容无法更改。

2、如何构造

(1)无参数构造方法

String str = new String();
//创建一个空字符串。

(2)从字符数组创建

char[] charArray = {'H', 'e', 'l', 'l', 'o'}; 
String str = new String(charArray);

(3)从字节数组创建

byte[] byteArray = {65, 66, 67}; // 对应字符 A, B, C 
String str = new String(byteArray);

(4)从字符串字面量创建

String str = "Hello, World!";

(5)从另一个字符串创建

String original = "Hello";
 String str = new String(original);

3、常用方法

  • length():返回字符串的长度。
  • charAt(int index):返回指定索引处的字符。
  • substring(int beginIndex, int endIndex):返回指定范围内的子字符串。
  • indexOf(String str):返回指定子字符串第一次出现的索引。
  • toUpperCase() / toLowerCase():转换为大写或小写。
  • trim():去掉字符串两端的空白字符。
  • equals(Object obj):比较两个字符串是否相等。
  • split(String regex):根据指定的正则表达式分割字符串。

 示例:

public class StringExample {
    public static void main(String[] args) {
        // 从字面量创建字符串
        String str1 = "Hello, World!";
        System.out.println("Length: " + str1.length());  // 输出: Length: 13

        // 获取特定索引的字符
        char ch = str1.charAt(7);
        System.out.println("Character at index 7: " + ch);  // 输出: Character at index 7: W

        // 获取子字符串
        String subStr = str1.substring(7, 12);
        System.out.println("Substring: " + subStr);  // 输出: Substring: World

        // 查找子字符串的索引
        int index = str1.indexOf("World");
        System.out.println("Index of 'World': " + index);  // 输出: Index of 'World': 7

        // 转换为大写和小写
        String upper = str1.toUpperCase();
        String lower = str1.toLowerCase();
        System.out.println("Uppercase: " + upper);  // 输出: Uppercase: HELLO, WORLD!
        System.out.println("Lowercase: " + lower);  // 输出: Lowercase: hello, world!

        // 去除空格
        String str2 = "   Hello, Java!   ";
        String trimmed = str2.trim();
        System.out.println("Trimmed string: '" + trimmed + "'");  // 输出: Trimmed string: 'Hello, Java!'

        // 字符串比较
        String str3 = "Hello";
        String str4 = new String("Hello");
        System.out.println("Are str3 and str4 equal? " + str3.equals(str4));  // 输出: Are str3 and str4 equal? true

        // 字符串分割
        String csv = "Apple,Banana,Cherry";
        String[] fruits = csv.split(",");
        for (String fruit : fruits) {
            System.out.println(fruit);  // 输出: Apple  Banana  Cherry
        }
    }
}

4、使用场景

(1)遍历字符串和统计字母个数

package week6_String;

import java.util.Scanner;

public class StringDemo1 {
  //键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符的出现次数
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个字符串");
    String str = sc.next();
    int big =0;
    int small=0;
    int number=0;
    for (int i = 0; i <str.length() ; i++) {
      char c = str.charAt(i);
      if('a'<=c&&c<='z'){
        //char 类型的变量参与计算时候自动类型提升为int
        small++;
      }else if('A'<=c && c<='Z'){
        big++;
      }else if(c>='0'&&c<='9'){
        number++;
      }

    }
    System.out.println("小写字母有:"+small+"个");
    System.out.println("大写字母有:"+big+"个");
    System.out.println("数字有:"+number+"个");
  }
}

(2)字符串的拼接

package week6_String;
//定义一个方法,把int 数组中的数据按照指定的格式拼接成一个字符串返回,
调用该方法,并在控制台输出结果
public class StringDemo2 {
  public static void main(String[] args) {
    int[] arr ={1,2,3,4,5};
    String str = arrToString(arr);
    System.out.println(str);

  }
  public static String arrToString(int[] arr){
    //使用String方法:
    if(arr == null){
      return "";
    }
    if(arr.length==0){
      return "[]";
    }
    String result ="[";
    int i = 0;
    for (; i < arr.length-1; i++) {
      result = result+arr[i]+",";
    }
    result =result+arr[i]+"]";
    return result;
   
  }
}

输出结果:[1,2,3,4,5] 

(3)字符串的反转 

package week6_String;

public class StringDemo3 {
  public static void main(String[] args) {
    String s =reverse("abcdefghij");
    System.out.println(s);
  }
  public static String reverse(String str){
    String result = "";
    for (int i = str.length()-1; i >=0 ; i--) {
      char c = str.charAt(i);
      result = result +c;
    }
    return result;
  }
}

输出结果: jihgfedcba

二、StringBuider

1、是什么

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

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

2、如何构造

  1. 无参数构造

    StringBuilder sb = new StringBuilder();
    //创建一个空的 StringBuilder,默认初始容量为 16。
  2. 指定初始容量

    StringBuilder sb = new StringBuilder(int capacity);\
    //创建一个指定初始容量的 StringBuilder。
  3. 从字符串初始化

    StringBuilder sb = new StringBuilder(String str);
    //创建一个包含指定字符串内容的 StringBuilder。

3、常用方法 

  • append():追加字符串。
  • insert():在指定位置插入字符串。
  • delete():删除指定范围内的字符。
  • replace():替换指定范围内的字符。
  • reverse():反转字符序列。
  • toString():将 StringBuilder 转换为 String

示例:

public class StringBuilderDemo1 {
  public static void main(String[] args) {
    // 创建一个空的 StringBuilder
    StringBuilder sb1 = new StringBuilder();

    // 添加内容
    sb1.append("Hello");
    sb1.append(" ");
    sb1.append("World!");
    System.out.println(sb1.toString());  // 输出: Hello World!

    // 创建并初始化 StringBuilder
    StringBuilder sb2 = new StringBuilder("Java");
    System.out.println(sb2.toString());  // 输出: Java

    // 插入字符串
    sb2.insert(4, " Programming");
    System.out.println(sb2.toString());  // 输出: Java Programming

    // 删除部分字符串
    sb2.delete(4, 15);
    System.out.println(sb2.toString());  // 输出: Java

    // 替换字符串
    sb2.replace(0, 4, "Python");
    System.out.println(sb2.toString());  // 输出: Python

    // 反转字符串
    sb2.reverse();
    System.out.println(sb2.toString());  // 输出: nohtyP
  }
}

 4、使用场景

(1)字符串拼接

package week6_String;
//定义一个方法,把int 数组中的数据按照指定的格式拼接成一个字符串返回,
调用该方法,并在控制台输出结果
public class StringDemo2 {
  public static void main(String[] args) {
    int[] arr ={1,2,3,4,5};
    String str = arrToString(arr);
    System.out.println(str);

  }
  public static String arrToString(int[] arr){
    //使用String方法:
//    if(arr == null){
//      return "";
//    }
//    if(arr.length==0){
//      return "[]";
//    }
//    String result ="[";
//    int i = 0;
//    for (; i < arr.length-1; i++) {
//      result = result+arr[i]+",";
//    }
//    result =result+arr[i]+"]";
//    return result;
    //使用StringBuilder方法:
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    for (int i = 0; i <arr.length ; i++) {
      if(i== arr.length-1){
        sb.append(arr[i]);
      }else{
        sb.append(arr[i]).append(",");
      }
    }
    sb.append("]");
    return sb.toString();
  }
}

 (2)字符串的反转

package week6_String;

import java.util.Scanner;

public class StringBuilderDemo1 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个字符串:");
    String str = sc.next();
    String result = new StringBuilder().append(str).reverse().toString();
    if(str.equals(result)){
      System.out.println("当前字符串是对称字符串。");
    }else{
      System.out.println("当前字符串不是对称字符串。");
    }
  }
}

三、Stringjoiner

1、是什么

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

StringJoiner 是 Java 8 中引入的一个类,用于构建由分隔符前缀后缀包围的字符串序列。

它特别适用于将多个字符串连接在一起,避免了使用字符串拼接时出现的额外分隔符的问题

示例:

 

2、如何构造

(1)基本构造方法: 

StringJoiner joiner = new StringJoiner(CharSequence delimiter);
//创建一个 StringJoiner,指定用于连接元素的分隔符。

 (2)指定前缀和后缀

StringJoiner joiner = new StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix);
//创建一个 StringJoiner,同时指定分隔符、前缀和后缀。

3、常用方法

  • add():添加一个新的元素到 StringJoiner
  • merge():将另一个 StringJoiner 的内容合并到当前 StringJoiner 中。
  • toString():返回构建的字符串。

示例: 

import java.util.StringJoiner;

public class StringJoinerExample {
    public static void main(String[] args) {
        // 创建一个 StringJoiner,使用逗号作为分隔符
        StringJoiner joiner1 = new StringJoiner(", ");
        joiner1.add("Apple");
        joiner1.add("Banana");
        joiner1.add("Cherry");
        System.out.println(joiner1.toString());  // 输出: Apple, Banana, Cherry
        
        // 创建一个 StringJoiner,指定前缀和后缀
        StringJoiner joiner2 = new StringJoiner(", ", "[", "]");
        joiner2.add("Tom");
        joiner2.add("Jerry");
        System.out.println(joiner2.toString());  // 输出: [Tom, Jerry]

        // 合并两个 StringJoiner
        StringJoiner joiner3 = new StringJoiner("; ");
        joiner3.add("Python");
        joiner3.add("Java");

        // 将 joiner1 和 joiner3 合并
        joiner1.merge(joiner3);
        System.out.println(joiner1.toString());  // 输出: Apple, Banana, Cherry; Python; Java
    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业设计项目-基于Spring Boot开发的古诗词管理系统

项目简介 这是一个基于Spring Boot开发的古诗词管理系统&#xff0c;旨在为用户提供在线古诗词交流平台。系统分为用户和管理员两个角色&#xff0c;各自拥有不同的功能和权限。该系统提供了以下功能&#xff1a; 用户功能&#xff1a; 登录和注册功能&#xff0c;确保用户身…

json格式的post请求目前不行, 要换成form表单形式的post请求怎么改

问: 下面是我的代码 export function fetchDeleteList<T>(agentSessionId: string) {return post<T>({url: http://192.168.0.116:8089/pipe-ics/agent/delete,method: post,data: { agentSessionId },}) } 目前是json格式的post请求, 目前不行, 要换成form表单…

如何使用IntelliJ IDEA生成UML图

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

基于深度学习的花卉识别系统

简介&#xff1a; 基于Python的花卉识别分类系统利用深度学习和计算机视觉技术&#xff0c;能够准确识别和分类各种花卉&#xff0c;如玫瑰、郁金香和向日葵等。这种系统不仅有助于植物学研究和园艺管理&#xff0c;还在生态保护、智能农业和市场销售等领域展现广泛应用前景。随…

HAL库常用的函数:

目录 HAL库&#xff1a; 1.GPIO常用函数&#xff1a; 1.HAL_GPIO_ReadPin( ) 2.HAL_GPIO_WritePin( ) 3.HAL_GPIO_TogglePin( ) 4.HAL_GPIO_EXTI_IRQHandler( ) 5.HAL_GPIO_EXTI_Callback( ) 2.UART常用函数&#xff1a; 1.HAL_U…

使用ChatGPT高效撰写优质学术论文:从选题到完稿的全攻略指南

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 本文将通过从选题到完稿,帮助学术科…

TypeScript 中接口的理解与应用场景

文章目录 一、接口的定义二、接口的使用1. 接口的基本定义2. 接口的应用示例3. 可选属性和只读属性4. 函数类型的属性5. 类型推断和索引签名6. 接口的继承 三、应用场景 一、接口的定义 接口在 TypeScript 中是一系列抽象方法的声明&#xff0c;它代表了一组方法的特征集合。这…

【10086网上营业厅-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

win10家庭版ubantu子系统下载和配置anaconda3

打开anaconda官网的下载页Download Now | Anaconda 找到linux系统&#xff0c;选择这个x86的版本&#xff0c;右键它&#xff0c;选择《复制链接地址》 我现在复制出来的是https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 后续可能会有版本更新&…

ChatGPT完成论文润色的提示词分享

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在论文写作的最后阶段&#xff0c;润色是确保文章质量的重要步骤。无论是语法检查、句式优化&#xff0c;还是提升语言的连贯性和一致性&#xff0c;润色都能显著提高论文的专业性与可读…

重学SpringBoot3-集成Redis(十一)之地理位置数据存储

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;十一&#xff09;之地理位置数据存储 1. GEO 命令简介2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. GEO 数据存储和查询实现3…

C++ day04(友元 friend、运算符重载、String字符串)

目录 【1】友元 friend 1》概念 2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载 1》概念 2》友元函数运算符重载 ​编辑 3》成员函数运算符重载 4》赋值运算符与类型转换运算符重载 5》注意事项 【3】String 字符串类 【1】友元 friend 1》概念 定义&#x…

成绩管理|基于springBoot的成绩管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 一、摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&…

C# 图像镜像

测试页面&#xff1a; 图像镜像是图像旋转变换的一种特殊情况&#xff0c;通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心&#xff0c;将图像分为左右两部分进行堆成变换。如下&#xff1a; 垂直镜像通常是以原图像的水平中轴线为中心&#xff0c;…

Spring Boot 进阶-Spring Boot中如何解决跨域问题

什么是跨域问题 浏览器出于安全考虑,会限制跨域访问,就是不允许跨域请求资源,要求协议,IP和端口必须都相同,其中有一个不同就会产生跨域问题,这就是同源策略。 简单的说A应用只能访问A应用对应的后台返回的数据,B应用只能访问B应用后台的数据,如果A应用通过Ajax请求了B…

国产长芯微LDC5420单通道、16位、串行输入、电流源DAC完全P2P替代AD5420

描述 LDC5420是可编程电流源输出的低成本、精密、完全集成的16位转换器&#xff0c;可满足工业过程控制应用的要求。输出电流范围可编程为4mA至20 mA、0mA至20mA或者0mA至24mA的超量程。输出具有开路保护功能&#xff0c;可以驱动1H的电感负载。这款器件采用10.8 V至40V&#…

全球司库|基于智能化模型算法的高阶应用

连载导语 司库体系建设是企业实现财务数字化转型和资金管理现代化的重要手段&#xff0c;是企业实现战略转型和高质量发展的关键支撑&#xff0c;也是企业应对复杂多变的全球经济环境和风险挑战的重要保障。司库承担着组织中的领导和战略引导作用&#xff0c;越来越多的企业以司…

基于双波长AWG的窄线宽外差拍频激光器

摘要&#xff1a;基于阵列波导光栅的多波长激光源已被证明可以同时提供多个波长和较窄的光线宽。为了产生毫米波信号&#xff0c;我们开发了两种不同的激光结构&#xff0c;并使用光子集成电路进行了单片集成。在这项工作中&#xff0c;我们报告了毫米波范围内的外差信号特性。…

ChatGPT国内中文版镜像网站整理合集(2024/10/06)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

无人机之飞控仿真技术篇

一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真&#xff0c;它是以无人机的运动情况为研究对象&#xff0c;面向对象的复杂系统仿真。通过该技术&#xff0c;可以模拟无人机的飞行过程&#xff0c;评估飞行控制系统的性能&#xff0c;优化飞行参数&…