String类

目录

一.认识 String 类

二.常用方法

1.字符串构造(定义)

2.字符串指为空和null

3.String对象的比较

(1)equals和==的区别

(2)compareTo比较

4.字符串查找

5.字符串转化

(1)数值和字符串转化

(2)大小写转换

(3)字符串数组互转

6.字符串的不可变性

7.字符串的其他操作

三.StringBuilder和StringBuffer


一.认识 String 类

想必大家在学习c语言的时候已经涉及到了字符串了,但是在c语言中字符串只能使用字符数组或者字符指针,可以用库函数完成大部分操作。但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。接下来我带讲一下java中的String类,希望对大家有所帮助。


二.常用方法

1.字符串构造(定义)

String类提供的构造方式非常多,常用的就以下三种:

public static void main(String[] args) {
        // 使用常量串构造
        String s1 = "hello bit";
        System.out.println(s1);

        // 直接newString对象
        String s2 = new String("hello bit");
        System.out.println(s1);

        // 使用字符数组进行构造
        char[] array = {'h','e','l','l','o','b','i','t'};
        String s3 = new String(array);
        System.out.println(s1);
    }

注意:区别与c语言,java中的字符串没有以 \0 结尾的说法。


2.字符串指为空和null

大家注意下面代码,我会通过代码解释

    public static void main(String[] args) {

        //字符串为空
        String str1 = "";
        System.out.println(str1.isEmpty());//判断字符串是不是空的

        //字符串指向null,str2这个引用 不指向任何的对象,下面判断为空的时候会报错
        String str2 = null;
        System.out.println(str2.isEmpty());
        
    }

所以我们可以知道字符串为空和字符串=null不是一个概念。


3.String对象的比较

(1)equals和==的区别

如果是new一个字符串的话 比较字符串里面的是否相同用 引用1.equals(引用2),判断两个字符串地址是否相同用 引用1 == 引用2

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

        System.out.println(str1 == str2);//flase

        System.out.println(str1.equals(str2));//true

    }


 如果是直接赋值的话用==也能判断字符串的值是否相同(这里会涉及到哈希值,由于小编现在能力有限,等以后会再讲解)

    public static void main(String[] args) {
        String str3 = "abcd";
        String str4 = "abcde";
        System.out.println(str3 == str4);//ture 字符串常量池 有哈希表的基础

    }

 (这里注意:如果str1和str2里面的内容相同的话,如都是abc,在常量池中只会存一个abc)


(2)compareTo比较

    public static void main3(String[] args) {
        String str1 = "abcd";
        String str2 = "abcdef";

        //str1大于str2 那么 返回正数  如果不大于 返回负数  如果相同 返回0
        System.out.println(str1.compareTo(str2));//-2

        /**
         * 比较逻辑:
         * 1. 如果两个字符串的长度是一样的,那么第一个不一样的字符的大小就是整个字符串的大小
         * 2. 如果两个字符串长度不一样,那么先比较两个长度的差值个
         * 3、在这个差值范围内,有不一样的字符就能比较出来大小
         * 4、但是如果都是一样的,那么就看谁长 谁大 !
         */

    }

忽略大小写比较:

    public static void main4(String[] args) {
        String str1 = "Abcd";
        String str2 = "abcd";

        //忽略大小写进行 比较
        System.out.println(str1.compareToIgnoreCase(str2));//0


    }


4.字符串查找

    public static void main(String[] args) {
        String str1 = "abcdef";

        //获取指定位置的字符
        char ch = str1.charAt(2);//c
        System.out.println(ch);

        //从3的位置找c开始出现的位置,没有返回-1
        int index = str1.indexOf('c',3);
        System.out.println(index);//-1

        String str2 = "ababcdabcdef";
        //从5开始 从后往前找a出现的位置
        int index2 = str2.lastIndexOf('a',5);
        System.out.println(index2);//2

    }

 


5.字符串转化

(1)数值和字符串转化

public static void main(String[] args) {
    // 数字转字符串
    String s1 = String.valueOf(1234);
    String s2 = String.valueOf(12.34);
    String s3 = String.valueOf(true);
    String s4 = String.valueOf(new Student("Hanmeimei", 18));

    // 字符串转数字
    // 注意:Integer、Double等是Java中的包装类型,这个后面会讲到
    int data1 = Integer.parseInt("1234");
    double data2 = Double.parseDouble("12.34");

}

(2)大小写转换

    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";
        // 小写转大写
        System.out.println(s1.toUpperCase());
        // 大写转小写
        System.out.println(s2.toLowerCase());
    }

(3)字符串数组互转

    public static void main(String[] args) {
        String s = "hello";
        // 字符串转数组
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i]);
        } 
        // 数组转字符串
        String s2 = new String(ch);
        System.out.println(s2);
    }

6.字符串的不可变性

String是一种不可变对象. 字符串中的内容是不可改变,字符串不可被修改

所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象,如:

1.字符串的指定字符的转化,转化的时候是新new一个对象进行转化

2.字符串的相加,也是new一个对象进行相加,不是在原来的对象中进行相加
 


7.字符串的其他操作

 

 


三.StringBuilder和StringBuffer

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅Java Platform SE 8

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前几天面了个32岁的测试员,年薪50w问题基本都能回答上,应该刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

centerpoint论文和代码解读

目录 一、序论 二、论文结构 三、代码 论文地址&#xff1a; https://arxiv.org/pdf/2006.11275.pdf 代码地址&#xff1a;tianweiy/CenterPoint (github.com) 一、序论 centorpoint是一种anchor-free的方法&#xff0c;直接预测物体的中心点&#xff0c;然后直接回归其wh…

