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