Java中object类的子类String-StringBuilde-StringBuffer

导读:本篇文章讲解 Java中object类的子类String-StringBuilde-StringBuffer,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、Java中的字符串操作类

1.String类

1.String类如何创建对象,有哪些常用方法?
        String类—不可变的字符串操作类
        String类—-java的jdk提供好的开发类。【java.lang包不用import】
        String类是使用final修饰符修饰的,说明它没有子类。不可被继承。
        String类创建对象–构造方法
        1.String()–创建一个空字符串对象
        2.String(byte[] byte , int offset , int length)—字节数组转换成字符串
        3.String(char[] value , int offset , int count)—字符数组转换成字符串
        4.String(String orginal)——-字符串常量创建字符串对象
        —————————————————————————————–
        String(StringBuffer buffer)—–将StringBuffer转换成字符串
        String(StringBuilder builder)–将StringBuilder转换成字符串

例如:

package com.wangxing.test1;
public class StringClass {

	public static void main(String[] args) {
		//1.String()--创建一个空字符串对象  
		String str1=new String();
		//2.String(byte[] bytes, int offset, int length)
		//--字节数组转换成字符串
		//int offset---表示数组的起始位置
		//int length---表示数组的元素的个数
		byte  bytearr[]={97,98,99,100};
		String str3=new String(bytearr,0,bytearr.length);
		System.out.println("str3=="+str3);
		//3.String(char[] value, int offset, int count) 
		//--字符数组转换成字符串
		//int offset---表示数组的起始位置
		//int count---表示数组的元素的个数
		char chararr[]={'a','b','c','d'};
		String str4=new String(chararr,0,chararr.length);
		System.out.println("str4=="+str4);
		//4.String(String original)--字符串常量创建字符串对象
		String str5=new String("fxt");
		//可以简写为
		String str6="fxt";
		
		//面试题:String  s1=new String("abc");创建了几个对象?
		String  s1=new String("abc");
		//答案:两个对象,1.是储存在常量池中的abc
				   //2.是String对象是s1
	}
}

2.String的常用方法
       1.char    charAt(int index) 从原始字符串中得到指定位置的字符元素。
        2.String concat(String str)将指定的字符串连接到该字符串的末尾。
        3.boolean contains(CharSequence s)判断指定的字符串数据是否在原始字符串中存在
        4.boolean endsWith(String suffix)测试此字符串是否以指定的后缀结尾。 
        5.boolean startsWith(String prefix)测试此字符串是否以指定的前缀开头。
        6.byte[] getBytes() 将字符串通过默认的字符编码转换成字节数组
           byte[] getBytes(String charsetName)将字符串通过指定的字符编码转换成字节数组 
        7.int indexOf(String str) 返回指定子字符串第一次出现在字符串内的索引位置
        8.lastIndexOf(String str)返回指定子字符串最后一次出现的字符串中的索引。
        9.boolean isEmpty()判断字符串是否为空串,此方法为true时,字符串长度一定为0
        10.int length() 返回此字符串的长度。
        11.boolean matches(String regex) 判断字符串数据是否符合正则表达式
        12.String replace(CharSequence old, CharSequence new) 将与字面目标序列匹配的字
              符串的每个子字符串替换为指定的字面替换序列
        13.String[] split(String regex)通过指定的符号将字符串拆分成一个字符串数组
        14.String substring(int beginIndex)截取从指定的开始位置到字符串结尾的一个子字符串
             String substring(int beginIndex, int endIndex) 截取从指定的开始位置到指定的结束位置的一个子字符串
        15.char[]  toCharArray() 将此字符串转换为新的字符数组
        16.String toLowerCase() 大写转小写
        17.toUpperCase() 小写转大写
        18.String trim()去除原始字符串的两头空格

例如:

package com.wangxing.test1;

