常用API学习03(Java)

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()。

接下来逐个介绍方法:

java 复制代码
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)从指定数组的指定下标开始,将指定个数字符转换为字符串。

java 复制代码
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(),按字典顺序比较两个字符串,转化为字符数组后,会进行逐位比较,如果同一个位置上的字符不一致,返回两个字符之差,如果每一个都一致,但是其中一个字符串先遍历完成,则返回两个字符串的长度之差。

java 复制代码
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));
    }
}

运行结果:

java 复制代码
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,如果本就为空,使用这个方法去判断字符串是否为空就会出现报错。

java 复制代码
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编码方法把字节数组转换为字符串,也能指定范围。

java 复制代码
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);

    }
}

运行结果:

java 复制代码
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(),是掐头去尾,去掉字符串的空白字符和尾部空格,字符串中间的空格不管。

java 复制代码
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是将这个字符数组转化为字符串

相关推荐
quaer2 分钟前
Open-Sora全面开源?
开发语言·算法·机器学习·matlab·矩阵
sky丶Mamba5 分钟前
Spring Boot中获取application.yml中属性的几种方式
java·spring boot·后端
hakesashou6 分钟前
python如何比较字符串
linux·开发语言·python
Ljubim.te14 分钟前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
yufei-coder31 分钟前
C#基础语法
开发语言·c#·.net
数据龙傲天31 分钟前
1688商品API接口:电商数据自动化的新引擎
java·大数据·sql·mysql
长天一色31 分钟前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
yngsqq36 分钟前
031集——文本文件按空格分行——C#学习笔记
笔记·学习·c#
_.Switch43 分钟前
Python机器学习模型的部署与维护:版本管理、监控与更新策略
开发语言·人工智能·python·算法·机器学习
醉颜凉1 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统