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

这篇具有很好参考价值的文章主要介绍了【手把手带你学JavaSE】String类(下篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

一、字符串查找

字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法。
【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端
【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

二、字符串转换

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);
    }
}

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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());
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

三、字符串替换

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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

    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端
注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串。

四、字符串拆分

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
        }
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
        }
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
        }
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

五、字符串截取

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端
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()+"]");
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

6.2 boolean isEmpty()

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

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

6.3 int length()

用于求字符串的长度

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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"));
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

6.5 boolean contains(String str)

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

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

七、StringBuilder&&StirngBuffer

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

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

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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);
    }

【手把手带你学JavaSE】String类(下篇),【手把手带你学JavaSE系列】,java,servlet,前端

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

注意:

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

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

StringBuilder变为String:
调用StringBuilder重写的toString()方法文章来源地址https://www.toymoban.com/news/detail-789155.html

7.2 String、StringBuffer、StringBuilder的区别

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

到了这里,关于【手把手带你学JavaSE】String类(下篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JUnit技术专题】「入门到精通系列」手把手+零基础带你玩转单元测试,让你的代码更加“强壮”(实战开发篇)

    本节内容主要介绍JUnit单元测试功能框架,并以实战演练的形式进行讲解。本系列教程主要针对代码编程方式和模型,重点讲解实战代码开发。通过本系列教程的学习,您将能够深入了解JUnit单元测试框架的使用和原理,并掌握如何在实际项目中运用JUnit进行单元测试。 以下是

    2024年02月03日
    浏览(82)
  • 【JUnit技术专题】「入门到精通系列」手把手+零基础带你玩转单元测试,让你的代码更加“强壮”(场景化测试篇)

    测试套件将多个单元测试用例捆绑在一起并进行集中执行。在JUnit中,可以使用@RunWith和@Suite注解来实现测试套件的运行。 下面的示例包含TestJunit1和TestJunit2两个测试类,我们将使用测试套件来一起运行这两个测试类: 创建一个类 创建一个待测试的Java类,命名为MessageUtil.ja

    2024年02月03日
    浏览(69)
  • 《手把手教你学嵌入式无人机》——入门航模遥控器使用(MC6C)

    一、 MC6C入门航模遥控器简介     六通道MC6C迈克遥控器是普遍使用的一款入门航模遥控器,价格较为低廉,同时性能比较稳定,性价比较高。 遥控器与接收机 1.基本参数: 遥控器: 遥控范围:大于800米 供电电源:4节普通5号电池 接收机: 尺寸:45*45*10(mm) 重量:9.6克 电

    2024年02月02日
    浏览(493)
  • 【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(基础概念解析+有状态的流式处理)

    Apache Flink 是业界公认的最佳流计算引擎之一,它不仅仅局限于流处理,而是一套兼具流、批、机器学习等多种计算功能的大数据引擎。Flink 的用户只需根据业务逻辑开发一套代码,就能够处理全量数据、增量数据和实时数据,无需针对不同的数据类型开发不同的方案。这使得

    2024年02月03日
    浏览(89)
  • 【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(特点和优势分析+事件与时间维度分析)

    本文介绍了Apache Flink的定义、架构、基本原理,并辨析了大数据流计算相关的基本概念。同时回顾了大数据处理方式的历史演进以及有状态的流式数据处理的原理。最后,分析了Apache Flink作为业界公认为最好的流计算引擎之一所具备的天然优势,旨在帮助读者更好地理解大数

    2024年02月03日
    浏览(61)
  • 手把手带你搞懂AMS启动原理

    彻底搞懂AMS即ActivityManagerService,看这一篇就够了 最近那么多教学视频(特别是搞车载的)都在讲AMS,可能这也跟要快速启动一个app(甚至是提高安卓系统启动速度有关),毕竟作为安卓系统的核心系统服务之一,AMS以及PMS都是很重要的,而我之前在 应用的开端–PackageManag

    2024年02月12日
    浏览(122)
  • 手把手带你调参Yolo v5(二)

    来源:投稿 作者:王同学 ​​​​​​​编辑:学姐 今天我们继续上次的YOLOv5参数解析,这次主要解析源码中train.py文件中包含的参数。 1.1\\\'--weights\\\' 1.2\\\'--cfg\\\' 1.3\\\'--data\\\' 1.4\\\'--hyp\\\' 1.5\\\'--epochs\\\' 1.6\\\'--batch-size\\\' 1.7\\\'--imgsz\\\', \\\'--img\\\', \\\'--img-size\\\' 1.8\\\'--rect\\\'🍀 1.9\\\'--resume\\\'🍀 1.10\\\'--nosave\\\' 1.11\\\'--nova

    2024年02月05日
    浏览(57)
  • 从0手把手带你搭建pytorch深度学习

    目录 一、查看电脑有NVIDIA显卡没 二、更新电脑驱动 三、安装CUDA ToolKit和CUDNN 1、查看显卡驱动版本 2、查看合适的CUDA版本 3、下载CUDA ToolKit 4、安装CUDA 5、查看是否安装成功 6、安装CUDNN 7、CUDNN配置 四、安装anaconda 五、安装pycharm 六、搭建pytorch深度学习环境 1、进入Anaconda Pr

    2024年02月07日
    浏览(55)
  • 手把手带你实现DQN(TensorFlow2)

            大家好,今天给大家带来DQN的思路及实现方法。         关于DQN,就不用我多做介绍了,我会以最简短明白的阐述讲解DQN,尽量让你在10分钟内理清思路。         非常重要的一点!!!         非常重要的一点!!!我在GitHub上下载了DQN代码,跑完后,我重写一

    2023年04月08日
    浏览(58)
  • 手把手带你配置一个DHCP服务器

    最近部门内部成立一个网络兴趣小组,初衷是通过网络知识学习,在遇到网络问题时能够承担起一个与网络侧同学有效沟通的“连接人”的角色,求学这么多年其实也陆续学了不少的网络相关课程,本科的计算机网络、硕士的高等计网等,不过当时大多都停留在理论层面,趁

    2024年02月05日
    浏览(91)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包