目录
Object类是所有Java类的根父类
如果在类的声明中未使用extends关键字指明其父类,则默认父类 为java.lang.Object类
- public class Person {...}
- 等价于:
- public class Person extends Object {...}
-
- method(Object obj){…} //可以接收任何类作为其参数
- Person o=new Person();
- method(o);

基本类型比较值:只要两个变量的值相等,即为true。 int a=5; if(a==6){…}
引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才返回true。
Person p1=new Person();
Person p2=new Person();
if (p1==p2){…}
用“==”进行比较时,符号两边的数据类型必须兼容(可自动转换的基本 数据类型除外)
equals():所有类都继承了Object,也就获得了equals()方法。还可以重写。
特例:当用equals()方法进行比较时,对类File、String、Date及包装类 (Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对象;
原因:在这些类中重写了Object类的equals()方法。
当自定义使用equals()时,可以重写。用于比较两个对象的“内容”是否都相等
在进行String与其它类型数据的连接操作时,自动调用toString()方法
Date now=new Date();
System.out.println(“now=”+now); 相当于System.out.println(“now=”+now.toString());
可以根据需要在用户自定义类型中重写toString()方法 如String 类重写了toString()方法,返回字符串的值。
s1=“hello”;
System.out.println(s1);//相当于System.out.println(s1.toString());
基本类型数据转换为String类型时,调用了对应包装类的toString()方法
int a=10; System.out.println(“a=”+a);
基本数据类型包装成包装类的实例---装箱
通过包装类的构造器实现:
int i = 500; Integer t = new Integer(i);
还可以通过字符串参数构造包装类对象:
Float f = new Float(“4.56”);
Long l = new Long(“asdf”); //NumberFormatException
获得包装类对象中包装的基本类型变量 ---拆箱
调用包装类的.xxxValue()方法:
boolean b = bObj.booleanValue();
JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配
字符串转换成基本数据类型
基本数据类型转换成字符串

- int i = 500;
- Integer t = new Integer(i);
- 装箱:包装类使得一个基本数据类型的数据变成了类。
- 有了类的特点,可以调用类中的方法。
- String s = t.toString(); // s = “500“,t是类,有toString方法
- String s1 = Integer.toString(314); // s1= “314“ 将数字转换成字符串。
- String s2=“4.56”;
- double ds=Double.parseDouble(s2); //将字符串转换成数字
-
- 拆箱:将数字包装类中内容变为基本数据类型。
- int j = t.intValue(); // j = 500,intValue取出包装类中的数据
- 包装类在实际开发中用的最多的在于字符串变为基本数据类型。
- String str1 = "30" ;
- String str2 = "30.3" ;
- int x = Integer.parseInt(str1) ; // 将字符串变为int型
- float f = Float.parseFloat(str2) ; // 将字符串变为int型
- package com.jyc.p2;
- /*
- 一.class java.lang.Object 类
- ①equals()
- 1.Object类是所有Java类的根父类
- 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类
- objec 类中的属性和方法都具备通用性(object类中声明了一个空参构造器)
- 属性 无
- 方法:equals(),toString(),getClass(),hashCode(),clone(),finalize(),wait() notify(),notifyAll()
- 2.==&&equals的区别
- ==运算符
- 可以使用在基本数据类型变量和引用数据类型变量中
- 如果比较的是基本数据类型变量,比较保存的两个数据是否相等(不一定类型要相同)
- 如果比较的是引用数据类型变量,比较两个对象的地址值是否相同
- 3.equals()方法的使用
- equals是一个方法,而非运算符
- 只能适用于引用数据类型
- object.equals的定义
- public boolean equals(Object obj) {
- return (this == obj);
- }
- 4.说明object.equals()和==的作用是相同的,比较两个对象的地址值是否相同,即两个对象的引用是否相同
- 像 String Date File 包装类等都重写了object类中的equals方法,重写以后比较的不是两个引用地址是否相同,
- 而是比较两个对象的实体内容是否相同
-
- 5..通常情况下我们自定义得类如果使用equals()方法,也通常是比较两个对象的实体内容是否相同,那么
- 我们就需要对object类中的equals()进行重写 (重写的原则比较两个对象的实体内容是否相同)
-
- ② toString()
- 1.当我门输出对象的一个引用时,实际上是调用当前对象的toString方法
- 2.object.toString()的定义
- 获取类的类名+通过hashCode获取空间地址值转为16进制(虚拟地址)
- public String toString() {
- return getClass().getName() + "@" + Integer.toHexString(hashCode());
- }
- 3.像 String Date File 包装类等都重写了object类中的 toSring 方法,是的调用对象的toString方法时返回实体内容信息
- 4.自定义类也可以重写toString方法 当调用此方法时返回对象的实体内容
-
- 二 包装类的使用
- 1.java提供了八种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征
- 基本数据类型 包装类 String三者直接的相互转换
- 基本数据类型转为包装类:调用包装类的构造器(自动装箱)
- 包装类转为基本数据类型调用包装类xxx的xxxvale;(自动拆箱)
- 基本数据类型,包装类转为string 连接运算, 调用String.valueof()
- string转为基本数据类型,包装类 调用包装类的parsexxx()
-
-
-
-
- * */
- public class Test99 {
- public static void main(String[] args) {
- Order order1=new Order("zs",18);
- Order order2=new Order("zs",18);
-
-
- System.out.println(order1.getClass().getSuperclass());
- System.out.println("---------==比较基本数据类型-------------");
- int i=10;
- char j=10;
- System.out.println(j==i);
-
- System.out.println("---------==比较引用数据类型--------------");
- String str1=new String("str");
- String str2=new String("str");
- System.out.println(str1==str2);
-
- System.out.println("---------equals的使用------------");
- System.out.println(str1.equals(str2));//true
- System.out.println(order1.equals(order2));//false--->true
-
- System.out.println("--------toString的使用----------");
- System.out.println(order1.toString());//com.jyc.p2.Order@1540e19d--》Order[name=zs,age=18]
-
- System.out.println("-----------基本数据类型转为包装类---------------");
- int num=10;
- Integer num1=new Integer(num);
- System.out.println(num1.toString());
- System.out.println(num1.toString());
- Boolean b1=new Boolean(true);//true
- Boolean b2=new Boolean("trUe");//true
- Boolean b3=new Boolean("true123"); //false
- System.out.println(b1);
- System.out.println(order1.isFlage); //null
- System.out.println("-----------包装类转为基本数据类型---------------");
- Integer in1=new Integer(12);
- int i1= in1.intValue();
- System.out.println(i1+1);//13
- System.out.println("-----------装箱&&拆箱---------------");
- //装箱
- int num3=10;
- Integer in3=num;
- System.out.println(in3);
- //拆箱
- int num4=in3;
- System.out.println(num4);
- System.out.println("---------- 基本数据类型,包装类转为string---------------");
- //连接运算
- int num6=66;
- String s1=num6+" ";
- Double d1=new Double(12.3);
- String str3=String.valueOf(d1);
- System.out.println(s1);
- System.out.println(str3);
- System.out.println("---------- string转为基本数据类型,包装类---------------");
- String s5="123";
- int num5=Integer.parseInt(s5);
- System.out.println(num5+1);
-
-
-
-
-
-
- }
- }
- class Order{
- int age;
- String name;
- Boolean isFlage;
- Order(){ }
- Order( String name,int age){
- this.name=name;
- this.age=age;
- }
-
- //重写 equals 方法 比较两个对象的实体内容
- public boolean equals(Object obj) {
- //判断两个对象是否是同一个对象
- if (this==obj){
- return true;
- }
- //判断两个对象是不是同一个类
- if (obj instanceof Order){
- //强制类型转换为Order相同类
- Order o=(Order)obj;
- return this.age==o.age &&this.name.equals(o.name);
- }else{
- return false;
- }
- }
-
- //重写toString方法
- public String toString() {
- return "Order[name="+name+",age="+age+"]";
- }
- }
-