【C++】unordered_map与unordered_set(系列关联式容器)

文章目录 1.unordered系列关联式容器2. unordered_map3.unordered_set 1.unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;如map和set&#xff0c;它们在查询时效率可达logN&#xff0c;即最差情况下需要比较红黑树的高度…

将 Segment Anything 扩展到医学图像领域

文章目录 前言技术交流SAM 拆解分析从医学角度理解 SAM 的效用MedSAM实验总结 前言 SAM 是一种在自然图像分割方面取得成功的模型&#xff0c;但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像&#xff0c;并成为用于分割各种医学图像的通用工具。为…

一文读懂 DNS 解析

导读 文章为“一文读懂域名与网站系列”第二篇&#xff0c;上篇文章主要介绍了域名的注册、建站和管理&#xff0c;通过本文你可以了解以下几个问题&#xff1a; 域名的结构、常用解析记录的类型 DNS 解析的过程 DNS 解析拓展知识 众所周知&#xff0c;互联网中的地址其实是…

Invicti v23.5 for Windows 发布 - 企业应用安全测试

Invicti v23.5 for Windows - 企业应用安全测试 Invicti Standard 11 May 2023 v23.5.0.40516 请访问原文链接&#xff1a;https://sysin.org/blog/invicti/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Invicti 是一种自动…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时&#xff0c;提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法&#xff1a; 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…

系统分析师之项目管理(十七)

一、范围管理 范围管理&#xff1a;确定项目的边界&#xff0c;即哪些工作是项目应该做的&#xff0c;哪些工作不应该包括在项目中。 二、时间管理 时间管理&#xff1a;也叫进度管理&#xff0c;就是用科学的方法&#xff0c;确定目标进度&#xff0c;编制进度计划和资源供应计…

SpringBoot整合Swagger

Swagger的作用&#xff1a;生成前后的接口文档&#xff1a; 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 一、SpringBoot集成Swagger 1.依赖&#xff1a; <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><depe…

【A、B、C、D、E类IP地址划分依据,你都会吗?】

IP 地址的格式&#xff1a;IP 地址 网络地址 主机地址 如果 IP 进行了子网划分&#xff1a; 则IP地址网络地址子网地址主机地址 网络地址是互联网上的节点在网络中具有的逻辑地址。MAC 地址&#xff0c;处于数据链 路层&#xff0c;IP 地址处于网络层&#xff0c;端口号处…

人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么?

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么&#xff1f;在自然语言处理中&#xff0c;上采样、下采样、负采样都是用于处理数据不平衡问题的技术&#xff0c;目的是为了优化模型的训…

C# 对PdfiumViewer工具栏进行自定义,实现放大缩小,首页, 尾页,上一页等功能。

文章目录 前言PdfiumViewer工具栏扩展1 创建winform工程&#xff0c;UI界面2 打印预览3 放大功能4 缩小功能5 按比例缩放6 全屏7 首页和尾页8 上一页和下一页9 页码输入框10 显示当前预览的页码 小结 前言 关于PdfiumViewer的介绍 C# 使用PdfiumViewer实现对PDF文档打印预览&a…

路径规划算法:基于麻雀优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法麻雀…

Qt使用星空图作为窗口背景,点击键盘的WASD控制小飞机在上面移动。

事件函数的使用依托于Qt的事件机制&#xff0c;一个来自于外部事件的传递机制模型如下所示 信号槽虽然好用&#xff0c;但是无法包含所有的情况&#xff0c;事件函数可以起到对信号槽无法覆盖的一些时机进行补充&#xff0c;事件函数的使用无需连接。 常用的事件函数如下所示。…

【Mysql实战】使用存储过程和计算同比环比

背景 同环比&#xff0c;是基本的数据分析方法。在各类调研表中屡见不鲜&#xff0c;如果人工向前追溯统计数据&#xff0c;可想而知工作量是非常大的。 标题复制10行&#xff0c;并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…

vite跨域问题,你可能需要看这篇文章

最近在学习项目的时候&#xff0c;使用了vite工具进行构建&#xff0c;然后出现了跨域的问题&#xff0c;中间的曲折不过多叙述&#xff0c;直接进入正题。 前端成功启动后的界面&#xff1a; 然后在后端进行的Controller上使用了如下的配置 然后浏览器就会出现跨域的问题 为什…

【论文复现】基于区块链的分布式光伏就地消纳交易模式研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

UE4及Airsim安装时遇到的问题及解决办法

UE4及Airsim安装时遇到的问题及解决办法 目录 UE4及Airsim安装时遇到的问题及解决办法前言UE4下载慢解决方法 Airsim编译过程中提示&#xff1a;无法打开包括文件: “Eigen/Dense”: No such file or directory [D:\software\Visual_studio2022\2022Community\AirSim\Air解决办…

别不信:这些细节关乎你的物联网设备的命运!

《高并发系统实战派》-- 值得拥有 一、设备接入层网络协议的意义 随着物联网的发展&#xff0c;越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能&#xff0c;为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联…

【云原生概念和技术】1.2 云原生技术概括(上)

如果想了解或者学习云原生的友友们&#xff0c;欢迎订阅哦&#xff5e;&#x1f917;&#xff0c;目前一周三更&#xff0c;努力码字中&#x1f9d1;‍&#x1f4bb;…目前第一章是一些介绍和概念性的知识&#xff0c;可以先在脑海里有一个知识的轮廓&#xff0c;从第二章开始就…