【Java】认识String类

news2024/11/24 3:22:44

【Java】认识String类

  • 1. String类的重要性
  • 2. 常用方法
    • 2.1 字符串构造+求字符串长度
    • 2.2 String对象的比较
    • 2.3 字符串查找
    • 2.4 转化
    • 2.5 字符串替换
    • 2.6 字符串截取
    • 2.7 字符串拆分
    • 2.8 其他操作方法
      • 2.8.1 String trim()
      • 2.8.2 String toUpperCase()
      • 2.8.3 String.format()
  • 3. 总结!

1. String类的重要性

在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提

供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字

符串应用又非常广泛,因此Java语言专门提供了String类。

可以使用String直接定义一个变量,这个变量可以直接就是字符串:
在这里插入图片描述

2. 常用方法

2.1 字符串构造+求字符串长度

1.直接定义一个字符串。

2.通过new String对象。

3.通过字符串数组进行构造。

public static void main1(String[] args) {
        //1.直接定义一个字符串
        String str="hello";//区别于C语言,Java中的字符串,没有以'\0'结尾
        System.out.println(str);
        System.out.println(str.length());
        System.out.println("hello".length());

        //2.通过new String对象
        String str3=new String("world");
        System.out.println(str3);

        //3.通过字符串数组进行构造
        char[] array={'a','b','c'};
        String str4=new String(array);
        System.out.println(str4);

        int[] array2={1,2,3,4,5};
        System.out.println(array2.length);

    }

2.2 String对象的比较

用于两个字符串比较:
1.==
2.equals
3.compareTo
4.compareToIgnoreCase

public static void main2(String[] args) {
        String str1=new String("abcde");
        String str2=new String("abcde");

        System.out.println(str1==str2);//==:实质是比较字符串的地址,false
        System.out.println(str1.equals(str2));//String类重写了父类Object中equals方法,Object中equals默认按照==比较,                                                                      //String重写equals方法后,就会发生动态绑定true,

        String str3=new String("abcde");
        String str4=new String("abcde");
        System.out.println(str3==str4);//字符串常量池!

    }

字符串常量池:

  • 1.存储双引号“ ”,引起来的字符串,存的是字符串常量值。
  • 2.看常量池是否存在当前字符串。
  • 3.如果没有,则存进去。
  • 4.如果有,则获取这个字符串在常量池中的地址。
public static void main3(String[] args) {
        String str1=new String("abcde");
        String str2=new String("abcdef");
        System.out.println(str1.compareTo(str2));
        
        String s1=new String("Abcde");
        String s2=new String("abcdef");
        System.out.println(s1.compareToIgnoreCase(s2));//忽略大小写比较
    }

2.3 字符串查找

用于字符串查找:

1.char charAt(int index):返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常。

2.int indexOf(int ch) :返回ch第一次出现的位置,没有返回-1。

3.int indexOf(int ch, int fromIndex):从fromIndex位置开始找ch第一次出现的位置,没有返回-1。

4.int indexOf(String str) :返回str第一次出现的位置,没有返回-1。

5.int indexOf(String str, int fromIndex):从fromIndex位置开始找str第一次出现的位置,没有返回-1。

6.int lastIndexOf(int ch) :从后往前找,返回ch第一次出现的位置,没有返回-1。

7.int lastIndexOf(int ch, int fromIndex):从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1。

8.int lastIndexOf(String str) :从后往前找,返回str第一次出现的位置,没有返回-1。

9.int lastIndexOf(String str, int fromIndex):从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1。

public static void main5(String[] args) {
        String str1="abcdef";
        //获取指定位置的字符
        char ch=str1.charAt(2);
        System.out.println(ch);

        int index=str1.indexOf('c',3);
        System.out.println(index);

        int index2=str1.indexOf('c',5);
        System.out.println(index2);
        
        String s1="abcdaefd";
        int index3=s1.lastIndexOf('a',2);
        System.out.println(index3);   
    }

总结一下:

  • 如果找单个字符,则用charAt方法;
  • 找字符或字符串,则返回所需要的下标;
  • 如果是从前往后找,则用indexOf方法;
  • 如果是从后往后找,则用lastIndexOf方法;

