认识String类

news2024/10/7 18:20:12

文章目录

  • String类
    • 字符串的遍历
    • 字符串的比较
    • 字符串的替换
    • 字符串的转换
    • 字符串的切割
    • 字符串的切片
    • 字符串的查找
  • 总结

String类

在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提
供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想,而字
符串应用又非常广泛,因此Java语言专门提供了String类。

String是一种不可变对象

在java.lang包里,不需要import手动导包,系统自动导好了

package java.lang;

字符串常量池:

字符串内容不可修改的原因
误区1:认为final修饰了String,被final修饰意味着不能被继承,并不是不能修改
在这里插入图片描述
误区2:以为final修饰了value
在这里插入图片描述
正确的答案是:
是因为value是由private修饰的,只能在本类中使用,所以不能修改value的值,只能创建新的字符串对象
在这里插入图片描述
字符串的创建
推荐使用直接赋值
new字符串对象需要在堆上开辟空间

public class demo1 {
    public static void main(String[] args) {
        String str="hello world";
        String str1=new String("hello world");
        String str2=str1;
        System.out.println(str+" "+str1);
        System.out.println(str2);
    }
}

内存图
在这里插入图片描述
由于字符串不可修改,使用方法都是创建了新的对象,所以使用了方法需要用变量接收

字符串的遍历

通过length()方法
和charAt()获取字符串中的元素

public class demo1 {
    public static void main(String[] args) {
		String s="abcdefg";
        for (int i = 0; i < s.length(); i++) {
            System.out.print(s.charAt(i)+" ");
        }
}

在这里插入图片描述

字符串的比较

==比较的是地址
通过.equals比较的是字符串的内容是否一致,返回的是boolean类型

 public static void main(String[] args) {
        String a="haha";
        String b=new String("haha");
        System.out.println(a==b);
        System.out.println(a.equals(b));
    }

输出结果是
在这里插入图片描述

a的地址是在堆中的字符串池里的,而b是new出来的在堆里的另一块地址,地址不一样,==比较的是地址故输出false;而equal是比较内容是否相同

引用类型不能直接比较大小

字符串的替换

替换单个字符

    public static void main(String[] args) {
        String s = "abcdefg";
        String replace = s.replace('a', 'v');
        System.out.println(replace);
    }
}

在这里插入图片描述
在这里插入图片描述
替换所有内容

public class demo1 {
    public static void main(String[] args) {
        String s1= "ayouayouayou";
        String s2 = s1.replaceAll("a", "love");
        System.out.println(s2);
    }
}

在这里插入图片描述
替换出现的第一个内容

public class demo1 {
    public static void main(String[] args) {
        String s1= "ayouayouayou";
        String s2 = s1.replaceFirst("a", "love");
        System.out.println(s2);
    }
}

在这里插入图片描述

字符串的转换

  1. 大小写的转换
public class demo1 {
    public static void main(String[] args) {
        String s1= "Sbfabfcsf";
        String s = s1.toLowerCase();
        System.out.println(s);
        String s2 = s1.toUpperCase();
        System.out.println(s2);
    }
}

在这里插入图片描述

  1. 字符串和数组的转换
public class demo1 {
    public static void main(String[] args) {
      String str="ahfkfIH";
      //字符串转数组
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i]+" ");
        }
        System.out.println();
        //数组转字符串
        String str2=new String(chars);
        System.out.println(str2);
    }
}
  1. 数值和字符串的转换
    数值转字符串
    各种类型都可以转换成字符串在这里插入图片描述

valueOf是于Object类的,在调用时需要用类名去调用

public class demo1 {
    public static void main(String[] args) {
    String str=String.valueOf(113);
        System.out.println(str);
    }
}

字符串转数字

public class demo1 {
    public static void main(String[] args) {
        String str = "123";
        int i = Integer.parseInt(str);
        System.out.println(i);
    }
}
public class demo1 {
    public static void main(String[] args) {
        String str = "123.21";
        double i = Double.parseDouble(str);
        System.out.println(i);
    }
}

在这里插入图片描述

在这里插入图片描述

字符串的切割

一个是从起始位置截到末尾
一个是在指定范围内切割

