给网站开发自己的一封信,创业做app哪个网站好,阿里云服务器建设两个网站,设计网站的合同1、Java API简介 Java API(Java Application Programming Interface)是Java应用程序编程接口的缩写。Java中的API#xff0c;就是JDK提供的具有各种功能的Java类#xff0c;灵活使用Java API能够大大提高使用Java语言编写程序的效率。 Java API的帮助文档可到 http://docs.or…1、Java API简介 Java API(Java Application Programming Interface)是Java应用程序编程接口的缩写。Java中的API就是JDK提供的具有各种功能的Java类灵活使用Java API能够大大提高使用Java语言编写程序的效率。 Java API的帮助文档可到 http://docs.oracle.com/javase/8/docs/api/ 下载灵活使用Java API能够提高使用Java语言编写程序的效率下面对Java中提供的最常用的包进行介绍对这些包中的常用类先有一个总体了解后文将对重要的、常见的方法进行介绍。
java.langJava语言包, 该包中提供了利用Java语言进行程序设计的基础类比如String、Math、System类该包中的类不需要使用import语句进行导入都会被自动导入。java.util该包中主要包含一些实用的工具类比如集合框架类、日期处理类、字符串解析类、随机数生成类等。java.awt该包中主要包含处理用户界面和绘制图形图像的各种类。java.io该包中主要包含处理输入、输出编程的各种类。java.net该包中主要包含处理网络编程的各种类。java.sql该包中主要包含处理数据库编程的各种类。
1. Java.lang包中常用的类
java.lang包中的常用类 Boolean Object Error Byte String Throwable Character StringBuffer Exception Double StringBuilder ClassNotFoundException Float System NullPointerException Integer Math NumberFormatException Long Runnable(接口) RuntimeException Short Thread ArithmeticException
2. java.util包中常用的类
java.util包中的常用类 Collection(接口) Arrays Calendar Iterator(接口) Set(接口) Date ListIterator(接口) HashSet Random List(接口) TreeSet Scanner ArrayList Map(接口) Collections LinkedList HashMap Vector Hashtable Stack TreeMap
3. java.io包中的常用的类
java.io包中的常用类 BufferedInputStream FileReader PrintWriter BufferedOutputStream FileWriter Reader BufferedReader InputStream Writer BufferedWriter InputStreamReader Serializable(接口) DataInputStream OutputStream Externalizable接口) DataOutputStream OutputStreamWriter IOException File ObjectInputStream FileNotFoundException FileInputStream ObjectOutputStream InvalidClassException FileOutputStream PrintStream
4. java.net包中常用的类
java.net包中的常用类 ServerSocket Socket UnknownHostException
2、Object类 在Java中有这样一个类它是所有类的祖先类也就是说任何类都是其子孙类它就是java.lang.Object。如果一个类没有显式地指明其父类那么它的父类就是Object也就是说下面两条语句的作用是一样的
public class ClassName{…}
等价于
public class ClassName extends Object{…} 如同我们称自己为炎黄子孙一样所有的类都是Object类的子类Object类中定义的方法被遗传到所有其它类中。同时Object类也是Java语言中唯一一个没有父类的类。 做为一个超级祖先类Object类为子类提供了一些public修饰的方法便于子类覆盖来实现子类自己特定的功能下面我们要详细介绍其中的equals()方法、hashCode()方法和toString()方法。
1. public boolean equals(Object obj) 该方法在Object类中的作用是比较两个引用所指向的对象是否是同一个对象即两个引用所指向对象的地址是否相等。 注意通常情况下所有的类中equals()方法默认是比较地址但是Object的任何子类均可以按照自己的需要对equals()方法进行覆盖以改变此方法的操作细节实现使用自定义的方法判断两个对象是否为同一个对象或者两个对象是否具有可互相替代性。 【例】 定义公民类Citizen覆盖该类的equals()方法该方法的定义为如果两个公民的身份id相同则为同一个公民但是不用考虑这两个对象是否具有相同的地址。
public class Citizen{private int id;private String name;public Citizen(int id, String name) {this.id id;this.name name;}//覆盖父类的equals()方法public boolean equals(Object o) {Citizen c (Citizen) o;if (c.id this.id) {return true;} else {return false;}}//主方法测试equals()方法public static void main(String args[]) {Citizen xiaoming new Citizen(21000, xiaoming);Citizen mingming new Citizen(21000, mingming);System.out.println(xiaoming.equals(mingming));}
}
//程序运行结果true 程序分析上例定义了一个Citizen类此类包含了公民的两个属性id和name同时覆盖了equals()方法该方法实现为当传入对象的id和当前对象的id相等时返回true否则返回false。所以在main()方法最后一行调用equals()方法时调用的实际上是Citizen类的equals()方法xiaoming和mingming对象的id都为21000所以程序运行结果为true。而假设如果Citizen类没有覆盖equals()方法则在最后一行调用equals()方法时实际调用的Object类的equals()方法该方法比较两个对象是否指向同一块地址所以肯定返回false读者可自行验证。 运算符和equals()方法的区别是比较运算符既能用于比较两个基本数据类型也能用于比较两个引用数据类型当比较基本数据类型时判断两个基本数据类型的字面量是否相等当比较两个引用数据类型时判断两个地址的值是否相等也就是两个引用是否指向同一个对象。而equals()方法只能用于比较引用数据类型也就是所有以Object类为父类的类型Object类的equals()方法默认比较两个对象引用的值是否相等但equals()方法通常都会被子类覆盖所以子类中equals()方法的含义就要看子类中的具体实现了。 【例】 和 equals()方法在String类中的区别 String str1 hello; String str2 new String(hello); System.out.println(str1str2); System.out.println(str1.equals(str2));
程序运行结果
false
true 程序分析因为String是引用数据类型使用运算符比较两个引用地址是否相同第二行使用关键字new重新生成了一个String对象所以第三行输出为false。在String类中覆盖了Object的equals()方法该方法判断两个String对象的内容是否相等所以第4行输出为true。
2. public int hashCode() 该方法返回对象的哈希码。任何一个对象的默认的哈希码是将对象的内存地址通过某种转换得到的所以不同对象会有不同的哈希码。 哈希码是一个代表对象的十六进制整数好比对象的身份证号。在程序运行期间每次调用同一个对象的hashCode()方法返回的哈希码必定相同。但是Java应用程序需要的内存由操作系统提供所以多次执行同一个程序因操作系统的运行情况不一样内存使用情况也不一样程序所获得的内存不同这就导致同一个对象的哈希码也不一定相同。 在Java中有个规定如果equals()方法返回两个对象是相等的那这两个对象上调用hashCode()返回的整数必须相等否则在使用Hash类型集合时就会产生错误所以在我们覆盖equals()方法同时建议覆盖hashCode()方法。需要说明如果equals()返回两个对象不等它们的hashCode()也可以返回相同的整数但是最好让它们的hashCode()返回不同的整数这有利于提高Hash类型集合的性能。那么重写equals()方法时一定要重写hashcode()方法吗先说说hashcode()方法调用的条件如果你想往map里面放一个类作为map的键值这个类又是你自己设计的或者这个类不是你写的但是你修改了这个类的equals()方法这个时候你就要重写hashcode()方法这样当你往map里放值的时候系统会调用这个对象的hashcode()方法来生成相应的hash值来映射相应的对象。 如果同一个类的两个对象的属性值相等那么他们的hashcode()一定相等吗这个要看你具体如何实现你的hashcode()方法如果你希望他们的值一样hashcode()也一样你就可以这样实现。但是hashcode的实现一般要满足几个特征
自反性即对任意一个非空的指引值xx.equals(x)永远返回true。
对称性即对任意两个非空的指引值xy如果x.equals(y)返回true那么y.equals(x)也返回true。
传递性当x.equals(y)返回true并且y.equals(z)返回true时x.equals(z)也返回true。
3. public String toString() 该方法返回对象的字符串表示形如java.lang.Object1db9742也就是 类名hashcode。toString()方法是一个从字面上就容易理解的方法它的功能是得到一个能够代表该对象的一个字符串类名代表该对象的一个唯一的16进制数例如下面这个例子 【例】 查看Object类和String类的toString()方法返回值。
public class ObjectSample {public static void main(String args[]){Object o new Object();System.out.println(o);System.out.println(o.toString());String s new String(hello);System.out.println(s); }
}程序运行结果
java.lang.Object1db9742
java.lang.Object1db9742
hello 程序分析前两个输出结果表示对象o在内存中的地址事实上返回这样的字符串没有什么实际的意义。一般子类都会覆盖该方法让它返回有意义的文本。例如上例中的对象s的输出为hello这是因为字符串String类对toString()进行了覆盖让它返回此String的本身内容。 下面通过实例来看一下如何在自己编写的类中覆盖equals()方法和toString()方法。 【例】 equals()方法和toString()的覆盖 //圆类public class MyCircle {private int radius;//半径public MyCircle(int r) {radius r;}public int getRadius() {return radius;}public void setRadius(int r) {radius r;}//覆盖Object中的equals()方法public boolean equals(Object obj) {MyCircle o (MyCircle) obj;if (o.getRadius() this.radius)return true;elsereturn false;}//覆盖Object中toString方法public String toString() {return radius radius;}}
//测试类
public class Test {public static void main(String[] args) {MyCircle obj1 new MyCircle(3);System.out.println(obj1 obj1.toString());MyCircle obj2 new MyCircle(3);System.out.println(obj2 obj2.toString());if (obj1.equals(obj2))System.out.println(the two objects are equal);elseSystem.out.println(the two objects are not equal);}
}程序运行结果
obj1radius 3
obj2radius 3
the two objects are equal 程序分析从程序的运行结果来看我们创建的两个MyCircle对象是相等的因为MyCircle类中覆盖的equals()方法规定当两个MyCircle对象的半径相等时认为这两个对象相等。而我们在调用MyCircle类的构造方法创建对象时设定这两个MyCircle对象的半径均为3所以obj1.equals(obj2)返回true。