常用API学习03(Java)

news2024/11/25 23:52:13

String

char charAt(int index)     返回char指定索引处的值

char[] toCharArray()     将此字符串转换为新的字符数组

int compareTo(String anotherString)     按字典顺序比较两个字符串

boolean contains(CharSequence s)     当且仅当此字符串包含指定的char值序列才返回true

boolean startsWith(String prefix)     测试此字符串是否以指定的前缀开头

boolean endsWith(String suffix)     测试此字符串是否以指定的后缀结尾

boolean equals(Object anObject)     将此字符串与指定对象进行比较

boolean equalsIgnoreCase(String anotherString)     将此String与其他String比较,忽略案例注意事项

String concat(String str)     将指定的字符串连接到该字符串的末尾

String toUpperCase()     将所有在此字符String使用的默认语言环境的规则大写

String toLowerCase()     将所有在此字符String使用的默认语言环境的规则小写

int hashCode()     返回此字符串的哈希码

boolean isEmpty()     返回true如果,且仅当length()为0

int length()     返回此字符串的长度

byte[] getBytes()     使用平台的默认字符集将此string编码为字节序列,将结果存储到新的字节数组中。

byte[] getBytes(Charset charset)     使用给定的charset将该string编码为字节序列,将结果存储到新的字节数组中。

int indexOf(int ch)     返回指定字符第一次出现的字符串内的索引

int indexOf(int ch,int fromIndex)     返回指定子串的第一次出现的字符串中的索引,从指定的索引开始

int lastIndexOf(int ch)     返回指定字符的最后一次出现的字符串中的索引

String intern()     返回字符串对象的规范表示

String substring(int beginIndex)     返回一个字符串,该字符串是此字符串的子字符串

String trim()     返回一个字符串,其值为此字符串,并删除任何前导和尾随空格

String toString()     此对象(依旧是字符串)本身已被返回

static String valueOf(boolean/char/int.....    c)     返回参数的字符串

先补充方法外的知识:

string类代表字符串。Java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。字符串不变;它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享。

#拓展:我们知道,当两个String类型的值相加时,会出现这种情况:

使用+拼接运算运算的时候,底层实际上是使用StringBuilder类,但是,如果我们需要相加的String类型的数据太多的话,就不适合使用“+”,因为效率很低。

我们先运行这段代码:

 运行结果:

需要5312毫秒,再看看另外一个使用append的方法:

 运行结果:

只有141毫秒。

总结: 当数据特别多的时候,我们推荐使用append()。使用之前需要创建一个StringBuilder类,由StringBuilder类来使用append()。

接下来逐个介绍方法:

package com.itheima.string;

public class StringDemo01 {
    public static void main(String[] args) {
        String str = "abcdefghijklmn";

        //获取指定下标的字符
        char c = str.charAt(3);
        System.out.println(c);

        //将字符串转换为字符数组
        char[] cs = str.toCharArray();
        for(char ch : cs){
            System.out.println(ch);
        }

        char[] arr = {'q','w','e','r','t','y','u'};

        //将字符数组转换为字符串
        String s = new String(arr);
        System.out.println(s);

        //从指定数组的指定下标开始,将指定个数字符转换为字符串
        String s2 = new String(arr,2,3);
        System.out.println(s2);
    }
}

运行结果:

 此处补充一下,

String(byte[] bt)可将字符数组转换为字符串,String(byte[] bt,offset,count)从指定数组的指定下标开始,将指定个数字符转换为字符串。

package com.itheima.string;

public class StringDemo02 {
    public static void main(String[] args) {
        String s1 = "demo";
        String s2 = "demoa";
        String s3 = "dea";
        String s4 = "deb";
        String s5 = "Acb";
        String s6 = "acb";
        //按字典顺序比较两个字符串
        /*比较过程:
        * 转化为字符数组后,会进行逐位比较,如果同一个位置上的字符不一致,
        * 返回两个字符之差,如果每一个都一致,但是其中一个字符串先遍历完
        * 成,则返回两个字符串的长度之差*/
        int ct1 = s1.compareTo(s2);
        System.out.println(ct1);
        int ct2 = s3.compareTo(s4);
        System.out.println(ct2);
        int ct3 = s5.compareTo(s6);
        System.out.println(ct3);
    }
}

运行结果:

