【手把手带你学JavaSE】String类(下篇)

news2024/11/19 5:34:17

目录

  • 前言
  • 一、字符串查找
  • 二、字符串转换
    • 2.1 数值和字符串转化
    • 2.2 大小写转化
    • 2.3 字符串和数组的转换
    • 2.4 格式化
  • 三、字符串替换
  • 四、字符串拆分
    • 4.1 拆分处理
    • 4.2 部分拆分
    • 4.3 拆分IP地址
  • 五、字符串截取
  • 六、其他的方法
    • 6.1 String trim()
    • 6.2 boolean isEmpty()
    • 6.3 int length()
    • 6.4 判断字符串开头结尾
    • 6.5 boolean contains(String str)
  • 七、StringBuilder&&StirngBuffer
    • 7.2 String、StringBuffer、StringBuilder的区别

前言

上篇我们已经学习了String类的一些知识,接下来我们接着学习!

一、字符串查找

字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法。
在这里插入图片描述
在这里插入图片描述

二、字符串转换

2.1 数值和字符串转化

static String valueof() 数值转字符串
Integer.parseInt() 字符串整形
Double.parseDouble() 字符串转浮点型

class Student{
    String name;
    int age;
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Test {
    public static void main(String[] args) {
        String s1 = String.valueOf(123);
        String s2 = String.valueOf(12.3);
        String s3 = String.valueOf(true);
        String s4 = String.valueOf(new Student("ahdiauhd",23));

        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println("===========================");

        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("12.5");
        System.out.println(data1);
        System.out.println(data2);
    }
}

在这里插入图片描述

2.2 大小写转化

String toUpperCase() 转大写
String toLowerCase() 转小写
这两个函数只转换字母。

public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = "HADSDKJA";

        //小写转大写
        System.out.println(s1.toUpperCase());
        //大写转小写
        System.out.println(s2.toLowerCase());
    }

在这里插入图片描述

2.3 字符串和数组的转换

char[ ] toCharArray() 字符串转数组
new String(数组引用) 数组转字符串

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

在这里插入图片描述

2.4 格式化

static String format( );

public static void main(String[] args) {
        String s = String.format("%d-%d-%d",2022,9,17);
        System.out.println(s);
    }

在这里插入图片描述

三、字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:

在这里插入图片描述

public static void main(String[] args) {
        String s = "Hello World!";
        System.out.println(s.replace("l","a"));
        System.out.println(s.replaceFirst("l","k"));

    }

在这里插入图片描述
注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串。

四、字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

在这里插入图片描述

4.1 拆分处理

public static void main(String[] args) {
        String s1 = "Hello World! Hahaha asjkd";
        String[] arr = s1.split(" ");//按空格拆分
        for (String s:arr) {
            System.out.println(s);
        }
    }

在这里插入图片描述

4.2 部分拆分

public static void main(String[] args) {
        String s1 = "Hello World! Hahaha asjkd";
        String[] arr = s1.split(" ",2);
        for (String s:arr) {
            System.out.println(s);
        }
    }

在这里插入图片描述

4.3 拆分IP地址

public static void main(String[] args) {
        String str = "188.166.1.1" ;
        String[] arr = str.split("\\.") ;
        for(String s: arr) {
            System.out.println(s);
        }
    }

在这里插入图片描述

五、字符串截取

在这里插入图片描述

public static void main(String[] args) {
        String s = "Hello World!";
        System.out.println(s.substring(0));
        System.out.println(s.substring(0,5));
    }

在这里插入图片描述
1. 索引从0开始。
2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标 。

六、其他的方法

6.1 String trim()

方法:String trim()

功能:去掉字符串中的左右空格,保留中间空格。

public static void main(String[] args) {
        String s = "         Hello World     ";
        System.out.println("[" +s+"]");
        System.out.println("[" +s.trim()+"]");
    }

在这里插入图片描述

6.2 boolean isEmpty()

isEmpty() 方法用于判断字符串是否为空

public static void main(String[] args) {
        String s = "     ";
        System.out.println(s.isEmpty());
    }

在这里插入图片描述

6.3 int length()

用于求字符串的长度

public static void main(String[] args) {
        String s = "MoyuWangPangdudu";
        System.out.println(s.length());
    }

在这里插入图片描述

6.4 判断字符串开头结尾

boolean startsWith(String prefix) 判断字符串是否以某个字符串开头的
boolean endWith(String sufix) 判断字符串是否以某个字符串结尾的

public static void main(String[] args) {
        String s = "MoyuWangPangdudu";
        System.out.println(s.startsWith("Mo"));
        System.out.println(s.endsWith("dudu"));
    }

在这里插入图片描述

6.5 boolean contains(String str)

判断字符串中是否包含某个字符串

public static void main(String[] args) {
        String s = "MoyuWangPangdudu";
        System.out.println(s.contains("Wang"));
    }