public class StringClassTow {
	public static void main(String args[]){
		
		//注意string是不可变字符串,在使用方法后不会改变初始值,要将得到的值重新复制才会是新的
		char cahrarr[]={'a','b','c','d'};
		String str1=new String(cahrarr,0,cahrarr.length);
		//1.char  charAt(int index) 从原始字符串中得到指定位置的字符元素。
		System.out.println(str1.charAt(1)); 
		//2.String concat(String str)将指定的字符串连接到该字符串的末尾。
		String str=str1.concat("e");
		System.out.println(str1.concat("str")); 
		//3.boolean contains(CharSequence s)判断指定的字符串数据是否在原始字符串中存在
		System.out.println(str1.contains("s")); //false
		//4.boolean endsWith(String suffix)测试此字符串是否以指定的后缀结尾。 
		//5.boolean startsWith(String prefix)测试此字符串是否以指定的前缀开头。
		System.out.println(str1.startsWith("s"));//false
		System.out.println(str1.endsWith("e"));//false
		System.out.println(str.endsWith("e"));//true
		
		String str3=new String("hello,world");
		//7.int indexOf(String str) 返回指定子字符串第一次出现在字符串内的索引位置
		//8.lastIndexOf(String str)返回指定子字符串最后一次出现的字符串中的索引。
		System.out.println(str3.indexOf("llo"));//2
		System.out.println(str3.lastIndexOf("llo"));//2
		System.out.println(str3.lastIndexOf("l"));//9
		//10.int length() 返回此字符串的长度。
		System.out.println(str3.length()); //11
		//11.boolean matches(String regex) 判断字符串数据是否符合正则表达式
		//12.String replace(CharSequence old, CharSequence new) 将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列
		System.out.println(str3.replace("world", "fxt01"));
		//13.String[] split(String regex)通过指定的符号将字符串拆分成一个字符串数组
		String strarr[]=str3.split(",");
		System.out.println(strarr[0]);
		System.out.println(strarr[1]);
		//14.String substring(int beginIndex)截取从指定的开始位置到字符串结尾的一个子字符串
		//   String substring(int beginIndex, int endIndex) 截取从指定的开始位置到指定的结束位置的一个子字符串
		System.out.println(str3.substring(6));//world
		System.out.println(str3.substring(0,5));//hello
		//16.String toLowerCase() 大写转小写
		//17.toUpperCase() 小写转大写
		System.out.println(str3.toLowerCase());
		System.out.println(str3.toUpperCase());
		//18.String trim()去除原始字符串的两头空格
		String info="  fxt  ";
		System.out.println(info.trim());
		
		//15.char[]  toCharArray() 将此字符串转换为新的字符数组
		char chararr2[]= str1.toCharArray();
		for( char value:chararr2){
			if(value==99){
				System.out.println(value);
			}
		}
		
		//6.byte[] getBytes() 将字符串通过默认的字符编码转换成字节数组
		//	byte[] getBytes(String charsetName)将字符串通过指定的字符编码转换成字节数组 
			byte bytearr[]=str1.getBytes();
			for( byte arrvalue:bytearr){
				if(arrvalue==99){
					System.out.println(arrvalue);
				}
			}
		
	}
}

3.字符串与基本类型的转换
              通过基本类型提供的封装类的parseXXX(String  str)可以将字符串变为基本数据
              int parseInt(String  str)  / double  parseDoule(String  str)
              boolean parseBoolean(String  str)…….
             上面的这一组parseXXX(String  str)方法只能被基本类型的封装类调用。
             但是只有基本数据类型才有自己对应的封装类,封装类—基本数据类型对应的复合数据类型  。
        例如:
    double  dou=12.5;  // double类型的变量,没有可供使用的方法
    Double  dou=new Double(12.5); //Double的对象,有可供使用的变量和方法。
    Double就是double的封装类。

基本类型[变量]  封装类[对象]
byte       Byte   
 short      short    
  int  Integer
 long      Long
  float       Float
 double     Double
 char Character
boolean Boolean

        ​        自动装箱—将基本数据类型转换成对应的封装类类型
                        1.封装类的构造方法
                        2.将基本数据类型变量/数据值直接赋值给对应的封装类变量
                自动拆箱–将封装类类型转成基本数据类型【直接赋值】
        例如:

package com.wangxing.test1;