补充:compareTo(),按字典顺序比较两个字符串,转化为字符数组后,会进行逐位比较,如果同一个位置上的字符不一致,返回两个字符之差,如果每一个都一致,但是其中一个字符串先遍历完成,则返回两个字符串的长度之差。

package com.itheima.string;

public class StringDemo03 {
    public static void main(String[] args) {
        String s = "Big Data";
        //判断字符是否包含指定的子串
        System.out.println(s.contains("ata"));

        //判断字符是否是指定开头
        System.out.println(s.startsWith("a"));

        //判断字符是否是指定结尾
        System.out.println(s.endsWith("a"));

        // 判断两个字符串是否相等
        String s2 = "Big data";
        System.out.println(s.equals(s2));

        //忽略大小比较相等
        System.out.println(s.equalsIgnoreCase(s2));
    }
}

运行结果:

 

 

package com.itheima.string;

public class StringDemo04 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "def";

        //concat  将指定的字符串连接到该字符串的末尾
        System.out.println(s1.concat(s2));

        //大写
        System.out.println(s1.toUpperCase());

        //小写
        System.out.println(s1.toLowerCase());

        //获取哈希码
        System.out.println(s1.hashCode());

        //获取字符串长度
        System.out.println(s1.length());

        //判断字符串是否为空
        String s3 = "";//空串
        String s4 = null;//为空
        System.out.println(s1.isEmpty());
        System.out.println(s3.isEmpty());
        //System.out.println(s4.isEmpty());这么写会报错,因为isEmpty是判断字符串是否为空。
        //空串和为空是不一样的,空串依然是一个字符串,只是里面什么都没有,为空是这个String类直接为null值。
        System.out.println(s4 == null);//这种方式才可以判断是不是为空
    }
}

运行结果:

补充:isEmpty(),这个方法可以判断字符串是否为空,也就是我们说的空串,什么是空串,在Java中,诸如“ ”,这种就是空串,空串和为空是不一样的,为空是null,如果本就为空,使用这个方法去判断字符串是否为空就会出现报错。

package com.itheima.string;

import java.io.UnsupportedEncodingException;

public class StringDemo05 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String s = "大数据";

        //转换为字节数组
        byte[] bt1 = s.getBytes();
        System.out.println(bt1.length);

        //转换为指定编码的字节数组
        byte[] bt2 = s.getBytes("GBK");
        System.out.println(bt2.length);

        byte[] bt3 = {97,98,99,100,101,102,103,104,105,106,107,108};

        //字节数组转换为字符串
        String s1 = new String(bt3);
        System.out.println(s1);

        //指定编码将字节数组转为字符串
        String s2 = new String(bt1,"GBK");
        System.out.println(s2);

        //指定范围
        String s3 = new String(bt2,2,4);
        System.out.println(s3);
        String s4 = new String(bt2,2,4,"GBK");
        System.out.println(s4);


    }
}

 运行结果:

补充:依然是针对与String(),在上面的代码中,我们通过getbytes()获得了字节数组,同时也能指定GBK的编码方法,那么对于String()而言,既然能把字节数组转换为字符串,就能通过GBK编码方法把字节数组转换为字符串,也能指定范围。

package com.itheima.string;

public class StringDemo06 {
    public static void main(String[] args) {
        String str="Tarena Big Data";
        //获取指定的字串在字符串中第一次出现的下标
        int index = str.indexOf("a");
        System.out.println(index);
        //从小标为4的位置开始,向后寻找第一次出现a的位置
        int index2 = str.indexOf("a", 4);
        System.out.println(index2);

        //获取指定的字符串最后一次出现的下标
        int index3 = str.lastIndexOf("t");
        System.out.println(index3);

    }
}

 运行结果:

package com.itheima.string;

public class StringDemo07 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = new String("abc");
        //地址不同
        System.out.println(s1==s2);
        //intern  获取字符串的实际地址而不是内存地址
        System.out.println(s1 == s2.intern());

        //就去字符串
        String s3 = "Tarena Big Data";
        //截取指定小标开始到末尾
        String sub1 = s3.substring(4);
        System.out.println(sub1);

        //截取指定范围字符串
        //在Java中,表示范围,一般都是包前不包后/包小不包大
        String sub2 = s3.substring(4,8);
        System.out.println(sub2);
        //toString对于字符串而言返回的就是自己本身
        System.out.println(s3.toString());

        //掐头去尾 去掉字符串的空白字符和尾部空格
        String s4 = "    abc    xyz    ";
        System.out.println(s4);
        System.out.println(s4.trim());
    }
}

 运行结果:

补充: substring(),是从指定索引开始截取字符串,也包括了指定索引所值的字符。如果又设定了结束索引时,最后一个索引所指的字符则不要,只要开始索引和结束索引中间的。trim(),是掐头去尾,去掉字符串的空白字符和尾部空格,字符串中间的空格不管。

package com.itheima.string;

import javafx.beans.binding.ObjectExpression;

public class StringDemo08 {
    public static void main(String[] args) {
        int i = 5;
        double d = 3.25;
        char c = 'a';

        //valueOf()是将参数转化为字符串
        String s = String.valueOf(i);
        String s1 = String.valueOf(d);
        String s2 = String.valueOf(c);
        System.out.println(s);
        System.out.println(s1);
        System.out.println(s+s1+s2);

        //如果转化的是对象,那么此时实际上是调用了这个对象的toString方法
        Object o = new Object();
        String s3 = String.valueOf(o);
        System.out.println(s3);
        System.out.println(o.toString());

        int[] ints = {1,2,3,4,5,6};
        String s4 = String.valueOf(ints);
        System.out.println(s4);

        //如果是字符数组,那么valueOf是将这个字符数组转化为字符串
        char[] chars = {'a','b','c'};
        String s5 = String.valueOf(chars);
        System.out.println(s5);
        System.out.println(chars.toString());

    }
}

运行结果:

补充:关于valueOf(),首先需要知道valueOf()是将参数转化为字符串。而如果转化的是对象,那么此时实际上是调用了这个对象的toString方法。如果是字符数组,那么valueOf是将这个字符数组转化为字符串

 

 

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

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

相关文章

osg osgQt模块 基于 QGLWidget 源码分析

osgQt基于QGLWidget实现了在Qt窗口内OSG渲染操作。Qt以其开源、跨平台、方便快捷、现代化的界面风格等优点,已经成为了目前桌面版CAD/CAE/CAM等软件开发的首选组件。因此,非常有必要在OSG的基础之上,研究Qt桌面系统内集成OSG渲染功能的相关技…

Linux查看机器内存空间

执行 fdisk命令查看磁盘空间 fdisk -l更多方法参考: Linux检查磁盘空间

一种工业机器人绝对精度的提升方法

摘要:一种新的校准方法,使用动作捕捉作为测量工具,利用ELM神经网络作为非几何误差源补偿,提升工业机器人的绝对精度。 工业机器人的绝对精度是评估其综合性能的重要指标之一。然而,由于机器人受到多种因素的影响&#…

概率论的学习和整理19:条件概率我知道,但什么是条件期望?---用来解决递归问题(草稿)

目录 1 目标问题: 什么是条件期望? 条件期望有什么用? 2 条件期望,全期望公式 3 条件期望,全期望公式 和 条件概率,全概率公式的区别和联系 3.1 公式如下 3.2 区别和联系 3.3 概率和随机过程 4 有什…

8年软件测试工程师感悟 —— 写给还在迷茫中的朋友

去年还在全网声讨互联网企业996呢,今年突然没声音了,也不用讨论在哪个路灯上吊死互联网资本家了,因为都被裁了。 继教育培训领域大幅度裁员之后,大厂裁员消息也开始陆续传出,百度AIG,MEG多条业务线进行精简&#xff0…

线程系列 3 - 关于 CompletableFuture

线程系列3-关于 CompletableFuture 1、从 Future 接口说起2、CompletableFuture 对 Future 的改进2.1、CompletionStage 接口类2.2、runAsync 和 supplyAsync 创建子任务2.3、 whenComplete 和 exceptionally 异步任务回调钩子2.4、调用 handle() 方法统一处理异常和结果2.5、异…

重温黑盒、白盒与灰盒测试方法

黑盒、白盒和灰盒测试方法是软件测试中常用的测试策略,用于评估系统的功能和质量。 对于黑盒、白盒与灰盒测试方法的理解,几年前我在某乎做过一个概念性的回答,当时提问者询问:如何跟非技术人员解释黑盒、白盒、灰盒测试的区别&a…

UG\NX二次开发 使用exception类,异常处理的方法

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介 异常处理是一种编程中常见的错误处理机制,它允许程序在遇到错误或异常情况时优雅地处理。在C++中,异常类是一种重要的异常处理工具。 当程序发生错误或异常时,我们可以使用excepti…