2.4 转化

public static void main6(String[] args) {
        //数字转字符串
        String s1=String.valueOf(12.34);
        System.out.println(s1);

        String s2=String.valueOf(1234);
        System.out.println(s2);

        String s3=String.valueOf(false);
        System.out.println(s3);
        System.out.println("======================");
        
        //字符串转数字
        int data1=Integer.parseInt("1234");//转化成整数
        System.out.println(data1);

        double data2=Double.parseDouble("12.34");//转换成Double类型的小数
        System.out.println(data2);
        
        //也可以定义一个学生类,直接在valueOf里面定义一个new Student类型
        String s4=String.valueOf(new Student(10));
        System.out.println(s3);
    }
    
    //s4:
    class Student{
        private int age;
        public Student(int age){
            this.age=age;
        }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }
}

2.5 字符串替换

字符串替换:

1.String replaceAll(String regex, String replacement) :替换所有的指定内容。或String replace(String regex,

String replacement)

2.String replaceFirst(String regex, String replacement) :替换收个内容。

public static void main8(String[] args) {
        String str="abababcedf";
        String ret=str.replace("ab","oo");
        System.out.println("==========================");

        String ret2=str.replaceFirst("a","p");
        System.out.println(ret2);
        System.out.println("===========================");

        String ret3=str.replaceAll("a","p");
        System.out.println(ret2);
    }

2.6 字符串截取

字符串截取:

1.String substring(int beginIndex) :从指定索引截取到结尾

2.String substring(int beginIndex, int endIndex) :截取部分内容

 public static void main(String[] args) {
        String s="abcd";
        String ret=s.substring(0);
        System.out.println(ret);
        
        String ret2=s.substring(1,3);//在Java里面,左闭右开:[1,3)
        System.out.println(ret2);
        
        String s2="    abcd  ";
        System.out.println(s2);
        String ret1=s2.trim();
        System.out.println(ret1);
    }

2.7 字符串拆分

字符串拆分:

1.String[] split(String regex) :将字符串全部拆分。

2.String[] split(String regex, int limit) :将字符串以指定的格式,拆分为limit组。

public static void main9(String[] args) {
        String str="abc&de&f=10";
        String[] strings=str.split("&");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        
        //打印:
        String[] strings2=str.split("=");
        for (int i = 0; i < strings2.length; i++) {
            System.out.println(strings2[i]);
        }

        String[] strings3=str.split("&",2);
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        
        //比如,\" . \"点号,如果要识别IP地址中的点号,直接通过split进行拆分是识别不出点号作为分割符的,需要加上转义字符,也就    是  \\\\.
        String str="199.2.34";
        System.out.println(str);
        String[] strings=str.split("\\.");//以//来转换'.'
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        
        //如果是一个字符串中有多个分隔符,那么用 | 作为连字符
        String str="abc&de&f=10";
         String[] strings2=str.split("=|&");
        for (int i = 0; i < strings2.length; i++) {
            System.out.println(strings2[i]);
        }

    }

2.8 其他操作方法

其他操作方法:

String trim() :去掉字符串中的左右空格,保留中间空格。

String toUpperCase(): 字符串转大写。

String toLowerCase() :字符串转小写。

String.format():修改输出形式。

2.8.1 String trim()

public static void main(String[] args) {
        String s2="    abcd  ";
        System.out.println(s2);
        String ret1=s2.trim();
        System.out.println(ret1);
    }

2.8.2 String toUpperCase()

public static void main12(String[] args) {
        String s="abcd";
        System.out.println(s.toUpperCase());
        String s2="ABCd";
        System.out.println(s2.toLowerCase());
    }

2.8.3 String.format()

public static void main7(String[] args) {
        String s1="hello";
        char[] array=s1.toCharArray();
        for(int i=0;i<array.length;i++){
            System.out.println(array[i]+" ");
        }
        System.out.println();

        String s=String.format("%d-%d-%d",2004,6,2);
        System.out.println(s);
    }

3. 总结!