public class StringClassThree {
	public static void main(String args[]){
		
		//parseXXX(String  str)方法只能被基本类型的封装类调用。
		//只有基本数据类型才有自己对应的封装类。
		//封装类---基本数据类型对应的复合数据类型
		//自动装箱---将基本数据类型转换成对应的封装类类型
			//1.封装类的构造方法
		Integer int1=new Integer(1001);
		int a=1002;
		Integer int2=new Integer(a);
		System.out.println(int2);//1002
			//2.将基本数据类型变量/数据值直接赋值给对应的封装类变量
		Integer int01=001;
		int b=002;
		Integer int02=b;
		System.out.println(int02);
		//自动拆箱--将封装类类型转成基本数据类型【直接赋值】
		Double douf=new Double(12.0);
		double dou=douf;
	}
}

        1.String 转换成基本类型
        通过基本数据类型的封装类的静态方法parseXXX(String  str)将字符串转换成基本类型

package com.wangxing.test1;
public class StringClassThree {
	public static void main(String args[]){
		

		//1.String 转换成基本类型
		//通过基本数据类型的封装类的静态方法parseXXX(String  str)将字符串转换成基本类型
		String  doublestr="12.5";
		double dou1=Double.parseDouble(doublestr);
		System.out.println(dou1+1);
		
		String intstr="1001";
		int int3=Integer.parseInt(intstr);
		
		String boolstr="true";
		boolean bool= Boolean.parseBoolean(boolstr);
		if(bool==true){
			System.out.println("基本类型");
		}else{
			System.out.println("字符串类型");
		}
	}
}

        2.基本类型转换成String 
        将基本数据类型转换成String【static String valueOf(基本数据类型的数据值/变量)】

package com.wangxing.test1;
public class StringClassThree {
	public static void main(String args[]){
		
		//2.将基本数据类型转换成String【static String valueOf(基本数据类型的数据值/变量)】
		int num=1001;
		String str=String.valueOf(num);
		System.out.println(str.length());
		
		boolean bool1=true;
		String str2=String.valueOf(bool1);
		System.out.println(str2.length());
	}
}

4.String类与字节数组或者字符数组之间的相互转换
        String类与字节数组
              
 1.String类转换成字节数组—-
                       String类的”byte[] getBytes()”/”byte[] getBytes(String charsetName)” 
                2.字节数组转换String类型—-
                       String类的构造方法String(byte[] bytes, int offset, int length)

         String类与字符数组
        1.String类转换成字符数组—-
            String类的”char[]  toCharArray()”
        2.字符数组转换String类型—-
             String类的构造方法”String(char[] value, int offset, int count)”

例如:

package com.wangxing.test1;
public class testClass {

	public static void main(String args[]){
		//String类与字节数组
		//1.String类转换成字节数组----
		//String类的”byte[] getBytes()”/”byte[] getBytes(String charsetName)” 
		String str1="abcde";
		byte bytearr[]=str1.getBytes();
		for(byte arrvalue :bytearr){
			System.out.println("arrvalue=="+arrvalue);
		}
		//2.字节数组转换String类型----
		//String类的构造方法String(byte[] bytes, int offset, int length)
		byte arr1[]={97,98,99,100};
		String str2=new String(arr1,0,arr1.length);
		System.out.println(str2.length());
		
		//String类与字符数组
		//1.String类转换成字符数组----
		//String类的”char[]  toCharArray()”
		String str3="abcde";
		char chararr[]=str3.toCharArray();
		for(char value:chararr){
			System.out.println("charvalue=="+value);
		}
		//2.字符数组转换String类型----
		//String类的构造方法”String(char[] value, int offset, int count)”
		char chararr1[]={'a','b','c'};
		String str4=new String(chararr1,0,chararr1.length);
		System.out.println(str4.length());
	}
}

Java中object类的子类String-StringBuilde-StringBuffer

 2.字符串操作类StringBuilder、StringBuffer

1. StringBuilder类    
        StringBuilder— 一个可变的字符序列

         StringBuilder的构造方法
        StringBuilder() 构造一个初始容量为16个字符的空StringBuilder对象。 
        StringBuilder(CharSequence seq)通过其他的StringBuilder对象创建一个新的StringBuilder对象。
         StringBuilder(int capacity) 构造一个由 capacity参数指定的初始容量空间StringBuilder对象。
          StringBuilder(String str) 构造一个初始化为指定字符串内容的StringBuilder对象。
例如:

package com.wagnxing.test2;
public class StringBuilderTest {
	