查看maven包依赖关系,一行命令搞定。

1:以logback-classic包为例,在命令端运行,下面命令 mvn dependency:tree -Dincludesch.qos.logback:logback-classic 2.会出现以下日志,就可以清楚的知道这个jar包,是在谁的下面。

python 批量下载图片(协程)

要下载的图片网站 1、总共多少页,得到每页的 url 列表 2、每页的图片详情的 ulr 列表(因为该高清大图在图片详情页,因此需要去图片详情页拿图片的url) ​​​​​​​ 3、进入图片详情页,获取到图片url 然后下载。 完整代码如下&…

玩转代码|详细盘点JavaScript 数据类型

目录 什么是JavaScript JavaScript 拥有动态类型 JavaScript 字符串 JavaScript 数字 JavaScript 布尔 JavaScript 数组 JavaScript 对象 Undefined 和 Null JS 中如何判断 undefined JS 中如何判断 null 声明变量类型 什么是JavaScript JavaScript(简称…

“nacos is starting with cluster”之nacos启动报错问题

下载并解压nacos后,通过点击startup.cmd启动nacos,出现nacos is starting with cluster的错误,导致nacos未能启动成功。 这是因为,通过startup.cmd命令启动nacos,默认是以集群的方式进行启动的,我们可以改…

为3.7亿用户提供优质服务的微众银行,如何保障应用安全、及时上线

微众银行成立于2014年,是国内首家数字银行。作为银行业改革创新的产物,开业八年多来,微众银行积极把握数字经济时代发展新机遇,运用科技手段为小微企业及普罗大众提供特色化、差异化的优质金融服务,在以数字普惠金融服…

地下供水管漏水监测-供水管道漏水监测设备

地下供水管道作为城市供水系统的重要组成部分,承载着为居民和企业提供清洁饮用水的重要使命。然而,由于管道老化、施工质量、外力损伤等因素,地下供水管道泄漏问题时有发生,这不仅造成了宝贵的水资源浪费,还会导致供水…

流程编排及可视化

写在前面 这里只介绍liteflow的简单基础使用以及作者对liteflow进行可视化扩展的相关阐述 一、背景及意义 背景:对于拥有复杂业务逻辑的系统承载着核心业务逻辑,这些核心业务逻辑涉及内部逻辑运算,缓存操作,持久化操作&#xf…

LiveQing视频点播RTMP推流直播功能-点播拉转在线资源拉转转推到鉴权直播间云端录像集中录像存储

LiveQing点播拉转在线资源拉转转推到鉴权直播间云端录像集中录像存储 1、基本功能2、拉转直播2.1、点播资源拉转2.2、在线资源拉转2.3、服务器本地文件拉转 3、拉转直播如何录像?4、RTMP推流视频直播和点播流媒体服务 1、基本功能 LiveQing RTMP直播点播流媒体服务…

Electron运行报错: Failed to fetch extension, trying ...

Script: "electron:serve": "vue-cli-service electron:serve", 运行 npm run electron:serve 时报错: 解决方法: 检查你的electron配置文件也就是 vue.config.js 中的 mian 的文件 注释其中关于开发工具安装的部分:…

搭建zyplayer-doc个人WIKI文档管理工具,问题记录及简单使用

目录 项目简介各模块介绍项目部署准备工作修改配置及数据库初始化 编译部署编译后文件前后端在同一个部署包当中(无需单独部署前端) 环境部署目录规划启动脚本编写登录 部署问题记录错误: 找不到或无法加载主类Failed to instantiate [javax.sql.DataSou…

Linux--标记位:flag

我们知道&#xff0c;标记位赋予的值不同&#xff0c;就会生成不同的选项。那么如何给一个变量的位置赋予多个值呢&#xff1f; int整型有32个比特位&#xff0c;故我们可以通过改变位的方式改变值的大小 示例&#xff1a; #include <stdio.h> #include <unistd.h&…

Pandas数据分析库详解

概要 Pandas是一个基于 NumPy 的非常强大的开源数据处理库&#xff0c;它提供了高效、灵活和丰富的数据结构和数据分析工具&#xff0c;当涉及到数据分析和处理时&#xff0c;使得数据清洗、转换、分析和可视化变得更加简单和高效。本文中&#xff0c;我们将学习如何使用Panda…