方法作用
charAt()输入下标,找单个字符
toUpperCase()字母由小写转换成大写
toLowerCase()字母由大写转换成小写
replace()/replaceAll()代替字符串中的字符
replaceFrist()代替字符串中的首个字符
String.equals()比较字符串相不相等,返回boolean类型
String.compareTo()比较字符串相不相等,返回int类型
equalsToIgnoreCase()忽略字母大小写,比较字符串相不相等
split()对字符串进行拆分,注意特殊字符,需要进行转义
trim()去字符串,首部和尾部的空格,但要保留中间空格
format()格式化输出
String.valueof()数字转字符串
Integer.parselnt()/Integer.valueOf()字符串转数字
indexOf()从前往后找字符串或字符,返回下标
lastIndexOf()从后往前找字符串或字符,返回下标
subString()截取字符串
toCharArray()字符串转数组
new String()数组转字符串

💓 感谢阅读!代码的注解很重要哟!

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

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

相关文章

在C#WinForm中调用julia函数及在C#中传递参数到julia函数的使用示例

特别声明&#xff1a;未经允许&#xff0c;请勿转载&#xff01; https://discourse.juliacn.com/t/topic/7189https://discourse.juliacn.com/t/topic/7189我在julia中国社区已提交了文章的最后部分未解决问题&#xff0c;大家后续可以在该链接中跟踪问题的回答进度。 好几…

Neck网络 FPN + PAN 改进解读

呃 这篇文章的目的在于补充一些知识以便于理解Neck部分的网络 特征提取网络 与 目标检测之间的关系 一个特征提取网络&#xff0c;假设有1000层&#xff0c;开始的特征图包含的细节信息就很多&#xff0c;而随着网络的加深&#xff0c;特征提取网络经过多次被卷积和池化操作&…

让你的SQL变得更简洁:学会ChatGPT活用技巧,轻松实现SQL格式化

文章目录 前言让你的SQL变得更简洁&#xff01;学会ChatGPT活用技巧&#xff0c;轻松实现SQL格式化ChatGPT格式化SQL效果讯飞星火认知大模型格式化SQL效果文心一言格式化SQL效果格式化SQL效果结果比较 总结 【免责声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与…

Vue--》如何在Vue3中书写TSX

在vue2的时候就已经可以使用 jsx 语法&#xff0c;但是不是很友好&#xff0c;写起来是一件很痛苦的事情&#xff0c;所以你很少见到有人会在vue2中书写 jsx 语法&#xff0c;官方也不建议我们在vue2中进行书写 jsx 的代码风格&#xff1a; 但随着vue3版本的到来&#xff0c;对…

SBUS协议解析图解

SBUS协议在硬件上是串口反相协议。 在软件上就是普通串口协议&#xff0c;波特率100k&#xff0c;8位数据位&#xff0c;2位停止位&#xff0c;偶校验even。注意&#xff0c;stm32把校验位也当做数据&#xff0c;所以数据位要设置成9&#xff0c;而不是8。 其报文格式为&…

scala---spark本地调式远程获取hdfs数据注意事项

文章目录 前言一、Hadoop配置注意事项1.1 core-site.xml1.2 core-site.xml 二、本地hadoop环境配置注意事项三、本地scala项目spark代码调试总结 前言 这篇文章主要帮大家绕开一些本地使用spark调试获取远程hdfs数据的坑&#xff0c;个人在使用时也是基本把这些坑踩了一遍。希望…

永远不该忘记!科技才是硬道理,手中没有剑,跟有剑不用,是两回事

今天是全国防灾减灾日&#xff0c;距离2008年汶川大地震也已经过去15年了。但时至今日&#xff0c;看到那些图像视频资料&#xff0c;那种触及灵魂的疼痛仍是存在的&#xff0c;2008年的大地震在每个中国人身上都留下了无法抚平的伤疤。 2008年是所有中国人都无法忘记的一年&am…

设计模式——单一职责模式之装饰模式

文章目录 前言一、“单一职责” 模式二、Decorator 装饰模式1、动机2、模式定义3、伪代码示例①、第一种写法②、第二种写法③、第三种写法 4、结构 总结 前言 一、“单一职责” 模式 在软件组件的设计中&#xff0c;如果责任划分的不清晰&#xff0c;使用继承得到的结果往往是…