	public static void main(String[] args) {
		
		//StringBuilder--- 一个可变的字符序列
		//StringBuilder() 构造一个初始容量为16个字符的空StringBuilder对象。 
		StringBuilder sbu1=new StringBuilder();
		//StringBuilder(CharSequence seq)通过其他的StringBuilder对象创建一个新的StringBuilder对象
		StringBuilder sbu2=new StringBuilder("holle,world");
		//StringBuilder(int capacity) 构造一个由 capacity参数指定的初始容量空间StringBuilder对象
		StringBuilder sbu3=new StringBuilder(22);
		//StringBuilder(String str) 构造一个初始化为指定字符串内容的StringBuilder对象。 
		String str="hello,world";
		StringBuilder  sbu4=new StringBuilder(str);
	}
}

StringBuilder类的方法
int    capacity() 返回当前容量。 
char    charAt(int index) 返回 char在指定索引在这个字符值。
int    indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。 
int    lastIndexOf(String str) 返回指定子字符串最右边出现的字符串内的索引。
int    length() 返回长度(字符数)。 

StringBuilder    append(Object o) 将参数的字符串表示追加到序列中。 
StringBuilder    delete(int start, int end) 删除此序列的子字符串中的字符。 
StringBuilder    deleteCharAt(int index) 删除 char在这个序列中的指定位置。 
StringBuilder    insert(int offset, Object o) 将参数的字符串表示插入到此序列中指定的位置。
StringBuilder    reverse() 导致该字符序列被序列的相反代替。 
StringBuilder    replace(int start, int end, String str) 用指定的String中的字符替换此序列的子字符串中的 String 。

String    substring(int start) 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。 
String    substring(int start, int end) 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。 
String    toString() 返回表示此顺序中的数据的字符串。
例如:

package com.wagnxing.test2;
public class StringBuilderTest {
	
	public static void main(String[] args) {
		
		//StringBuilder--- 一个可变的字符序列
		//StringBuilder() 构造一个初始容量为16个字符的空StringBuilder对象。 
		StringBuilder sbu1=new StringBuilder();
		//StringBuilder(CharSequence seq)通过其他的StringBuilder对象创建一个新的StringBuilder对象
		StringBuilder sbu2=new StringBuilder("holle,world");
		//StringBuilder(int capacity) 构造一个由 capacity参数指定的初始容量空间StringBuilder对象
		StringBuilder sbu3=new StringBuilder(22);
		//StringBuilder(String str) 构造一个初始化为指定字符串内容的StringBuilder对象。 
		String str="hello,world";
		StringBuilder  sbu4=new StringBuilder(str);
		
		///int	capacity() 返回当前容量。 
		System.out.println(sbu1.capacity()); //16
		//StringBuilder	append(Object o) 将参数的字符串表示追加到序列中。 
		sbu1.append("123456789012345678");
		//StringBuilder容量扩展规则==当前容量*2+2
		System.out.println(sbu1.capacity());//34
		//char	charAt(int index) 返回 char在指定索引在这个字符值。
		System.out.println(sbu2.charAt(4));//e
		//int  indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。
		System.out.println(sbu2.indexOf("l"));//2 如果没有返回-1
		//int  lastIndexOf(String str) 返回指定子字符串最后出现的字符串内的索引。
		System.out.println(sbu2.lastIndexOf("l"));//9
		//int	length() 返回长度(字符数)。 
		System.out.println(sbu2.length());//11
		//StringBuilder	delete(int start, int end) 删除此序列的字符串中的字符。 
		//System.out.println(sbu1.delete(10,17 ));//12345678908不包括结尾
		//StringBuilder	deleteCharAt(int index) 删除 char在这个序列中的指定位置。 
		//System.out.println(sbu1.deleteCharAt(16));//12345678901234568
		//StringBuilder	insert(int offset, Object o) 将参数的字符串表示插入到此序列中指定的位置。
		//System.out.println(sbu2.insert(9,"10"));//holle,wor10ld
		//StringBuilder	reverse() 导致该字符序列被序列的相反代替。
		//System.out.println(sbu1.reverse());//876543210987654321
		//StringBuilder	replace(int start, int end, String str) 用指定的String中的字符替换此序列的子字符串中的 String 。
		//System.out.println(sbu2.replace(6, 11, "fxt"));//holle,fxt
		
		//String  substring(int start) 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。 
		//String	substring(int start, int end) 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。 
		//String	toString() 返回表示此顺序中的数据的字符串。
	}
}

