图灵日记之java奇妙历险记--String类

目录

  • String常用方法
    • 字符串构造
    • String对象的比较
    • 字符串查找
      • char charAt(int index)
      • int indexOf(int ch)
      • int indexOf(int ch, int fromIndex)
      • int indexOf(String str)
      • int indexOf(String str, int fromIndex)
      • int lastIndexOf(String str)
      • int lastIndexOf(String str, int fromIndex)
      • int lastIndexOf(int ch)
      • int lastIndexOf(int ch, int fromIndex)
    • 转化
      • 数值和字符串转化
      • 大小写转换
      • 字符串转数组
      • 格式化
    • 字符串替换
    • 字符串拆分
    • 字符串截取
    • 其他操作方法
    • 字符串的不可变性
  • StringBuilder和StringBuffer
    • StringBuilder

String常用方法

字符串构造

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

        String b = new String();
        System.out.println(b);
	//直接newString对象
        String c = new String("ghjk");
        System.out.println(c);
	//使用字符数组进行构造
        char[] arr = {'a','b','c'};
        String e = new String(arr);
        System.out.println(e);

        String f = new String(arr,0,2);
        System.out.println(f);
    }

注意

  1. String是引用类型,内部并不存储字符串
    在这里插入图片描述
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("efg");
        String s3 = s2;

    }

在这里插入图片描述

  1. 在Java中""引起来的也是String类型对象
        System.out.println("abcd".length());

在这里插入图片描述

        String s4 = "";
        String s5 = null;

s4指向一个对象为空,s5不指向任何对象

String对象的比较

  1. ==比较是否引用同一对象
    注意:
    对于内置类型,比较变量中的值;对于引用类型比较的是引用的地址

  2. boolean equals(Object anObject) 方法:按照字典序比较
    String类重写父类Object中的equals方法,Object中equals默认按照==比较,重写如下:

    public boolean equals(Object anObject) {
    //判断引用的是不是同一个对象
        if (this == anObject) {
            return true;
        }
        //判断anObject是不是String类型的对象
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            //判断二者长度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                //逐个比较字符
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
  1. int compareTo(String s)方法:按照字典序进行比较
    先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
        String s1 = new String("abc");
        String s2 = new String("abe");
        System.out.println(s1.compareTo(s2));

在这里插入图片描述
如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

        String s1 = new String("abc");
        String s2 = new String("ab");
        System.out.println(s1.compareTo(s2));

在这里插入图片描述

  1. int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写
        String s1 = new String("abc");
        String s2 = new String("ABc");
        System.out.println(s1.compareToIgnoreCase(s2));

在这里插入图片描述

字符串查找

char charAt(int index)

返回index位置上的字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常

        String s1 = new String("abcdef");
        System.out.println(s1.charAt(0));

在这里插入图片描述

        String s1 = new String("abcdef");
        for (int i = 0; i < s1.length(); i++) {
            System.out.print(s1.charAt(i));
        }

在这里插入图片描述

int indexOf(int ch)

返回ch第一次出现的位置,没有返回-1

        String s1 = new String("aaaaa");
        int index = s1.indexOf('a');
        System.out.println(index);

在这里插入图片描述

int indexOf(int ch, int fromIndex)

从fromIndex位置开始找ch第一次出现的位置,没有返回-1

    public static void main(String[] args) {
        String s1 = new String("aaaaa");
        int index = s1.indexOf('a',2);
        System.out.println(index);
    }

在这里插入图片描述

int indexOf(String str)

返回str第一次出现的位置,没有返回-1

        String s1 = "ababababcd";
        System.out.println(s1.indexOf("abcd"));

在这里插入图片描述

int indexOf(String str, int fromIndex)

从fromIndex位置开始找str第一次出现的位置,没有返回

        String s1 = "abcabcabc";
        System.out.println(s1.indexOf("abc",3));

在这里插入图片描述

int lastIndexOf(String str)

从后往前找,返回str第一次出现的位置,没有返回-1

        String s1 = "abcabcabc";
        System.out.println(s1.lastIndexOf("abc"));

在这里插入图片描述

int lastIndexOf(String str, int fromIndex)

从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1

 String s1 = "abcabcabc";
        System.out.println(s1.lastIndexOf("abc",5));

在这里插入图片描述

int lastIndexOf(int ch)

从后往前找,返回ch第一次出现的位置,没有返回-1

        String s1 = "abcdefabcdef";
        System.out.println(s1.lastIndexOf('a'));

在这里插入图片描述

int lastIndexOf(int ch, int fromIndex)

从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1

        String s1 = "abcdefabcdef";
        System.out.println(s1.lastIndexOf('a',5));

在这里插入图片描述

转化

数值和字符串转化

数值转字符串

        String s1 = String.valueOf(11.1);
        System.out.println(s1);

在这里插入图片描述
字符串转数值

        int i = Integer.parseInt("123");

大小写转换

        String s1 = "abD";
        System.out.println(s1.toUpperCase());

在这里插入图片描述

字符串转数组

        String s1 = "abc";
        char[] chars = s1.toCharArray();

格式化

        String s2 = String.format("%d,%d",3,5);
        System.out.println(s2);

在这里插入图片描述

字符串替换

在这里插入图片描述
replace方法进行重载,对参数类型不同
在这里插入图片描述
String实现了CharSequence接口,所以CharSequence接口能够接收String类型的数据

String str = new String("abcd");
        System.out.println(str.replace("ab", "1234"));

在这里插入图片描述

字符串拆分

将一个完整的字符串按照指定的分隔符划分为若干个子字符串。
在这里插入图片描述

        String str = new String("a b c d");
        String[] strings = str.split(" ");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }

在这里插入图片描述

        String str = new String("a b c d");
        String[] strings = str.split(" ",2);
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }

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

  1. 字符"|“,”*“,”+"都得加上转义字符,前面加上 “\” .
        String str2 = new String("1|2|3");
        String[] strings1 = str2.split("|");
        for (int i = 0; i < strings1.length; i++) {
            System.out.println(strings1[i]);
        }

在这里插入图片描述

        String str2 = new String("1|2|3");
        String[] strings1 = str2.split("\\|");
        for (int i = 0; i < strings1.length; i++) {
            System.out.println(strings1[i]);
        }

在这里插入图片描述
2. 而如果是 “” ,那么就得写成 “\\” .
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

        String str = new String("ab&cd%ef&gh%ij");
        String[] strings = str.split("&|%");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }

多次拆分

        String str = new String("ab&cd%ef&gh%ij");
        String[] strings = str.split("&");
        for (int i = 0; i < strings.length; i++) {
            String[] strings1 = strings[i].split("%");
            for (int j = 0; j < strings1.length; j++) {
                System.out.println(strings1[j]);
            }
        }

字符串截取

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

 		String str = new String("abcdef");
        System.out.println(str.substring(2));

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

        String str = new String("abcdef");
        System.out.println(str.substring(0, 3));//下标取值范围前闭后开

其他操作方法

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

        String str = new String("  ab cd ef  ");
        System.out.println(str.trim());

在这里插入图片描述

字符串的不可变性

String是一种不可变对象,字符串中的内容是不可改变的,字符串不可呗修改,是因为:

  1. String类在设计时就是不可改变的,String类实现描述中已经说明了
    String类中的字符实际保存在内部维护的value字符数组中
    String类被final修饰,表明该类不能被继承
    value被final修饰,表明value自身的值不能改变,即不能引用其他字符数组,但是其引用空间中的内容可以修改

  2. 所有及设计可能修改字符串内容操作都是创建一个新的对象,对新对象进行修改

final修饰类表示该类不能被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的

StringBuilder和StringBuffer

StringBuilder

