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
3667126426.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.Student7.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
原文:http://11841428.blog.51cto.com/11831428/1859162