StringBuilder与String的转换
       
 StringBuilder–》String  
                StringBuilder的toString();
                String的构造方法String(StringBuilder builder)
        String—》StringBuilder
                StringBuilder的构造方法
例如:

package com.wagnxing.test2;
public class StringBuilderTest {
	public static void main(String[] args) {

		StringBuilder sbu1=new StringBuilder();

		StringBuilder sbu2=new StringBuilder("holle,world");
		
		//StringBuilder与String的转换
		//StringBuilder--》String  
			//StringBuilder的toString();
		    String str1=sbu1.toString();
			//String的构造方法String(StringBuilder builder)
		    String str2=new String (sbu2);
		    
		//String-->StringBuilder
			//StringBuilder的构造方法
		    String str3=new String();
		    StringBuilder sbu5=new StringBuilder(str3);
	}
}

2.StringBuffer类
StringBuffer类与StringBuilder类相似
StringBuffer类的构造方法
StringBuffer() 构造一个初始容量为16个字符的空StringBuffer对象。 
StringBuffer(CharSequence seq) 通过其他的StringBuffer对象创建一个新的StringBuffer对象
StringBuffer(int capacity) 构造一个由 capacity参数指定的初始容量得空StringBuffer对象。
StringBuffer(String str) 构造一个初始化为指定字符串内容的StringBuffer对象。 
例如:

package com.wagnxing.test2;
public class StringBufferTest {
	public static void main(String args[]){
		
		///StringBuffer--可变的字符串
		//StringBuffer类的构造方法
		//StringBuffer() 构造一个初始容量为16个字符的空StringBuffer对象。 
		StringBuffer sbu1=new StringBuffer();
		//StringBuffer(CharSequence seq) 通过其他的StringBuffer对象创建一个新的StringBuffer对象
		StringBuffer sbu2=new StringBuffer("holle,world");
		//StringBuffer(int capacity) 构造一个由 capacity参数指定的初始容量得空StringBuffer对象。
		StringBuffer sbu3=new StringBuffer(22);
		//StringBuffer(String str) 构造一个初始化为指定字符串内容的StringBuffer对象。 
		String str="hello,world";
		StringBuffer  sbu4=new StringBuffer(str);
	}
}

StringBuffer类的方法
StringBuffer    append(Object o) 将参数的字符串表示追加到序列中。 
int    capacity() 返回当前容量。 
char    charAt(int index) 返回 char在指定索引在这个字符值。
StringBuffer    delete(int start, int end) 删除此序列的子字符串中的字符。 
StringBuffer    deleteCharAt(int index) 删除 char在这个序列中的指定位置。 
int    indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。 
int    lastIndexOf(String str) 返回指定子字符串最右边出现的字符串内的索引。
StringBuffer    insert(int offset, Object o) 将参数的字符串表示插入到此序列中指定的位置。
int    length() 返回长度(字符数)。 
StringBuffer    reverse() 导致该字符序列被序列的相反代替。 
StringBuffer    replace(int start, int end, String str) 用指定的String中的字符替换此序列的子字符串中的 String 。
String    substring(int start) 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。 
String    substring(int start, int end) 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。 
String    toString() 返回表示此顺序中的数据的字符串。

例如:
 

