【Java SE】String 类(1)

目录

一.Java 中的String类

二.常用方法

1.字符串构造  (3种)

①使用常量串构造

②直接 newString 对象

③使用字符数组 进行 构造

2.String 对象的比较(4种)

① == 比较是否引用同一个对象

②boolean equals(Object anObject)  方法 : 按照字典序比较

③int compareTo(String s) 方法 : 按照字典序进行比较

④int compareToIgnoreCase(String str) 方法 : 与compareTo() 方式相同, 但是忽略大小写

3.字符串查找

4.转化

①数值和字符串转化

Ⅰ 数字转字符串:

Ⅱ 字符串转数字:

②大小写转换

③字符串转数组

Ⅰ 字符串转数组

Ⅱ 数组转字符串

④格式化

5.字符串替换

6.字符串拆分

①字符串的部分拆分

②带有转义字符的拆分

③多次拆分

7.字符串截取

8.其他方法

9.字符串的不可变性


一.Java 中的String类

Java 的 String 类是 java.lang 包中的一个核心类,用于表示和操作字符串。字符串在 Java 中是不可变的(immutable),任何对字符串的修改操作都会返回一个新的字符串对象。


二.常用方法

1.字符串构造  (3种)

    public static void main(String[] args) {
        String s1 = "hello";

        String s2 = new String("hellw");

        char[] ch = {'h','e','l','l','a'};
        String s3 = new String(ch);
    }

①使用常量串构造

②直接 newString 对象

③使用字符数组 进行 构造

注意:

String是引用类型,内部并不存储字符串本身

在Java中 用双引号引起来的也是 String类型对象


2.String 对象的比较(4种)

① == 比较是否引用同一个对象

对于基本类型,比较的是变量中的值

对于引用类型,比较的是引用中的地址

    public static void main(String[] args) {
        //基本类型变量,比较变量中存储的值是否相等
        int a = 10;
        int b = 20;
        int c = 10;
        System.out.println(a == c);//true
        System.out.println(b == c);//false

        //引用类型变量,比较两个引用变量引用的是否是同一个对象
        String s1 = new String("hello");
        String s2 = new String("world");
        String s3 = new String("hello");
        String s4 = s1;
        System.out.println(s1 == s2);//false
        System.out.println(s1 == s3);//false
        System.out.println(s1 == s4);//true
    }

②boolean equals(Object anObject)  方法 : 按照字典序比较

String 类重写了 父类Object 类 的 equals() 方法

Object 类 的 equals() 方法默认按照 == 比较

String重写equals方法后, 按照:s1.equals(s2)

s1.equals(s2):  比较String的是 逐个字符 

    public static void main(String[] args) {

        String s1 = new String("hello");
        String s2 = new String("world");
        String s3 = new String("hello");
        String s4 = s1;
        System.out.println(s1.equals(s2));//false
        System.out.println(s1.equals(s3));//true
        System.out.println(s1.equals(s4));//true
    }

③int compareTo(String s) 方法 : 按照字典序进行比较

与equals不同的是,  equals 返回的是 boolean 类型, 而compareTo 返回的int类型 

    public static void main(String[] args) {
        String s1 = new String("abcde");
        String s2 = new String("abc");
        String s3 = new String("ABC");
        String s4 = new String("abcde");

        System.out.println(s1.compareTo(s2));//2 前k个字符串相等,返回长度差值2
        System.out.println(s1.compareTo(s3));//32 返回符号差值32
        System.out.println(s1.compareTo(s4));//0 相等返回0
    }
  • 先按照字典序大小比较, 如果出现不等的字符串, 直接返回 这两个字符的大小差值
  • 如果前k个字符相等 (k为长度较小的字符串的长度) ,  返回值为 两个字符串长度的差值 ; 即对应字符无法比较出大小 , 返回长度差

④int compareToIgnoreCase(String str) 方法 : 与compareTo() 方式相同, 但是忽略大小写

    public static void main(String[] args) {
        String s1 = new String("abcde");
        String s2 = new String("abc");
        String s3 = new String("ABC");
        String s4 = new String("abcde");

        System.out.println(s1.compareToIgnoreCase(s2));//2 前k个字符串相等,返回长度差值2
        System.out.println(s1.compareToIgnoreCase(s3));//2 忽略大小写后,前k个字符串相等,返回长度差值2
        System.out.println(s1.compareToIgnoreCase(s4));//0 相等返回0
    }


