常用的包
java.lang包 - 该包是Java语言的核心包,该包中的内容由Java虚拟机自动导入。如:String类、System类等。
java.util包 - 该包是Java语言的工具包,该包中提供大量工具类和集合类。如:Scanner类、Random类等。
java.io包 - 该包是Java语言的输入输出包,该包中提供读取文件的类。如:FileInputStream类、FileOutputStream类等。
java.net包 - 该包是Java语言的网络包,该包中提供大量网络编程类。如:ServerSocket类、Socket类等。
Object类
-
基本概念
java.lang.Object类是类层次结构的根类,任何类都是该类的直接或间接子类。
-
常用的方法
Object() - 使用无参的方式构造对象。
boolean equals(Object obj) - 用于判断调用对象是否与参数对象相等。
该方法默认比较两个对象的地址,与 == 运算符的结果一致。
若希望该方法比较两个对象的内容,则需要重写该方法。
int hashCode() - 用于获取调用对象的哈希码值(内存地址的编号)。
若两个对象调用equals方法的结果相等,则各自调用hashCode方法的结果相同
若两个对象调用equals方法的结果不相等,则各自调用该方法的结果不相同。
因此上述两个方法中只要有一个重写,则另外一个也要重写。
为了使得该方法的结果与equals方法保持一致,因此重写该方法。
String toString() - 用于获取调用对象的字符串形式。
该方法默认返回的字符串为:包名.类名@哈希码的十六进制形式。
为了使得该方法返回更有意义的字符串内容,需要重写该方法。
使用print()/println()打印引用或字符串连接引用时,会自动调用该方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| public class Student { private int id; private String name;
public Student() { super(); } public Student(int id, String name) { super(); setId(id); setName(name); }
public int getId() { return id; } public void setId(int id) { if(id > 0) { this.id = id; } else { System.out.println("学号不合理!!!"); } } public String getName() { return name; } public void setName(String name) { this.name = name; }
@Override public boolean equals(Object obj) {
if(this == obj) return true; if(null == obj) return false; if(obj instanceof Student) {
return this.getId() == ((Student)obj).getId(); } return false; }
@Override public int hashCode() { int type = 12; return type*31 + getId(); }
@Override public String toString() { return "Student[id = " + getId() + ", name = " + getName() + "]"; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class StudentTest {
public static void main(String[] args) { Student s1 = new Student(1001, "zhangfei"); Student s2 = new Student(1001, "zhangfei"); boolean b1 = s1.equals(s2); System.out.println("b1 = " + b1); System.out.println(s1 == s2); System.out.println("--------------------------------------");
int ia = s1.hashCode(); System.out.println("第一个对象的哈希码值是:" + ia); int ib = s2.hashCode(); System.out.println("第二个对象的哈希码值是:" + ib); System.out.println("--------------------------------------");
String str1 = s1.toString(); System.out.println("获取到的字符串形式为:" + str1); System.out.println(s1); String str2 = "hello" + s1; System.out.println("str2 = " + str2); } }
|
包装类和数学处理类
-
包装类的概念
在某些特殊场合(集合)中要求所有的数据内容都必须是对象,而基本数据类型声明的变量并不满足该要求,
此时就需要对变量进行对象化处理打包成对象,该机制需要使用包装类。
-
包装类的分类
int => java.lang.Integer类
char => java.lang.Character类
其它类型都是将首字母变大写。
Integer类
-
基本概念
java.lang.Integer类里面提供了一个int类型的成员变量用于包装int类型。
该类由final关键字修饰表示不能被继承。
-
常用的方法
Integer(int value) - 根据参数指定的整数来构造对象。
Integer(String s) - 根据参数指定的字符串来构造对象。
该类重写了equals()、hashCode()以及toString()方法。
int intValue() - 用于获取调用对象中的int数值并返回。
static Integer valueOf(int i) - 根据参数指定的整数值得到Integer类型的对象
static int parseInt(String s) - 将字符串类型转换为int类型并返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class IntegerTest {
public static void main(String[] args) { Integer it1 = new Integer(10); System.out.println("it1 = " + it1);
Integer it2 = new Integer("20"); System.out.println("it2 = " + it2); System.out.println("------------------------------------");
int ia = it2.intValue(); System.out.println("获取到的整数是:" + ia);
Integer it3 = Integer.valueOf(ia); System.out.println("it3 = " + it3); int ib = Integer.parseInt("12345"); System.out.println("ib = " + ib); System.out.println("------------------------------------");
int ic = 30; Integer it4 = ic; int id = it4; } }
|