java中String类的学习

java中String类学习

1、String类的定义

public final class String

extends Object

implements Serializable, Comparable<String>, CharSequence

实现了Serializable说明String类具备了可序列化的能力(将对象写进磁盘文件的能力)

实现了Comparable说明String类的对象具备比较大小的能力

2、 String类的属性

3、String类的构造方法很多

String类的很多构造方法,由于参数不同或者参数的个数不同,或者参数的类型不同而构成了方法的重载

 3、String类的方法

String类的方法有很多很多

String ()

  String (String str)

  String (char [] ch,int start,int length)

  String (byte[] b,int start,int length)

  String (char [] ch)

  String (byte [] b)

String的内存地址比较 

package com.wyq.test;

public class TestString {
	public static void main(String[] args) {
		String str1 = null; // 在棧內存中声明
		String str2 = new String(); // 在堆內存中開孔將,同時將地址賦值給了str2
		String str3 = "";// 在常量池中
		System.out.println("str2.equals(ste3)" + (str2.equals(str3)));
		System.out.println("str2==str3" + (str2 == str3));// 两者的地址不同,因为str3是在常量池,而str2是有在堆内存中新开辟空间
		String str4 = new String("hello");// 在堆内存中开空间了,同时指向了常量池
		String str5 = "hello"; // 直接指向了常量池
		System.out.println(str4 == str5);// 不行等,因为str4在堆内存中开空间了,而str5没有开空间,直接指向常量池
		System.out.println("str3 == str1" + (str3 == str1));//
		String str6 = str5 + "";
		String str7 = "h" + "e" + "l" + "lo";
		System.out.println("str5 == str7" + (str5 == str7));
		System.out.println("str5 == str6" + (str5 == str6));// 不相等,因为str6的右侧参与了运算
		System.out.println("str4 == str5" + (str4 == str5));
		/**
		 * 什么情况下Sring会在堆内存中开空间 (1)等号右侧使用了new关键字 (2)等号右侧参与了运算
		 */
		Integer i = 123;
		String s = "123";
		System.out.println("i.equals(s)" + (i.equals(s)));
	}
}

 

 String的构造方法比较

package com.wyq.test;

public class TestStr {
	public static void main(String[] args) {
		String str = "abc";
		char[] c = { 'a', 'b', 'c' };
		String str2 = new String(c);
		String str3 = new String(c, 1, 2);// 索引为1的位置,长度为2个
		System.out.println(str3);
		System.out.println("str == str2" + (str == str2));
		System.out.println("str.equals(str2)" + (str.equals(str)));
		byte[] b = { 97, 98, 99, 100 };
		String str4 = new String(b);
		System.out.println(str4);
		System.out.println(new String(b, 2, 2));// 在b數組中,從索引為2的位置開始取,一共取2個

	}

}

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/92694262