3.字符串查找

    public static void main(String[] args) {
        String s1 = new String("aaabbbcccaaabbbccc");
        System.out.println(s1.charAt(3));//b  返回3下标的字符'b'
        System.out.println(s1.indexOf("b"));//3  返回b(可以是字符或数字)第一次出现的下标,没有则返回-1
        System.out.println(s1.indexOf("b",2));//3  返回b(可以是字符或数字)从下标2开始,第一次出现的下标,没有则返回-1
        System.out.println(s1.indexOf("bbb",2));//3
        
        System.out.println(s1.lastIndexOf("b"));//14  从后往前找,返回b(可以是字符或数字)第一次出现的下标,没有则返回-1
        System.out.println(s1.lastIndexOf("b",10));//5  从10下标开始,从后往前找,返回b(可以是字符或数字)第一次出现的下标,没有则返回-1
        System.out.println(s1.lastIndexOf("bbb",10));//3

    }


4.转化

①数值和字符串转化

Ⅰ 数字转字符串:
class Student{
    public String name;
    public 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 static void main(String[] args) {
         String s1 = String.valueOf(1234);
         String s2 = String.valueOf(true);
         String s3 = String.valueOf(new Student("zhangsan",22));
         System.out.println(s1);
         System.out.println(s2);
         System.out.println(s3);
    }

Ⅱ 字符串转数字:

Integer , Double等是Java的包装类

    public static void main(String[] args) {
        int d1 = Integer.parseInt("1234");
        double d2 = Double.parseDouble("23.33");
        System.out.println(d1);
        System.out.println(d2);
    }

②大小写转换

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

③字符串转数组

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

Ⅱ 数组转字符串
    public static void main(String[] args) {
        char[] ch = {'h','e','l','l','o'};
        String s1 = new String(ch);
        System.out.println(s1);
    }

④格式化

    public static void main(String[] args) {
        String s = String.format("%d / %d / %d",2025,8,1);
        System.out.println(s);
    }


5.字符串替换

    public static void main(String[] args) {
        String s1 = new String("hello");
        System.out.println(s1.replace("o","ee"));//用ee(可以是字符或字符串) 替换o(可以是字符或者是字符串)
        System.out.println(s1.replaceAll("l","-"));//用- 替换所有l
        System.out.println(s1.replaceFirst("l","-"));//用- 替换第一个l
    }

方法功能
replace(char olderChar,char newChar)替换所有指定内容
replace(CharSepuence target,CharSequence replancement)替换所有指定内容(参数可以是字符串)
String replaceAll(String regex,String replacement)替换所有指定内容(第一个参数是正则表达式)
String replaceFirst(String regex,String replacement)替换第一次出现的指定内容
第一个参数是原内容,第二个是替换内容


6.字符串拆分

将完整的字符串按照指定的分隔符划分为若干子字符串

①字符串的部分拆分
    public static void main(String[] args) {
        String s1 = "hello world";
        String [] s2 = s1.split(" ");//用空格作为分隔符
        for (String s:s2) {
            System.out.println(s);
        }
    }

②带有转义字符的拆分
    public static void main(String[] args) {
        String s1 = "192.163.1.1";
        String [] s2 = s1.split("\\.");//   \\.表示.
        for (String s:s2) {
            System.out.println(s);
        }
    }

注意:

  • 字符  |  *  +  .  等都要在前面加上转义字符  \\
  • 如果是分隔符是  \, 则需要写成  \\\\, 两个斜杠代表一个斜杠
  • 如果一i个字符串有多个分隔符, 则需要用  |  作为连字符

③多次拆分
    public static void main(String[] args) {
        String s1 = "name=zhangsan&age=10";
        String[] s2 = s1.split("&");
        for (int i = 0; i < s2.length; i++) {
            String[] s3 = s2[i].split("=");
            for (int j = 0; j < s3.length; j++) {
                System.out.print(s3[j]);
            }
        }
    }


7.字符串截取

    public static void main(String[] args) {
        String s = "helloworld";
        System.out.println(s.substring(5));//从指定位置截取到末尾
        System.out.println(s.substring(0,5));//从开始位置(参数一)截取到(参数二),范围是前闭后开区间
    }

 


8.其他方法

    public static void main(String[] args) {
        String s1 = " hello world ";
        System.out.println("{"+s1.trim()+"}");//只是去除字符串 最左侧和左右侧 的空格
    }

trim() 只会去除字符串 开头和结尾 的空白字符串(空格, 换行, 制表符) 


9.字符串的不可变性

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

①String 类在设计时就是不可变的, String类实现描述已经说明了:String类中的字符实际保存在内部维护的value字符数组中