在这里插入图片描述

示例

 public static void main(String[] args) {
 		String str="ahhfbg";
        String str1 = str.substring(2);
        System.out.println(str1);
        String str2 = str.substring(2, 4);
        System.out.println(str2);
}

在这里插入图片描述

字符串的切片

在这里插入图片描述
演示:

public class Test {
    public static void main(String[] args) {
 String str = "https://mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;
        String[] result = str.split("/") ;
        for(String s: result) {
            System.out.println(s);
        }
    }
}

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
 String str = "https:/hhhh/mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;
        String[] result = str.split("/",3) ;
        for(String s: result) {
            System.out.println(s);
        }
    }
}

在这里插入图片描述
注意:

  1. 字符"|" ,“*”,“+“都得加上转义字符,前面加上”\\”.
  2. 而如果是"\“,那么就得写成”\\\\".
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

字符串的查找

在这里插入图片描述
重点掌握charAt()
在这里插入图片描述
在这里插入图片描述
如何处理异常我们下篇博客介绍!

方法演示:

public class Test {
    public static void main(String[] args) {
        String s="abfsasrabcdef";
        System.out.println(s.charAt(5));//s
        System.out.println(s.indexOf('a'));//0
        System.out.println(s.indexOf('a',3));//4
        System.out.println(s.indexOf("sa"));//3
        System.out.println(s.indexOf("sa",4));//-1
        System.out.println(s.lastIndexOf('a'));//7
        System.out.println(s.lastIndexOf('a',5));//4
        System.out.println(s.lastIndexOf("ab"));//7
        System.out.println(s.lastIndexOf("b",8));//8
    }
}

总结

相信你看完已经对String类有了一定的理解,继续学习下去吧!
在这里插入图片描述

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

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

相关文章

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

WAF的新选择,雷池 SafeLine-安装动态防护使用指南

什么是 WAF WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。 区别于传统防火墙&#xff0c;WAF 工作在应用层&#xff0c;对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果&#xff0c;使其免于受到黑客的攻击&#xff1b; 通俗来讲&#…

什么是 MySQL 锁等待?

本文基于 MySQL 8.0.32 源码&#xff0c;存储引擎为 InnoDB。 1. 先排队 不管是加表锁&#xff0c;还是加行锁&#xff0c;如果不能立即获得锁&#xff0c;加锁事务都需要进入锁等待状态。 事务进入锁等待状态&#xff0c;需要用锁结构来排队。和立即获得锁时的锁结构一样&am…

【Python+微信小程序】学生考勤签到系统(已开源)

1. 简介 &#x1f61d; 这个项目是一款基于微信小程序和Flask框架开发的应用&#xff0c;旨在帮助学校管理学生的考勤和课程信息。系统通过集成数据库管理、API开发以及前后端交互&#xff0c;实现了便捷的学生考勤记录、课程表管理和教师交互功能。其主要特点包括&#xff1a…

intellij idea中使用R语言plot画图无图像问题

1、在intellij idea中使用R语言plot函数时&#xff0c;会遇到各种各样的问题&#xff0c;会出现图片不显示问题&#xff0c; 可以看到&#xff0c;目前我电脑r语言版本为4.2.1&#xff0c;输入下面代码&#xff1a; # # 安装包 # install.packages(ggplot2) # library(ggplot2…

AI是在帮助开发者还是取代他们

目录 1.概述 1.1.AI助力开发者 1.2.AI对开发者的挑战 2.AI工具现状 2.1. GitHub Copilot 2.2. TabNine 2.3.小结 3.AI对开发者的影响 3.1.对开发者的影响 3.2.开发者需要掌握的新技能 3.3.在AI辅助的环境中保持竞争力的策略 4.AI开发的未来 5.总结 1.概述 生成式…

【VScode】常用配置

1.indenticator 增加白色竖条&#xff0c;显示方法范围 2.Git Graph 给git变换分支增添颜色区分 3.Vue 系列 vue 系列&#xff1a;给纯白色代码添加 颜色区分 3.eslint eslint警告&#xff0c;比如{ } 只写了半个会标红提示错误 等错误信息提示 需要配置js等页面 非下…

