Java语言是面向对象的编程语言,Java程序中除了定义的基本类型的变量,其他的一切都是对象,所有对象对的类型都属于类,所有类都需要继承一个基类,那就是Object基类。也就是说,你声明的任意一个对象都是基类Object的对象,Object是最顶层的数据类型,即便是基本数据类型,也可以转换为其对应的包装类。也属于Object基类的对象。
hashCode方法
获取对象在内存堆中的特殊地址,可以用来区分是否是同一个对象,这是默认的hashCode方法实现,但hashCode方法可以被子类重写,其代表的含义可能发生变化。
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Object o1 = new Object();
Object o2 = o1;
Object o3 = new Object();
System.out.println("o1.hashcode="+o1.hashCode());
System.out.println("o2.hashcode="+o2.hashCode());
System.out.println("o3.hashcode="+o3.hashCode());
}
}
包装类
Java编程语言中只有8中基本数据类型,分别是byte,boolean,char,short,int,long,float,double,它们分别对应的包装类有Byte,Boolean,Character,Short,Integer,Long,Float,Double,基本数据类型只代表一个数据,没有相应的操作方法,包装类包含数据和操作方法,使用更加方便。
import java.util.*;
public class Test
{
public static void main(String[] args)
{
//字符串转化int
String str1 = "10";
//方法一
int i1 = Integer.parseInt(str1);
//方法二
int i2 = new Integer(str1).intValue();
System.out.println("i1="+i1+",i2="+i2);
//整数转化为字符串
int i3 = 20;
String str3 = i3+"";
String str4 = new Integer(i3).toString();
System.out.println("str3="+str3+",str4="+str4);
//字符串转化float
String str2 = "10.0";
//方法一
float f1 = Float.parseFloat(str2);
//方法二
float f2 = new Float(str2).floatValue();
System.out.println("f1="+f1+",f2="+f2);
//String与Boolean,Character,Double之间转化类似,需要使用包装类的方法协助
}
}
思考题
1、两个对象的hashcode相同是否是同一个对象
2、两个对象的equals方法比较返回true,两个对象是否是统一对象