package com.wagnxing.test2;
public class StringBufferTest {
	public static void main(String args[]) {

		/// StringBuffer--可变的字符串
		// StringBuffer类的构造方法
		// StringBuffer() 构造一个初始容量为16个字符的空StringBuffer对象。
		StringBuffer sbu1 = new StringBuffer();
		// StringBuffer(CharSequence seq)
		// 通过其他的StringBuffer对象创建一个新的StringBuffer对象
		StringBuffer sbu2 = new StringBuffer("holle,world");
		// StringBuffer(int capacity) 构造一个由 capacity参数指定的初始容量得空StringBuffer对象。
		StringBuffer sbu3 = new StringBuffer(22);
		// StringBuffer(String str) 构造一个初始化为指定字符串内容的StringBuffer对象。
		String str = "hello,world";
		StringBuffer sbu4 = new StringBuffer(str);

		/// int capacity() 返回当前容量。
		System.out.println(sbu1.capacity()); // 16
		// StringBuffer append(Object o) 将参数的字符串表示追加到序列中。
		sbu1.append("123456789012345678");
		// StringBuilder容量扩展规则==当前容量*2+2
		System.out.println(sbu1.capacity());// 34
		// char charAt(int index) 返回 char在指定索引在这个字符值。
		System.out.println(sbu2.charAt(4));// e
		// int indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。
		System.out.println(sbu2.indexOf("l"));// 2 如果没有返回-1
		// int lastIndexOf(String str) 返回指定子字符串最后出现的字符串内的索引。
		System.out.println(sbu2.lastIndexOf("l"));// 9
		// int length() 返回长度(字符数)。
		System.out.println(sbu2.length());// 11
		// StringBuffer delete(int start, int end) 删除此序列的字符串中的字符。
		// System.out.println(sbu1.delete(10,17 ));//12345678908不包括结尾
		// StringBuffer deleteCharAt(int index) 删除 char在这个序列中的指定位置。
		// System.out.println(sbu1.deleteCharAt(16));//12345678901234568
		// StringBuffer insert(int offset, Object o) 将参数的字符串表示插入到此序列中指定的位置。
		System.out.println(sbu2.insert(9,"10"));//holle,wor10ld
		// StringBuffer reverse() 导致该字符序列被序列的相反代替。
		// System.out.println(sbu1.reverse());//876543210987654321
		// StringBuffer replace(int start, int end, String str)
		// 用指定的String中的字符替换此序列的子字符串中的 String 。
		// System.out.println(sbu2.replace(6, 11, "fxt"));//holle,fxt

		// String substring(int start) 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。
		// String substring(int start, int end) 返回一个新的 String
		// ,其中包含此序列中当前包含的字符的子序列。
		// String toString() 返回表示此顺序中的数据的字符串。
	}
}

StringBuffer与String的转换
        
StringBuffer–》String  
                StringBuffer的toString();
                String的构造方法String(StringBuffer buffer)

    String–>StringBuffer
                StringBuffer的构造方法

例如:

package com.wagnxing.test2;
public class StringBufferTest {
	public static void main(String args[]) {

		StringBuffer sbu1 = new StringBuffer();
		StringBuffer sbu2 = new StringBuffer("holle,world");

		// StringBuffer与String得转换
		// StringBuffer--》String
		// StringBuffer的toString();
		String str1 = sbu1.toString();
		// String的构造方法String(StringBuffer builder)
		String str2 = new String(sbu2);

		// String-->StringBuffer
		// StringBuilder的构造方法
		String str3 = new String();
		StringBuilder sbu5 = new StringBuilder(str3);
	}
}

StringBuilder与StringBuffer的区别?

StringBuilder–一个可变的字符序列,不保证线程同步【线程安全】. 访问速度快   jdk1.5 

StringBuffer—一个可变的字符序列,保证线程安全. 访问速度慢   JDK1.0 

String与StringBuilder/StringBuffer的区别?

String StringBuilder StringBuffer
可变与否 不可变 可变 可变
线程安全与否 非线程安全 非线程安全 线程安全
运行速度 较快
操作的情况 少量的字符串操作[拼接]的情况 单线程下字符串操大量操作的情况 多线程下字符串操作

面试题:”==” 与 equals方法的区别?

==    equals
比较运算符 java.lang.Object中的方法
基本类型:比较数据值 不能被比较
复合类型:堆内存地址【引用地址】 复合类型:堆内存地址【引用地址】
如果被重写比较的是存储对象的内容[String]

 

package com.wangxing.test3;

public class Main {

	public static void main(String[] args) {
		Student  stu1=new Student();
		Student  stu2=new Student();
		//System.out.println(stu1==stu2);  //false
		//System.out.println(stu1.equals(stu2)); //false
		//stu1=stu2;
		//System.out.println(stu1==stu2); //true
		//System.out.println(stu1.equals(stu2)); //true
		
		String str1=new String("hello");
		String str2=new String("hello");
		System.out.println(str1==str2);  //false
		//因为String子类类中重写了object中的equals方法
		System.out.println(str1.equals(str2)); //true
		
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79837.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!