使用CiteSpace软件对知网文献进行关键词共现/聚类/突现分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【前端】vue 报错:The template root requires exactly one element

【前端】vue 报错&#xff1a;The template root requires exactly one element 写在最前面Prettier - Code formatter插件解决 Vue 报错&#xff1a;The template root requires exactly one element错误原因示例 解决方法更复杂的示例使用 Fragment 解决问题 小结 &#x1f3…

深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看

在CNN的学习过程中我会提供相应的手算例子帮助理解训练过程。 其他关于神经网络的学习链接如下&#xff1a; 一、了解卷积神经网络 卷积神经网络的作用 总的来说&#xff0c;卷积神经网络的第一个主要作用是对图像进行特征提取&#xff0c;所谓特征提取&#xff0c;就是明白…

亚马逊测评策略全攻略:详析各方案优势与局限,你精通了吗?

亚马逊测评&#xff0c;一个绕不开的话题。不管是对于新手卖家还是资深卖家来说&#xff0c;它都是提升产品销量和排名的有效手段之一。接下来&#xff0c;我将为大家详细解析亚马逊测评的各种方式和注意事项。 一、精准筛选真人测评资源 在寻找真人测评资源时&#xff0c;许多…

【深度学习】扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下&#xff0c;文档扫描功能…

记录一次MySQL恢复

一、前言 此文章由一次数据库被黑客删除而引发 由于对于Linux操作、docker使用、MySQL原理这些都相对不是很熟悉&#xff0c;所以记录下来避免以后在工作中遇到类似的问题而惊慌失措。 1.MySQL环境现状 docker管理的&#xff0c;8.0.26版本 启动语句: docker run -d -p 33…

python pdfplumber优化表格提取

样例pdf 直接使用文本提取效果&#xff1a; 使用表格提取 根据提取的文本信息是没办法获取到表格数据的&#xff0c;太乱了。尤其是 3 4列。 解决&#xff1a; 自行画线&#xff0c;根据画线进行提取。 效果&#xff1a; 思路&#xff1a; 1.根据表头进行画竖线 2.根据行坐…

vue3 ~ pinia学习

先看两个图 一个vuex 一个pinia 根据图看出来 pinia更简单了 那么具体怎么操作呢 我们来看下~ 第一步 下载 yarn add pinia # 或者使用 npm npm install pinia 第二步 注册 创建一个 pinia 实例 (根 store) 并将其传递给应用&#xff1a; import { createApp } from v…

vue的$nextTick是什么是干什么用的?

为什么需要使用$nextTick&#xff1f;他的使用场景 1.你在接口返回之后在获取高度 正常等页面加载在mounted这个钩子函数里 这时候就需要找到接口赋值的地方 这样就可以获取到数据操作以后的dom元素了 $nextTick是什么是干什么用的&#xff1f; $nextTick() 是 Vue.js 框…

超详细:安装Linux系统、虚拟现实教程

文章目录 一、如何下载并使用VMware虚拟机1.百度搜索vmware2.进入官网点击Workstation Pro链接3.博通注册对应的账号4.博通填写用户名、密码后直接登录会跳转到博通登录页5.个人使用选择个人版 二、国内镜像网站下载&#xff08;Centos版本&#xff09;三、镜像系统的安装1.打开…

【等保2.0的内容有哪些?】

“在“等保2.0”的基础上&#xff0c;分别增加了云计算安全、移动互联安全、物联网安全、工控系统安全、大数据安全5个拓展需求。 《中华人民共和国刑法》第253条&#xff0c;非法将公民个人资料卖给他人&#xff0c;并处罚金。 违反国家相关法律法规&#xff0c;将其在执行公…

计算机系统基础(三)

1.程序转换概述 机器指令和汇编指令 机器指令与汇编指令意义对应&#xff0c;都是机器级指令 汇编指令 如&#xff1a;M[R[bx]R[di]-6]←R[cl] R&#xff1a;寄存器内容 M&#xff1a;存储单元内容 机器指令 高级语言转换为机器代码的过程 根据计算机系统基础&#xff…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪&#xff0c;可用于测试简单的无源元器件&#xff0c;例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…