java中常用的API之二

  1. String
package com.itheima.CommonAPI;
/*
*字符串的特点
* 1.字符串的内容用不可变
* 2.正因为字符串不可改变所以字符串是可以共享使用的
* 3.字符串效果上相当于char[]字符型数组,底层实际上是byte[]字节数组
*
* 创建字符串的常见的3+1中方式
* 三种构造方法
* public String():创建一个空白字符串,不含有任何内容
* public String(char[] array) 根据字符数组的内容,来创建相应的字符串
* public String(byte[] array) 根据字节数组的内容,来创建相应的字符串
* 一种直接创建
* String str2 = "Hello world"
* 注意:直接写上双引号,就是字符串对象
* */

/*
* 字符串常量池的注意事项
* 双引号直接写的字符串在常量池中,常量池是在堆中的,新new的不再池中
* ==对于引用类型来说比较的是地址值,对于基本类型来说比较的是数值大小
* */

/*
* ==是进行地址值的比较,如果确实需要字符串的内容比较,可以使用两个方法
* public boolean equals(Object obj),参数可以是任何对象,只有参数是一个字符串并且内容相同的时候才会给一个true
* public boolean equalsIgnoreCase(Object obj),忽略大小写进行比较
* */

public class StringTest {
    public static void main(String[] args) {
        //使用空参构造
        String str1 = new String();
        System.out.println(str1);
        //使用字符数组
        char[] charArray = {'A','B','C'};
        String str2  = new String(charArray);
        System.out.println(str2);
        //使用字节数组
        byte[] charArray1 = {97,98,99};
        String str3 = new String(charArray1);
        System.out.println(str3);

        //进行equals的使用判断
        String str4 = "Hello";
        String str5 = "Hello";
        char[] charArray2 = {'H','e','l','l','o'};
        String str6 = new String(charArray2);
        System.out.println(str4.equals(str5)); //true
        System.out.println(str4.equals(str6));//true
        System.out.println(str5.equals(str6));//true
        //进行==的判断
        System.out.println(str4==str5);//true
        System.out.println(str4==str6);//false     下边附上内存分布图
        System.out.println(str6==str5);//false

        //注意equals()具有对称性,也就是说a.equals(b)和b.equals(a)是一样的
        //但是遇到一个常量一个变量的时候我们推荐使用常量.equals(变量),常量在前面
        String str7 = "hello";
        //这是为什么呢,如果说str7是一个null值,那么我们推荐的写法中出现的是false
        //但是我们不推荐的写法中会出现空指针异常
        System.out.println("hello".equals(str7));//推荐使用这种
        System.out.println(str7.equals("hello"));//不推荐
        String str9 =  "Java";
        String str10 = "java";
        System.out.println(str9.equals(str10));//严格区分大小写
        System.out.println(str9.equalsIgnoreCase(str10));//不区分大小写


        /*
        * String中常用的方法
        * 1.public int length() 获得当前字符串的字符个数,即字符串的长度
        * 2.public String concat(String str)  将当前字符串和参数字符串拼接成为返回值新的字符串
        * 3.public char charAt(int index) 获取指定索引位置的单个字符
        * 4.public int indexOf(String str) 查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值
        *
        * */

        //连接字符串
        String str11 = "Hello";
        String str12 = "World";//字符串是常量,每String一个都是一个新的常量比如说str13
        String str13 = str11.concat(str12);
        System.out.println(str13);
        //获取参数位置所在的字符
        char c = str11.charAt(2);
        System.out.println(c);
        //查找参数字符串
        int or = str12.indexOf("or");
        System.out.println(or);

        /*
        * 截取字符串
        * public String substring(int index),截取从参数到末尾,返回新的字符串
        * public String substring(int begin,int end) 返回从begin到end之间的字符串,左闭右开
        * */
        String str14 = "Hello";
        String substring = str14.substring(2);
        System.out.println(substring);
        String substring1 = str14.substring(1, 3);
        System.out.println(substring1);

        //字符串的内容变了吗,没有变呀,str8保存的实际上是地址值,改变的是地址值,但是字符串的内容没有变化
        //右边是两个字符串,内容并没有改变的
        String str8 = "asd";
        System.out.println(str8); //asd
        str8 = "fgh";
        System.out.println(str8);//fgh

        /*
        * 字符串转换相关的方法
        * 1.public char[] toCharArray() 将当前字符串转换成字符数组作为返回值
        * 2.public byte[] getBytes() 获得当前字符串底层的字节数组
        * 3.public String replace(CharSequence oldString,CharSequence newString);
        * 将所有出现的老字符串替换成新的字符串,返回替换之后的新字符串
        * */

        String str15 = "Hello";
        char[] chars = str15.toCharArray();
        System.out.println(chars[0]);
        byte[] bytes = str15.getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
        String str16 = "how do you do";
        String o = str16.replace("o", "*");
        System.out.println(str16);
        System.out.println(o);

        /*分割字符串的方法
        * public String[] split(String regex) 按照参数的规则,将字符串切分成若干个字符串
        *注意!!!!如果是按照英文句号来切分的话".",必须要写成"\\."才可以
        *
        * */

        String str17 = "aaa,bbb,ccc";
        String[] split = str17.split(",");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }

    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值