  • String类被final修饰, 表明该类不能被继承
  • value被final修饰, 表明value自身的值不能被更改, 即不能引用其它字符数组, 但是其应用空间中的内容可以修改

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

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


内容概要:本文围绕“光伏-储能-数据中心”系统的容量优化配置展开研究,旨在通过构建数学模型并结合Matlab编程实现,对园区内光伏发电、储能设备与数据中心算力负荷之间的多能互补关系进行协同优化。研究综合考虑可再生能源出力的波动性、储能系统的充放电特性以及数据中心的动态用电需求与算力调度特性,建立以最小化综合成本、降低碳排放强度、提升能源自给率等为目标的多目标优化模型,并采用先进的智能优化算法(如粒子群、灰狼、鲸鱼等)进行求解,从而确定光伏装机容量与储能系统配置的最优方案。文中提供了完整的Matlab代码实现流程,涵盖数据预处理、模型构建、算法求解与结果可视化全过程,属于综合能源系统与信息基础设施深度融合的前沿交叉课题。; 适合人群:具备电力系统、能源工程、自动化或计算机等相关专业背景,熟悉Matlab编程与基本优化算法原理,从事新能源利用、绿色数据中心、综合能源系统规划与低碳调度等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握光伏-储能-数据中心耦合系统的建模思路与多能流协同机制;② 学习基于Matlab的多目标容量优化配置方法与智能算法应用技巧;③ 为工业园区、数字经济园区及绿色数据中心的能源系统规划、节能减排与可持续运行提供科学决策依据和技术解决方案。; 阅读建议:建议结合所提供的Matlab代码,深入理解目标函数设计、约束条件设定及算法实现细节,可通过调整负荷参数、改变气候数据、引入新的优化目标或约束条件等方式进行拓展性实验,以深化对系统特性的认知并提升实际科研与工程应用能力。
内容概要:本文档聚焦于“考虑源网荷储协调的主动配电网优化调度方法”的Matlab代码复现研究,属于电力系统与综合能源系统领域的高水平科研资源。文档系统阐述了融合电源侧、电网侧、负荷侧及储能系统(源-网-荷-储)协同优化的主动配电网调度模型,旨在通过先进的数学优化方法提升电力系统的经济性、可靠性与低碳化水平。研究内容涵盖多时间尺度调度架构、不确定性建模(如新能源出力波动)、鲁棒优化或分布鲁棒优化(DRO)等核心技术,并依托Matlab平台完成模型构建与仿真验证。同时,文档列举了多个前沿研究方向,如光储充一体化、主从博弈、微电网双层优化、电氢耦合系统、电动汽车集群调度等,体现出其在现代智能电网与综合能源系统优化调度中的代表性与前瞻性。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事能源、电气工程、自动化、可再生能源等方向研究的研究生、科研人员及工程技术人员,特别适合致力于优化建模、智能算法应用与综合能源系统仿真的研究人员。; 使用场景及目标:① 复现高水平期刊论文中的主动配电网优化调度模型;② 掌握源网荷储协同优化的建模方法与Matlab实现技术;③ 借助所提供的完整代码资源开展二次开发、算法改进或新场景拓展,服务于科研创新、项目申报与学术论文撰写。; 阅读建议:建议结合文档中提及的相关文献与案例,按照目录结构循序渐进地学习,重点理解模型构建的逻辑框架与代码实现的关键细节,并利用附带的百度网盘资源获取全部代码与数据文件,通过动手实践加深对优化算法与工程应用的理解。
内容概要:本文围绕《考虑光伏-储能-数据中心多能互补的园区容量优化配置(Matlab代码实现)》这一技术资源,系统研究了工业园区内光伏发电、储能系统与数据中心之间的能量协同与容量优化问题。通过构建融合可再生能源出力不确定性、负荷波动及数据中心算力负荷特性的数学优化模型,采用Matlab编程实现多能互补系统的容量配置求解,旨在提升能源利用效率、降低运营成本与碳排放,并增强园区能源系统的稳定性与经济性。文中综合运用分布鲁棒机会约束(DRCC)、N-1安全准则、鲁棒优化等先进建模方法,确保方案在复杂运行环境下的可行性与可靠性,适用于综合能源系统(IES)的规划与调度研究。; 适合人群:面向具备电力系统、能源系统或优化算法基础的研究生、科研人员及工程技术人员,尤其适合熟悉Matlab编程及YALMIP、CPLEX等优化工具的专业人士;对于从事智慧园区、绿色数据中心或低碳能源系统研究的人员亦具有较高参考价值。; 使用场景及目标:①支撑科研项目中对含数据中心的智慧园区进行多能互补建模与仿真分析;②用于撰写学位论文、期刊投稿中的案例验证与算法对比;③指导实际工程中光伏与储能容量的科学规划与配置决策;④深入学习分布鲁棒优化、N-1安全约束等高级方法在能源系统中的集成应用。; 阅读建议:建议结合提供的Matlab代码逐模块解析模型实现过程,重点关注目标函数构建、约束条件设定及求解器接口调用逻辑。推荐对照“顶级EI复现”案例,掌握工业级建模规范,并尝试复现关键结果以加深理解。同时可延伸学习文中关联的多时间尺度调度与协同优化策略,全面提升综合能源系统的研究与实践能力。
内容概要:本文介绍了一项基于支持向量机(SVM)的风力涡轮机故障检测技术研究,结合Matlab代码与Simulink仿真平台实现风力涡轮机的故障诊断与容错控制。该方法利用SVM强大的分类能力对风力涡轮机运行数据进行分析,有效识别早期故障特征,提升系统可靠性与安全性。资源包包含完整的算法实现代码、仿真模型及实验数据,适用于开展风电系统智能故障诊断相关的科研与工程应用。此外,文中还提及多个相关研究方向,涵盖风电系统建模、功率预测、储能优化、多能源协同调度等,展示了在新能源系统中机器学习技术的广泛应用前景。; 适合人群:具备一定MATLAB/Simulink基础,从事新能源、电力系统、智能诊断或自动化方向研究的科研人员及工程技术人员,尤其适合研究生与高校教师。; 使用场景及目标:① 实现风力涡轮机典型故障(如传感器故障、传动链异常等)的快速检测与分类;② 结合Simulink搭建风电系统仿真模型,验证SVM故障检测算法的有效性与鲁棒性;③ 支持科研复现、论文写作、项目开发及教学演示等多种应用场景; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型进行实操演练,重点关注数据预处理、特征提取与SVM参数调优环节,以深入掌握故障检测系统的构建流程。同时可参考文档中列出的其他研究主题拓展研究思路。
内容概要:本文围绕“计及数据中心算力等效的电热综合能源系统调度策略”展开,提出一种将数据中心的算力需求等效为可调度电力负荷的创新方法,通过Matlab代码实现了电、热、算力多能耦合系统的协同优化调度。该策略充分挖掘数据中心在能耗特性与算力弹性方面的潜力,将其作为灵活负荷参与综合能源系统调度,有效提升系统对可再生能源的消纳能力,降低弃风弃光率,并增强系统运行的经济性与灵活性。研究涵盖了系统建模、优化求解与仿真分析全过程,提供了完整的Matlab代码与复现方案,具有较高的科研价值与工程应用前景,属于高水平学术论文复现内容。; 适合人群:具备电力系统、综合能源系统、优化建模等相关背景,熟练掌握Matlab编程及YALMIP等优化工具箱,从事能源互联网、绿色计算、数据中心节能等领域研究的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于高水平科研论文复现与算法验证,掌握算力-电力耦合系统建模与优化方法;②支撑综合能源系统、数据中心低碳运行等课题研究与项目开发;③深化对多能协同调度、需求侧响应及可再生能源消纳机制的理解与实践能力。; 阅读建议:建议结合网盘提供的完整代码包与说明文档,按照目录结构循序渐进学习,重点关注模型构建逻辑与Matlab实现细节,熟练使用YALMIP调用求解器进行仿真调试,并可在掌握核心思想的基础上进一步拓展至多场景、分布鲁棒等高级优化方法。
打开链接下载源码: https://pan.quark.cn/s/b80efd24c07e CP2102驱动程序集是专为采用Silicon Labs公司制造的CP2102串行接口芯片的设备而构建的软件工具套件。此驱动程序集保障了在Windows操作系统环境,涵盖Win7、Win8及Win10版本下,基于CP2102芯片的USB至串口转换模块能够被顺利检测并有效执行。CP2102是一款兼具高性能与低成本特性的USB至UART桥接装置,它为开发者提供了将串行通信端口转换为USB端口的便捷途径,因而被大量应用于各类嵌入式系统及开发平台上。关于CP2102驱动程序集的核心要点,主要可以归纳为以下几个层面: 1. **CP2102芯片**:这款芯片符合USB 2.0标准,属于串行接口类型,能够支持高达全速USB 12Mbps的数据传输带宽。它内部集成了USB协议处理单元和UART接口,显著简化了与微控制器的连接过程,同时支持包括RS-232、RS-485以及I²C在内的多种串行通信模式。 2. **驱动程序**:驱动程序作为操作系统与硬件设备之间的接口层,负责使操作系统能够识别并操控硬件设备。CP2102驱动程序集内含为不同Windows操作系统定制化的驱动文件,旨在确保用户在安装后能够准确运用CP2102芯片进行串口通信。 3. **固件**:固件通常指嵌入在电子设备内部、用于控制设备操作流程的程序代码。CP2102驱动程序集提供的固件升级可能涉及性能改进、新特性集成或缺陷修正,以保障与CP2102芯片最新型号的兼容性。 4. **兼容性**:该驱动程序集支持多种Windows操作系统平台,具体包括Win7、Win8和Win10,这一特性意味着无论用户选用何种版本的Wind...
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值