String类

一、概述

String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;
Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现;
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

二、创建string字符串

创建string有两种方式String str1 = "hello"String str2 = new String("hello")

   public static void test1() {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = new String(str1);
        String str4 = "hel" + "lo";
        System.out.println(str1 == str2);   //false
        System.out.println(str1 == str3);   //false
        System.out.println(str2 == str3);   //false
        System.out.println(str1 == str4);   //true

        String strA = "hello";
        String strB = "he";
        String strC = strB + "llo";
        System.out.println(strA == strC);   //false;

		String s1 = "AB";
		String s2 = "AB";
		String s3 = new String("AB");
		System.out.println(s1 == s2);
		System.out.println(s1 == s3);
    }
  • 两种方式的比较
  1. 直接赋值String str1 = "hello":只开辟一块堆内存空间,并且会自动入池,不会产生垃圾。
  2. 使用String str2 = new String("hello"),会重新开辟一个内存空间,并且其中的字符串不会进入常量池;
  • 注意: new String("hello").intern() 的intern 方法是一个native方法,intern方法会从字符串常量池中查询当前字符串是否存在,如果存在,就直接返回当前字符串;如果不存在就会将当前字符串放入常量池中,之后再返回。
    在这里插入图片描述

三、string的常用api

1.根据字符获取位置

源码介绍

   public static void test2() {
        String str = "abcdefg";
        str.indexOf('a');                   //返回的是ch在字符串中第一次出现的位置。
        str.indexOf('a', 1);   //从fromIndex指定位置开始,获取ch在字符串中出现的位置。
        str.indexOf("gb");                  //返回的是str在字符串中第一次出现的位置。
        str.indexOf("gb", 1); //从fromIndex指定位置开始,获取str在字符串中出现的位置。
        str.lastIndexOf('g');           //获取最后一个

    }

2.字符串中是否包含某一个子串

  • 内部也是使用public int indexOf(String str, int fromIndex)方法判断的
String str = "abcdefg";
str.contains("11");

3.字符串开头和结尾

源码介绍

    str.startsWith("1");
    str.endsWith("1");

4.判断内容是否相同

源码介绍

       str.equalsIgnoreCase("abcdefg");    //比较内容,忽略大小写
        str.equals("1");    

5.字符转换

String[] split = "abcde,abce".split(",");		//字符串切割

https://www.jianshu.com/p/6c65c25c258b
https://blog.csdn.net/ifwinds/article/details/80849184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值