在这里插入图片描述

七、StringBuilder&&StirngBuffer

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。

这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法.

在这里插入图片描述

public static void main(String[] args) {
        StringBuilder sb1 = new StringBuilder("Hello");
        StringBuilder sb2 = sb1;

        //追加:即尾插->字符、字符串、整型数字
        sb1.append("   ");//Hello
        sb1.append("World!");//Hello   World!
        sb1.append(123);//Hello   World!123
        System.out.println(sb1);


        System.out.println(sb1 == sb2);//true

        System.out.println(sb1.charAt(0)); // 获取0号位上的字符 H

        System.out.println(sb1.length());// 获取字符串的有效长度17

        System.out.println(sb1.capacity());// 获取底层数组的总大小

        sb1.setCharAt(0, 'h'); // 设置任意位置的字符 hello   World!123

        sb1.insert(0,"Hello World!!");// Hello world!!Hello   World!123
        System.out.println(sb1);
        System.out.println(sb1.indexOf("Hello")); // 获取Hello第一次出现的位置
        System.out.println(sb1.lastIndexOf("hello"));// 获取hello最后一次出现的位置

        sb1.deleteCharAt(0); // 删除首字符
        System.out.println(sb1);
        sb1.delete(0,5);// 删除[0, 5)范围内的字符
        System.out.println(sb1);

        String str1 = sb1.substring(0,5);// 截取[0, 5)区间中的字符以String的方式返回
        System.out.println(str1);

        sb1.reverse();//字符串逆转
        str1 = sb1.toString(); // 将StringBuffer以String的方式返回
        System.out.println(str1);
    }

在这里插入图片描述

String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改。频繁修改字符串的情况考虑使用StringBuilder 。

注意:

String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:

String变为StringBuilder:
利用StringBuilder的构造方法(StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容)或append()方法

StringBuilder变为String:
调用StringBuilder重写的toString()方法

7.2 String、StringBuffer、StringBuilder的区别

  1. String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
  2. StringBuffer与StringBuilder大部分功能是相似的
  3. StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作

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

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

相关文章

vue3与vue2的区别(你不知道细节全在这)

先来说说当下市场开发使用的问题&#xff0c;目前2021年使用vue3开发的企业还是少&#xff0c;基本上都还是以vue2的形式进行开发&#xff0c;vue3的开发模式跟react很像&#xff0c;这时候有人就会想那我学vue3有用么&#xff0c;淦&#xff0c;他喵的&#xff0c;先别激动&am…

Vue开发项目入门——Vue脚手架

1.什么是Vue脚手架 Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09;&#xff0c;它提供命令行和UI界面&#xff0c;方便创建vue工程、配置第三方依赖、编译vue工程。 特别注意&#xff1a;Vue脚手架是用来方便开发的&#xff0c;但vue脚手架不是最终发…

Canvas百战成神-圆(1)

Canvas百战成神-圆 初始化容器 <canvas id"canvas"></canvas>canvas{border: 1px solid black; }让页面占满屏幕 *{margin: 0;padding: 0; } html,body{width: 100%;height: 100%;overflow: hidden; } ::-webkit-scrollbar{display: none; }初始化画笔…

【网络请求之Axios】axios的基础用法

1. axios概述 axios 是一个专注于网络请求的库。axios 在请求到数据之后&#xff0c;在真正的数据之外&#xff0c;套了一层外壳。 2.axios的基本使用 2.1 发送get请求 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta cha…

前端:弹幕标签用法详细介绍(跑马灯)

弹幕标签 1&#xff0c;注意弹幕标签marquee&#xff0c;现在一些浏览器是不支持的 2&#xff0c;弹幕标签也叫跑马灯 marquee格式及其含有的属性 1.基本格式 如下&#xff1a; <marquee></marquee>2.一些属性 1&#xff0c;direction属性&#xff1a;表示的…

39.JavaScript中Promise的基本概念、使用方法,回调地狱规避、链式编程

《JavaScript再出发》系列文章阅读《仙宗》发布招仙贴&#xff0c;广招天下道友 文章目录JavaScript中Promise的基本概念、使用方法&#xff0c;以及回调地狱规避一、前言二、Promise基本概念2.1 异步工作的封装2.2 Promise执行结果获取thencatchfinally三、使用Promise解决回调…

qiankun微应用之间、主微应用之间相互跳转方式总结与实践

一、子应用互相访问 1、背景 &#xff08;1&#xff09;未来可能需要做不同子应用菜单的合并&#xff0c;如在bi应用下的侧边栏或者别的地方&#xff0c;需要跳转到数据治理的数仓主题里&#xff0c;或者涉及到子应用值改变&#xff0c;其他应用也需要使用&#xff1b; &…

【JWT鉴权】如何来写一个token令牌认证登录?