由于String不可更改的特性,为了方便字符串修改,java又提供StringBuilder和StringBuffer类,这两个类大部分功能是相同的

String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改.
注意:String和StringBuilder类不能直接转换
String变为StringBuilder:利用StringBuilder的构造方法或append()方法
StringBuilder变为String:调用toString()方法

String,StringBuffer,StringBuilder的区别
String的内容不可修改,StringBuffer与StringBuilder的内容可以修改
StringBuffer与StringBuilder大部分功能是相似的

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

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

相关文章

解密OceanBase数据库引擎:探秘数据的深海奥秘

目录 1、引言 1.1 数据库引擎的重要性 1.2 OceanBase数据库引擎的背景和意义 2、OceanBase数据库引擎的基本概述 2.1 数据库引擎的定义和功能 2.2 OceanBase数据库引擎的特点和优势 3、OceanBase数据库引擎的架构和设计 3.1 分布式架构的概念和原理 3.2 OceanBase数据…

Unity之射线检测

不知道大家有没有玩过红色警戒 —— 一款即时战略游戏&#xff0c;和罪恶都市一样小编小学的时候就开始玩了&#xff0c;这款游戏控制单位角色移动是通过鼠标的点击来实现。 同样的操作方法还有英雄联盟等很多游戏&#xff0c;那本篇文章小编就通过简单小实例来讲解这种操作在U…

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…

2种数控棋

目录 数控棋1 数控棋2 数控棋1 棋盘&#xff1a; 初始局面&#xff1a; 规则&#xff1a; 规则&#xff1a;双方轮流走棋&#xff0c;可走横格、竖格、可横竖转弯&#xff0c;不可走斜格。每一步均须按棋所在格的数字走步数&#xff0c;不可多不可少。 先无法走棋的一方为…

强制保存 [force save] 是什么?如何使用它?

文章作者&#xff1a;ajun 阅读本文&#xff0c;了解强制保存&#xff08;force save&#xff09;的作用、使用方法&#xff0c;以及如何在 ONLYOFFICE 文档编辑器中开启强制保存。 引言 ONLYOFFICE有两种保存机制&#xff0c;一种是自动保存&#xff0c;一种是强制保存。自动…

“衣物收纳商品/ASTMF2057-23”和“泳池和水疗设施排水盖/16CFR1450” 的合规要求!

近期&#xff0c;不少美国站卖家陆续收到了亚马逊合规政策要求邮件&#xff0c;针对“衣物收纳商品”和“泳池和水疗设施排水盖”品类的合规要求有更新&#xff0c;请您及时关注&#xff01; 衣物收纳商品的合规认证要求&#xff1a; 衣物收纳商品是指带有抽屉或铰链门的家具商…

41 JAVA安全-目录遍历访问控制XSS等安全问题

目录 演示案例Javaweb代码分析-目录遍历安全问题Javaweb代码分析-前端验证安全问题Javaweb代码分析-逻辑越权安全问题Javaweb代码分析-XSS跨站安全问题拓展-安卓APP反编译JAVA代码(审计不香吗?) 演示案例 Javaweb代码分析-目录遍历安全问题 代码解析及框架源码追踪: 第一关&…

ElasticSearch的常用增删改查DSL和代码

es增删改查常用语法 我们日常开发中&#xff0c;操作数据库写sql倒是不可能忘记&#xff0c;但是操作es的dsl语句有时候很容易忘记&#xff0c;特地记录一下方便查找。 DSL语句 1、创建索引 -- 创建索引 PUT /my_index {"mappings": {"properties": {&…

安装conda搭建python环境(保姆级教程)

目录 一、Anaconda简介二、Anaconda安装 2.1 Anaconda下载2.2 Anaconda安装2.3 配置环境变量 三、通过conda配置python环境 3.1 创建并激活虚拟环境3.2 管理虚拟环境 一、Anaconda简介 Anaconda 是专门为了方便使用 Python 进行数据科学研究而建立的一组软件包&#xff0c;…

