JAVA之String对象

什么是String对象

  通俗点理解,它就是一个字符串对象。

特点

  1. 字符串的内容永不可变。
  2. 正是因为字符串不可改变,所以字符串是可以共享使用的(常量池)
  3. 字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组。

如何创建

创建方法(3 + 1)解释
public String()创建一个空白字符串,不含有任何内容
public String(char[] array)根据字符数组的内容,来创建对应的字符串
public String(byte[] array)根据字节数组的内容。来创建对应的字符串
----------------直接创建

创建对象实例

public class Main {

	public static void main(String[] args) {
		
		// 直接创建
		String str1 = "abc"; 
		System.out.println(str1);
		
		// 空参创建
		String str2 = new String();
		System.out.println(str2);
		
		// 字符数组带参创建
		char[] x = {'a','b','c'};
		String str3 = new String(x);
		System.out.println(str3);
		
		// 字节数组带参创建
		byte[] y = {97,98,99};
		String str4 = new String(y);
		System.out.println(str4);	
	}
}

运行结果:
abc

abc
abc

常用方法

返回值方法解释
booleanequals(Object anObject)比较两个字符串内容
intlength()返回此字符串的长度
Stringconcat(String str)将指定的字符串连接到该字符串的末尾
charcharAt(int index)返回 char指定索引处的值
intindexOf(String str)返回指定子字符串第一次出现的字符串内的索引
Stringsubstring(int beginIndex)返回一个字符串,该字符串是此字符串的子字符串
Stringsubstring(int beginIndex, int endIndex)返回一个字符串,该字符串是此字符串的子字符串
char[ ]toCharArray()将此字符串转换为新的字符数组
byte[ ]getBytes()使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中
Stringreplace(char oldChar, char newChar)返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar
String[ ]split(String regex)将此字符串分割为给定的 regular expression的匹配

关于equals方法的注意事项

  1. 任何对象都能用object进行接收。
  2. equals方法具有对称性。也就是a.equals(b)和b. equals(a)效果一样。
  3. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
    推荐,“abc”.equals(str) 不推荐: str. equals(“abc”)
    原因:如果str是空值(null) 和 abc 进行内容比较就会报:java.lang.NulIPointerException 错误

使用方法实例


public class Main {

	public static void main(String[] args) {

		// 测试长度
		String str = "abc";
		System.out.println(str.length());

		// 测试连接
		String str1 = str.concat("def");
		System.out.println(str1);

		// 测试索引
		for (int i = 0; i < str.length(); i++) {
			System.out.print(str.charAt(i));
		}
		System.out.println();

		// 测试子字符串索引
		int a = str1.indexOf("def");
		System.out.println(a);

		// 返回指定区域的一个子字符串
		String str2 = str1.substring(1, 4);
		System.out.println(str2);

		// 将字符串转化为字符数组
		char[] b = str1.toCharArray();
		System.out.println(b);

		// 将字符串转化为字节数组
		byte[] c = str1.getBytes();
		for (int i = 0; i < c.length; i++)
			System.out.print(c[i] + " ");
		System.out.println();

		// 替换字符串
		String str3 = str1.replace('a', '%');
		System.out.println(str3);
		
		// 利用分割
		String str4 = "hello,world,java";
		String[] str5 = str4.split(",");
		for (int i = 0; i < str5.length; i++) {
			System.out.print(str5[i] + " ");
		}

	}

}

运行结果:
3
abcdef
abc
3
bcd
abcdef
97 98 99 100 101 102
%bcdef
hello world java

特殊地

  字符串对象是拥有常量池的。对于直接创建的字符串对象来说,是先会堆里面寻找,常量池里面是否有该字符串,再考虑是否再开辟一段空间进行分配。下面用代码来解释:

public class Main {

	public static void main(String[] args) {

		String a = "abc";
		String b = "abc";
		String c = new String("abc");
		String d = new String("abc");
		System.out.println(a == b);
		System.out.println(b == c);
		System.out.println(c == d);
	}

}

运行结果:
true
false
false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值