深度指南:WhatsApp广播vs WhatsApp群组(二)

如何为创建WhatsApp群组&#xff1f; 建立 WhatsApp 群组&#xff0c;请按下列步骤操作。 1. 导航到您的WhatsApp或WhatsApp for Business&#xff08;布局或界面相同&#xff09;&#xff0c;然后点击“新建组”。 2.现在&#xff0c;您可以将参与者添加到您的WhatsApp群组…

华为OD机试真题 Java 实现【静态代码扫描服务】【2023Q1 100分】

一、题目描述 静态扫描快速识别源代码的缺陷&#xff0c;静态扫描的结果以扫描报告作为输出&#xff1a; 文件扫描的成本和文件大小相关&#xff0c;如果文件大小为N&#xff0c;则扫描成本为N个金币&#xff1b;扫描报告的缓存成本和文件大小无关&#xff0c;每缓存一个报告…

算法修炼之练气篇——练气十层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

华为网络篇 静态路由与BFD联动-21

实验难度2实验复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 BFD&#xff08;Bidirectional Forwarding Detection&#xff0c;双向转发检测&#xff09;是一种实验网络可靠性的机制&#xff0c;它可用于快速检测网络中的链路状况…

常见自动化测试工具及框架有哪些?怎么选?

目录 一、自动化测试简介 1、什么是自动化测试 2、它可以做自动化测试么 二、工具篇 1、UFT&#xff08;QTP&#xff09; 2、Selenium 3、Appium 4、工具对比 三、框架篇 1、TestNG 2、unittest 3、pytest 4、Robot Framework 5、框架对比 四、如何选择 总结 一…

ES6知识点

目录 1、let、cons、var的区别 2、const对象的属性可以修改吗 3、如果new一个箭头函数会怎么样 4、箭头函数和普通函数的区别&#xff1a; 5、扩展运算符的作用及使用场景 1、let、cons、var的区别 1️⃣&#xff1a;块级作用域&#xff1a;块作用域由{}包括&#xff0c;le…

Flink 常用API(1)—— 源算子

目录 执行环境&#xff08;Execution Environment&#xff09; 创建执行环境 执行模式配置 触发程序执行 源算子&#xff08;Source&#xff09; 从集合中读取数据 从文件中读取数据 从Socket读取数据 从Kafka读取数据*** 自定义 Source&#xff08;数据源&#xff0…

【结构与算法】—— 游戏概率常用算法整理 | 游戏中的常见概率设计分析

&#x1f4e2;博客主页&#xff1a;肩匣与橘&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由肩匣与橘编写&#xff0c;首发于CSDN&#x1f649;&#x1f4e2;生活依旧是美好而又温柔的&#xff0c;你也是✨ …

Smartbi X 广州轻工集团,打造集团价值创造型总部

广州轻工工贸集团有限公司&#xff08;简称“广州轻工集团”&#xff09;是广州市第一家工贸合一的大型企业集团公司&#xff0c;最早起源于1950年9月成立的广州市合作事业管理局&#xff0c;逐渐演化形成广州市轻工业局。1995年10月&#xff0c;广州市轻工业局成建制改建为经济…

【C++】搜索二叉树

文章目录 &#x1f4d5; 概念&#x1f4d5; 搜索二叉树的实现框架插入节点查找节点★ 删除节点 ★ &#x1f4d5; 源代码 &#x1f4d5; 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&…

5。STM32裸机开发(2)

嵌入式软件开发学习过程记录&#xff0c;本部分结合本人的学习经验撰写&#xff0c;系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维&#xff0c;为RTOS做铺垫&#xff08;本部分基于库函数版实现&#xff09;&#xff0c;如有不足之处&#xff0c;敬请批评指正。 &a…

全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布

5月12日&#xff0c;由神州数码主办、北京经开区国家信创园、中关村云计算产业联盟协办的2023通明湖论坛-云原生分论坛在京召开。论坛期间&#xff0c;神州数码联合北京通明湖信息技术应用创新中心、中国信通院和通明智云正式发布了《云原生应用引擎技术发展白皮书》&#xff0…