目录一. &#x1f981; 话题引入1.2 什么是JWT&#xff1f;二. &#x1f981; 技术体现2.1 引入依赖2.2 编写JWT工具类2.3 编写登录方法2.4 编写JWT拦截器验证令牌2.5 编写要配置拦截的接口三. &#x1f981; 话题终结一. &#x1f981; 话题引入 在做项目过程中&#xff0c;我…

vue-element-ui前后端交互实现分页查询

大体思路&#xff1a; ①添加element-ui分页组件 ②在data里定义几个参数用来存放当前页&#xff0c;每页条数&#xff0c;条目总数以及存放后端分页查询的结果 ③后端使用分页查询&#xff0c;controller层接收当前页以及每页条数的参数 ④前端编写方法发送请求到controll…

用jsp实现简单登入注册界面功能(css美化)(软件idea)

思路&#xff1a;创建登入界面&#xff08;login&#xff09;&#xff0c;再创建登入成功与登入失败界面&#xff08;loginsuccess与loginfail&#xff09;&#xff0c;再创建注册成功界面&#xff08;registersuccess&#xff09;与注册界面&#xff08;register&#xff09;以…

用HTML实现简易版计算器

计算器功能&#xff1a;实现了加减乘除、清零、回退、四则运算、幂运算、根式运算等等。 运行结果如下&#xff1a; 引入的图片&#xff1a;back.png HTML部分&#xff1a;用table表格添加计算器的按键&#xff0c;给每个按键设置一个相应的单击事件&#xff0c;点击一个按键后…

RuoYi-Vue——图标使用

使用若依的小伙伴们&#xff0c;是否有遇到找图标的烦恼。若依框架里图标分两种&#xff0c; 1.用在表格中的图标&#xff1a; 2.用在菜单及个人信息的图标&#xff1a; 下面我就针对这两种图标给大家总结一下。 1.表格图标&#xff08;ElementUI图标Icon&#xff09; 若依的表…

【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 &#x1f5a5;️ NodeJS专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ 博主的前端之路&#xff1a;前端之行&#xff0c;任重道远&#xff08;来自大三学长的万字自述&#xff09; &#x1f5a5;️ TypeScript知识总…

layui数据表格的使用(前端和后端)

数据表格&#xff08;纯前端&#xff09; 快速使用 首先需要引入layui的css和js <link rel"stylesheet" href"../static/layui/css/layui.css"> <script src"../static/layui/layui.js" charset"utf-8"></script>…

如何搭建vue框架-1

提示&#xff1a;前端新人&#xff0c;初来乍到&#xff0c;若文章写的不好大家多包涵。 文章目录前言一、vue是什么&#xff1f;二、ElementUI是什么&#xff1f;三、搭建前的准备四、安装步骤1.安装webpack2.安装vue-cli3.通过vue-cli构建项目4.启动项目5.其他总结前言 基于…

element-ui表格编辑

前言&#xff1a; 准备&#xff1a; element-uivue3vscode 实现步骤&#xff1a; 数据标定打开激活编辑保存 1. 设定需要编辑的表格单元格是否编辑标识 在请求后台表格数据时进行一个二次包装&#xff0c;如果后端已经处理则不需要在进行包装&#xff08;此处包装是否编辑…

手撕前端面试题【javascript~模板字符串、类继承、参数解析器、生成页码等】

前端的那些基本标签&#x1f353;&#x1f353;模板字符串&#x1f353;&#x1f353;类继承&#x1f353;&#x1f353;参数解析器&#x1f353;&#x1f353;生成页码&#x1f353;&#x1f353;js中哪些操作会造成内存泄漏?html页面的骨架&#xff0c;相当于人的骨头&#…

react router6.x官方DEMO

Tutorial v6.4.2 | React Router 初始化项目 import React from "react"; import ReactDOM from "react-dom/client"; import {createBrowserRouter,RouterProvider,Route, } from "react-router-dom"; import "./index.css";const …

用CSS设置颜色、背景和图像效果

&#x1f4dc;个人简介 ⭐️个人主页&#xff1a;微风洋洋&#x1f64b;‍♂️ &#x1f351;博客领域&#xff1a;编程基础&#x1f4a1;,后端&#x1f4a1;,大数据,信息安全 &#x1f345;写作风格&#xff1a;干货,干货,还是tmd的干货 &#x1f338;精选专栏&#xff1a;【J…

js数组常用方法(19种)|你会的到底有多少呢?

一、改变原数组的方法 1.push&#xff08;&#xff09; 末尾添加数据 语法: 数组名.push(数据) 作用: 就是往数组末尾添加数据 返回值: 就是这个数组的长度 //push var arr [10, 20, 30, 40] res arr.push(20) console.log(arr);//[10,20,30,40,20] console.log(res);//52. …