java语言进阶之常用的API之String上篇

常见API之String
String类代表字符串。java中的所有字符串字面值都作为此类的实例实现。字符串是常量,他们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可共享。String str = "abc"等价于char data[]={‘a’,‘b’,‘c’};String str = new String(data);
1、字符串的内容用不可变;2、正是因为字符串永不可变,所以字符串是可以共享使用的;3、字符串效果上相当于char[]字符数组,但底层原理是byte[]字节数组。
一、创建字符串的常见3+1种方式。
public String();创建一个空白字符串,不含有任何内容;
public String(char[] array);根据字符数组的内容,来创建对应的字符串
public String(byte[] array);根据字节数组的内容,来创建对应的字符串。
第四种直接创建。
package api_demo;

public class demo_string {
    public static void main(String[] args) {
        // 1、空参
        String str= new String();
        System.out.println("第一种:"+str);
        // 2、字符数组
        char[] arr={'a','b','c'};
        String str2=new String(arr);
        System.out.println("第二种:"+str2);
        // 3、字节数组
        byte[] bytearr = {97,98,99};
        String str3 = new String(bytearr);
        System.out.println("第三种:"+str3);
        // 直接创建
        String str4 = "abc";
        System.out.println("第si种:"+str4);
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=11225:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.demo_string
第一种:
第二种:abc
第三种:abc
第si种:abc

Process finished with exit code 0
二、字符串的常量池
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量中。对于基本类型来说,==是进行数值的比较。对于引用类型来说,==是进行地址值的比价。

在这里插入图片描述

package api_demo;

public class demo_string {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        char[] arr={'a','b','c'};
        String str3=new String(arr);
        // 进行字符串比较
        System.out.println(str1==str2);
        System.out.println(str1==str3);
        System.out.println(str2==str3);
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=11588:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.demo_string
true
false
false

Process finished with exit code 0
注意:1、对于引用类型来说,==进行的是地址的比较;2、双引号直接写的字符串在常量池当中,new的不在常量池当中。
三、字符串的常用方法——比较
package api_demo;
// == 是地址比较
// 内容比较:
// public boolean equals(Object obj),参数可以是任何对象,只有参数是一个字符串且内容相同
// 才会返回true。任何对象都可以用Object进行接收。
public class demo_string {
    public static void main(String[] args) {
        String str1="abc";
        String str2="abc";
        char[] arr={'a','b','c'};
        String str3=new String(arr);

        System.out.println(str1.equals(str2));
        System.out.println(str2.equals(str3));
        System.out.println(str3.equals("abc"));
        System.out.println("abc".equals(str1));
    }
}

```java
"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=13304:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.demo_string
true
true
true
true

Process finished with exit code 0
注意事项:equals方法具有对称性,a.equals(b)和b.equals(a)效果一样。推荐“abc”.equals(str),不推荐str.equals(“aabc”).
String str5=null;
        System.out.println("abc".equals(str5));// 推荐,返回false
        System.out.println(str5.equals("abc"));// 不推荐,报错,空指针异常。
public boolean equalsIgnoreCase(String str);不区分大小写
package api_demo;

public class demo_string {
    public static void main(String[] args) {
        String str1="abc";
        String str2="Abc";
        System.out.println(str1.equalsIgnoreCase(str2));
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=13980:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.demo_string
true

Process finished with exit code 0
三、字符串的常用方法——获取相关方法常用
1、public int length();获取字符串长度;2、public String concat(String str);拼接;3、public char charAt(int index);获取指定索引位置的单个字符;4、public int indexOf(String str);查找参数字符串在本字符串首次出现的位置
package api_demo;
/*
* 1、public int length();获取字符串长度
* 2、public String concat(String str);拼接
* 3、public char charAt(int index);获取指定索引位置的单个字符
* 4、public int indexOf(String str);查找参数字符串在本字符串首次出现的位置
*
* */
public class demo_string {
    public static void main(String[] args) {
        // 获取长度
        int length = "asflajfasljfkaslfa123kjl".length();
        System.out.println("length长度为"+length);

        // 拼接
        String str1 = "Hello";
        String str2 = "World";
        String str3 = str1.concat(str2);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);

        //获取指定索引位置的值
        System.out.println(str1.charAt(0));

        // 查找位置
        System.out.println(str1.indexOf("o"));
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=14912:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.demo_string
length长度为24
Hello
World
HelloWorld
H
4

Process finished with exit code 0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值