Java零基础学习-----JAVA核心类库(上)(一)
API使用和常用包的概述
常用类的概述和使用
常用的包(熟悉)
包的名称和功能
1.java.lang包,该包是java语言的和辛堡,并且该包中所有内容由java虚拟机自动导入。
如System类,String类,…..
2.java.util包,该包是java语言的工具包,里面提供了大量工具类以及集合类等。
如:Scanner类,Random类,List集合….
3.java.io包,该包是java语言中的输入输出包,里面提供了大量读写文件相关的类等。
如:FileInputStream类,FileOutputStream类,…….
4.java.net包,该包是java语言中的网络包,里面提供了大量网络编程相关的类等。
如:ServletSocket类,Socket类….
5.java.sql包,该包是java语言中的数据包,里面提供了大量操作数据库的接口等。
如:DriverManager类,Connect接口,…..
java程序员在编写时可以使用大量的类库,因此java编程时需要记得很多,对象编程编程能力本身不是特别的高。
Object类的概念和构造方法
1.Java.lang.Object类是java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类
2.如果定义一个java类时没有使用extends关键字声明其父类,则其父类为java.lang.Object类。Object定义了“对象”的基本行为,被子类默认继承。
常用方法:
多态:当父类类型的引用指向子类类型的对象时
equals方法默认功能的使用:
源码:
Object类:
public boolean equals(Object obj){
return (this==obj);
}
因为所有没有父类的类都是默认继承Object类,所以我们可以在子类中重写Object中的方法。
重写
@Override
public boolean equals(Object obj){
//判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
If(obj instanceof Student){
Student ts=(Studeng) obj;
Return this.getId()=ts.getId();
}
return false;
}
优化:
public boolean equals(Object obj){
//当调用对象和参数对象指向同一个对象时,则一定相同;
If(this==obj){return true;}
//当调用对象不为空而参数对象为空时,则内容一定不相同。
If(null==object){ return false; }
//判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
If(obj instanceof Student){
Student ts=(Studeng) obj;
Return this.getId()=ts.getId();
}
return false;
}
请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等对象必须具有相等的哈希代码。
hashCode方法的重写实现:
为了使hashCode方法的结果和equals方法的结果保持一致,从而满足官方的常规协定,需要重写该方法。
@Override
public int hashCode(){
final int type=12;
return type*31+getId();
}
toString()方法的重写:
为了返回更有意义的字符串数据,则需要重写该方法
@Override
Public String toString(){
return "Student[id="+getId()+",name="+getName()+"]";
}
以姓名为基准来判断:
public boolean equals(Object obj){
//当调用对象和参数对象指向同一个对象时,则一定相同;
If(this==obj){return true;}
//当调用对象不为空而参数对象为空时,则内容一定不相同。
If(null==object){ return false; }
//判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
If(obj instanceof Student){
Student ts=(Studeng) obj;
//判断两个字符串的地址是否相同的地址
//Return this.getName()=ts.getName();
//只是比较两个字符串内容是否相同,看String类中的源码,String类继承了Object类,并重写了equals方法。
Return this.getName().equals(ts.getName());
}
return false;
}
equals方法和hashCode
Idea中可以自动生成equals和hashCode方法。
包装类的概念和分类:
通常情况下基本数据类型的变量不是对象,为了满足万物皆对象的理念就需要对基本数据类型的变
量进行打包封装处理变成对象,而负责将这些变量声明为成员变量进行对象化处理的相关类,叫做包装
类。
如:
Person p = new Person();
int num = 10;
包装类的分类
Integer类的概念和构造方式
1.基本概念:
Java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装并提供int类型到String类之间的转换等方法。
2.常用的常量:
3.常用方法:
Integer类的装箱和拆箱机制
//valueOf方法相当于从int类型到Integer类型的转换,叫做装箱
Integer it=Integer.valueOf(123);
//获取调用对象中的证书数值,相当于Integer类型到int类型的对象的转换,这个过程叫拆箱
Int ia=it.intValue();
//从java5开始增加了自动装箱和拆箱机制
Integer it=100;//直接通过赋值运算符实现自动装箱
Int ib=5;//直接通过赋值运算实现自动拆箱
装箱和拆箱的笔试题:
Integer it6=128;
Integer it7=128;
Integer it8=new integer(value:128);
Integer it9=new integer(value:128);
System.out.println(it6==it7); //比较地址 false
System.out.println(it6.equals(it7)); //比较内容 true;
System.out.println(it8==it9); //比较地址 false
System.out.println(it8.equals(it9)); //比较内容 true;
Integer it6=127;
Integer it7=127;
Integer it8=new integer(value:127);
Integer it9=new integer(value:127);
System.out.println(it6==it7); //比较地址 true (自动装箱池)
System.out.println(it6.equals(it7)); //比较内容 true;
System.out.println(it8==it9); //比较地址 false
System.out.println(it8.equals(it9)); //比较内容 true;
4.装箱和拆箱的概念
在Java5发布之前使用包装类对象进行运算时,需要较为繁琐的“拆箱”和“装箱”操作;即运算前先将
包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。
从Java5开始增加了自动拆箱和自动装箱的功能。
5.自动装箱池
在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用
该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率
Double类的概念:
1.基本概念
java.lang.Double类型内部包装了一个double类型的变量作为成员变量,主要用于实现对double
类型的包装并提供double类型到String类之间的转换等方法。
2.常用的常量
3.常用的方法:
扩展:
java.lang.Number类是个抽象类,是上述类的父类来描述所有类共有的成员。
//实现了从double到Double类型的转换,装箱
Double db1=Double.valueOf(3.14);
//实现了Double到double类型的转换,拆箱
double db1=doubleValue();
//从java5开始实现自动装箱和自动拆箱
Double db2=3.14;
Double d2=db2;
Boolean类的概念和使用
基本概念:
java.lang.Boolean类型内部包装了一个boolean类型的变量作为成员变量,主要用于实现对
boolean类型的包装并提供boolean类型到String类之间的转换等方法。
常用的常量
常用的方法:
Character·类的概念和使用
1.基本概念:
java.lang.Character类型内部包装了一个char类型的变量作为成员变量,主要用于实现对char类型
的包装并提供字符类别的判断和转换等方法。
2.常用的常量:
3.常用的方法:
包装类的总结:
1.基本数据类型转换为对应包装类的方式
调用包装类的构造方法或静态方法即可
2.获取包装类对象中基本数据类型变量数值的方式
调用包装类中的xxxValue方法即可
3.字符串转换为基本数据类型的方式
调用包装类中的parseXxx方法即可