洛谷P5731 【深基5.习6】蛇形方阵(C语言)

思路感觉还是比较好想的。 从 1 到 n 依次算。先往右&#xff0c;走到头往下&#xff0c;再走到头往左&#xff0c;以此类推。 #include<stdio.h>int main() {int n, i, j, k1,t0;scanf("%d", &n);int a[100][100];if (n % 2 0)t n / 2;elset n / 2 …

轻空间气膜游泳馆助您冬日尽情畅游

随着气温逐渐降低&#xff0c;寒冷的冬季让许多热爱游泳的人感到不便。然而&#xff0c;随着气膜建筑技术的不断创新&#xff0c;气膜游泳馆应运而生&#xff0c;为冬日游泳提供了理想场所。其轻盈灵活的结构、优越的保温性能&#xff0c;以及独特的设计理念&#xff0c;让您在…

前端面试题(持续更新~~)

文章目录 一、基础1、数组常用的方法2、数组有哪几种循环方式&#xff1f;分别有什么作用&#xff1f;3、字符串常用的方法4、原型链5、闭包6、常见的继承7、cookie 、localstorage 、 sessionstrorage区别8、数组去重方法9、http 的请求方式10、数据类型的判断方法11、cookie …

Python——基本语法(二)

一、while 循环 语法&#xff1a; while 条件表达式:条件表达示为真&#xff0c;就执⾏这⾥的代码&#xff0c;必须缩进 4 个空格多⾏代码保持缩进⼀致 条件表达式可以是: True # 布尔值的 True 1 < 10 # 凡是在 if 语句中使⽤的判断表达示&#xff0c;这⾥都可以使…

基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证&#xff0c;通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台&#xff0c;在众…

24 小时经营,15 秒出饮,这台无人饮品机横空出世

随着科技的不断进步&#xff0c;无人饮品机应运而生&#xff0c;它以其 24 小时经营、15 秒出饮的特点&#xff0c;迅速成为人们关注的焦点。 D咖无人饮品机的外观设计简洁大方&#xff0c;体积小巧&#xff0c;操作界面简单易懂&#xff0c;消费者可以通过触屏选择自己喜欢的饮…

Stability AI发布全新代码模型Stable Code 3B

Stable Code 3B: Coding on the Edge 要点&#xff1a; Stable Code 3B 是一个包含 30 亿个参数的大型语言模型 (LLM)&#xff0c;可实现准确且响应灵敏的代码补全&#xff0c;其水平与大 2.5 倍的 CodeLLaMA 7b 等模型相当。即使在 MacBook Air 等普通笔记本电脑上没有 GPU&…

C++ 设计模式之 中介者模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 &#xff08;第16种模式&#xff09; 中介者模式&#xff08;Medi…

TCO-AF488,AF488-反式环辛烯,一种明亮的绿色荧光染料

文章关键词&#xff1a;AF488 TCO&#xff0c;Alexa Fluor TCO&#xff0c;TCO AF488&#xff0c;AF488 反式环辛烯 一、基本信息 产品简介&#xff1a;AF488 TCO&#xff0c;这是一款独特的荧光染料&#xff0c;以其鲜明的绿色光华吸引了众人的目光。在成像和流式细胞术中&a…

云HIS为连锁医院机构提供统一医院管理解决方案

云HIS重建统一的信息架构体系&#xff0c;重构管理服务流程&#xff0c;重造病人服务环境&#xff0c;向不同类型的医疗机构提供SaaS化HIS服务解决方案。 云HIS优势 1、云端数据优势 在传统的HIS模式里&#xff0c;数据存于医院本身的服务器机组&#xff0c;一旦发生故障&…

docker-compose安装mongodb

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 早上醒来的第一件事情就是摸了一下手机&#xff0c;看了一下微信相关的技术推文&#xff0c;给我推荐了一篇…