码迷,mamicode.com
首页 > 编程语言 > 详细

java之常见对象-Object类

时间:2016-10-08 02:38:50      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:java之常见对象-object类

1.API概述

  API(Application Programming Interface),应用程序编程接口。

  编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的java类,这些类中定义好了操作机器人各种动作的方法。其实,这些java类就是机器人厂商提供给应用程序编程的接口,大家把这些类就称为应用程序编程接口。


2.java API

  java API就是java提供给我们使用的类,这些类将底层的实现封装起来,我们不需要关心这些类是如何实现的,只需要学习如何使用这些类即可。


3.学习汉语和学习编程的异同点

  学好汉语,首先必须掌握汉语的语法,学好编程,也必须先学习编程语言的基本语法。

  学好汉语,还要掌握大量的成语,虽然不是要把所有的成语都掌握,但至少掌握的越多,描述事物时用词就会越恰当,越准确,越快捷,文章也会写的越流畅。同理,学习编程语言掌握了大量的API,就像掌握了大量的成语一样,可以让我们在处理某些问题时会轻而易举,同时,我们还能够从这些API中学到大师们组织java的方法,划分类的技巧。

  学好汉语,除了要掌握语法和成语外,还应该学会写文章的技巧和手法。同理,学习编程,也要掌握分析和解决问题的手法,养成良好的编程风格和习惯,体会出编程的感觉。学习汉语,我们可以从大量的唐诗宋词和现代散文中去体会写文章的技巧,同时听取老师的讲解和分析。同样,学习编程,也要听取有经验的程序的分析和讲解,并从别人的优秀的程序中去找感觉和经验。

  当然了,学习汉语和学习编程还是有不同的。最大的区别就是,学习汉语,好多东西必须先记住,不然书到用时方恨少。但是,学习编程,就不这样了,可以用的时候,临时获取,现学现用。

  以前是学好数理化,走遍天下都不怕,现在是掌握API,编程世界我不怕。


4.Object类概述及其构造方法

  Object类的概述:1)Object是类层次结构的根类 2)所有类都直接或间接的继承自该类。

  构造方法:public Object(){},子类的构造方法默认访问的是父类的无参构造方法。


5.Object类之hasCode()方法

package cn;

public class Student {

}
package cn;
/**
 * Object类的方法
 * 	 public int hashCode() 返回的是对象的哈希码值
 *   	注意:哈希值是根据哈希算法计算出来的值,这个值和地址值有关,但不是实际地址值
 *
 */
public class StudentTest {
	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student();
		System.out.println(s1.hashCode());
		System.out.println(s2.hashCode());
	}
}
705927765
366712642


6.Object类之getClass()方法

package cn;

public class Student {

}
package cn;
/**
 * Object类的方法
 * 	 public int hashCode(); 返回的是对象的哈希码值
 *   	注意:哈希值是根据哈希算法计算出来的值,这个值和地址值有关,但不是实际地址值
 *   public final Class<?> getClass();返回此Object的运行时类
 */
public class StudentTest {
	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student();
		System.out.println(s1.hashCode());
		System.out.println(s2.hashCode());
		
		System.out.println(s1.getClass().getName());
	}
}
705927765
366712642
cn.Student


7.Object类之toString()方法

package com;

public class Student {
	private String name;
	private int age;
	
	public Student(){}
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	

}
package com;
/**
 *  public String toString() 返回该对象的字符串表示
 *  默认情况下: toString()方法的值等价于
 *           getClass().getName()+‘@‘+Integer.toHexString(hachCode())
 * 	Integer类下的一个静态方法:
 * 		public static String toHexString(int i)
 * 		把一个整数转换为无符号的十六进制		
 */
public class StudentDemo {
	public static void main(String[] args) {
		Student s = new Student();
		System.out.println(s.getClass().getName());
		System.out.println(s.hashCode());
		
		System.out.println(s.toString());//com.Student@2a139a55
		
		
	}

}
package com;

public class Student {
	private String name;
	private int age;
	
	public Student(){}
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
	

}
package com;
/**
 *  public String toString() 返回该对象的字符串表示
 *  默认情况下: toString()方法的值等价于
 *           getClass().getName()+‘@‘+Integer.toHexString(hachCode())
 * 	Integer类下的一个静态方法:
 * 		public static String toHexString(int i)
 * 		把一个整数转换为无符号的十六进制		
 *  但是,默认情况下的返回值,是没有任何意义的,所以,建议所有子类都重写此方法。
 *  怎么重写呢?
 *  	把该类的所有成员变量值组成返回即可。
 */
public class StudentDemo {
	public static void main(String[] args) {
		Student s = new Student();
		System.out.println(s.getClass().getName());
		System.out.println(s.hashCode());
		s.setName("哈哈");
		s.setAge(20);
		System.out.println(s.toString());
		
		
	}

}
com.Student
705927765
Student [name=哈哈, age=20]

  注意:直接输出一个对象的名称,其实就是调用该对象的toString()方法。


8.Object类之equals()方法

package com;

public class Student {
	private String name;
	private int age;
	
	public Student(){}
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}
package com;
/**
 *   public boolean equals(Object obj) {
        return (this == obj);
    }	用来判断某个对象是否和此对象“相等”,默认情况下比较的是地址值
 * 	但是比较地址值意义不大,所以我们需要重写此方法。
 * ==
 * 	基本数据类型:比较的是值是否相等
 *  引用数据类型:比较的是地址是否相等
 *
 *
 */
public class StudentDemo {
	public static void main(String[] args) {
		Student s1 = new Student("哈哈", 27);
		Student s2 = new Student("哈哈", 27);
		
		System.out.println(s1==s2);//false
		System.out.println(s1.equals(s2));//默认情况false,现在重写了,所以为true
	}

}

9.Object类之finalize()方法和clone()方法

  protected void finalize() throws Throwable;当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写finalize()方法,以配置系统资源或执行其他消除。

  protected Object clone();创建并返回此对象的一个副本。

  

本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1859162

java之常见对象-Object类

标签:java之常见对象-object类

原文地址:http://11841428.blog.51cto.com/11831428/1859162

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!