Object类中的toString()方法和equals()方法,String类中的equals()方法和==常量符号,StringBuffer带缓冲的字符串

1、Object类中toString()
所有的类都默认的继承了Object类
Object类中的toString方法返回的是类的名字和该对象哈希码组成的字符串
System.out.printf(类对象名)实际输出的是该对象的toString()方法所返回的字符串
为了实际需求需要子类重写父类的toString()方法
Object类中的equals()方法
用来判断调用equals对象和形参obj所引用的对象是否是同一对象,所谓对同一对象就是内存中同一块存储单元,若是返回ture,否则false;

public  boolean equals(Object obj)
{
    return this ==obj;
}

考虑到容器list,set中的存放数据,通过List.add(1)放置数据,容器可以放各种数据,Set s中但不能放相同的数据。所以需要将aa1和aa2内存不同,值相同是不能放入,aa1.equals(aa2)认为不相等,所以需要重写equals()
2、重写equals()

class A
{	public int i;	
	public A(int i)
	{		this.i = i;
	}
 	public boolean equals(Object obj)
	{      //在强制转换前已经将子类赋值给父类
     	A aa = (A)obj;                      //obj.i  error,   因为父类不能调用子类中内容,父类中不包含i成员。若调用子类成员,需要强                               
     	                                            //制转换。
		if(this.i == aa.i)                    //if (当前对象的i和obj代表的i相等)
 			return true;
 	else
 			return false;
 	}
}
public class TestStringEquals_2
{
	public static void main(String[] args)
	{
		A aa1 = new A(2);
		A aa2 = new A(2);
		System.out.println( aa1.equals(aa2) ); //true
	}
}

String类中有很多方法,Sting类用来表示字符串:
3、String类中的equals()方法
Object中的equals()默认两个对象即使内容一样,认为两个对象不相等。
在这里插入图片描述

class A
{
	public int i;
	
	public A(int i)
	{
		this.i = i;
	}
}
public class TestStringEquals_1
{
	public static void main(String[] args)
	{
		A aa1 = new A(2);//数字
		A aa2 = new A(2);		
		System.out.println( aa1.equals(aa2) );//False		
		if (aa1 == aa2)
			System.out.printf("aa1和aa2相等\n");
		else
			System.out.printf("aa1和aa2不相等\n");//ok
	     String str1="abc";
	     String str2="abc";
	   	 System.out.println( str1.equals(str2) ); //true,对equals()重写
//		System.out.println(aa1); //A@
//		System.out.println(aa2); //A@ 
	}
}

4、String类
java.lang.String类对象表示不可修改的Unicode编码(2个字节)字符串,C中利用char Str[10]=“abc”,为ASCII编码,只占一个字节。这里直接有String str=“abc”
在jav中双引号括起来的字符串可以当做String对象

/*
	
	测试String类的
		equals方法的使用
		==的用法
		常量字符串的用法
*/
public class TestString_1
{
	public static void main(String[] args)
	{
		String str1 = new String("china");
		String str2 = new String("china");
		System.out.println(str1.equals(str2)); //true   str1.equals(str2) 用来判断str1**指向的对象的内容**和str2指向的对象的内容是否相等		//True
		if (str1 == str2) //是判断str1和str2**自身的内容**是否相等?  还是用来判断str1指向的对象的内容和str2指向的对象的内容是否相等? 答案: 代表前者() 是同一对象判断
			System.out.println("str1 == str2");  
		else
			System.out.println("str1 != str2");	//OK			
		String str3 = "china";//字符串常量在栈区存放的,局部变量str3、str4存放在栈,类的非静态属性在堆区,被static修饰,“”abc“”在静态数据区(data segment)存放。str3和str4同时指向“china”。
		String str4 = "china";
		if (str3 == str4)
			System.out.println("str3 == str4");    //OK。
		else
			System.out.println("str3 != str4");		
				}
}

5、String类中的常用方法
将字符串与整数转换

public class TestString_2
{
	public static void main(String[] args) throws Exception
	{
		int i = 123;
		String str = "456";
		
		//str = i; //error
		//i = str; //error
		str = String.valueOf(i);
		System.out.printf("str = %s\n", str);
		i = Integer.parseInt(str);//("12a"格式异常)
		System.out.printf("i = %d\n", i);
	}
}

6、StringBuffer类
String类对象一旦创建不能更改,若经常修改使用String的话就导致耗空间和时间(放置在数据区,若两个字符串的生成,相连接,在创建一个新的变量,将两者相连。)String类public final class String,因此不能被继承;String类中没有修改字符串的方法,但是在StringBuffer中有很多修改字符串的方法。若需要对字符串内容修改就需要式样StringBuffer。
向StringBuffer中赋值的时候可以通过它的append方法,
插入insert()方法
利用toString()将StringBuffer对象转换为String

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值