*Object:是所有引用类型的父类
系统都会默认使用引用类型 extends Object.
此类中提供了常用的方法:
--toString():
在Object中,返回的是类全名@HashCode值
即对象在内存堆中的位置信息
类有类名和类全名之分:
-- 类名:即最短的名称 String
-- 类全名:从包名开始写的名称 java.lang.String
此方法会在输出变量时,或引用变量进行拼接时默认调用
而查看地址信息,通常没有必要,我们要查看的是"对象的成员变量信息"
因此,我们都需要重写toString()方法,用于查看对象的详情
格式:
"[成员变量1="+成员变量1+","+"成员变量2="+成员变量2+...+"]"
--equals(Object obj):
Object类型中的此方法中的逻辑是
比较[调用者this]与[形参obj]的"地址信息"是否相等
简单说成,比较this与obj是不是同一个对象
所以在定义类型时,继承过来的equals方法,我们要重写
重写规则:
(1)查看传进来的obj是不是null
if(obj==null){
return false;
}
(2)查看传进来的obj是不是this.
if(obj==this){
return true;
}
(3)查看传进来的obj是不是本类型:
if(obj.getClass()!= this.getClass()){
return false;
}
可以改成 :
if(!(obj instanceof Person)){
return false;
}
*instanceof关键字:
前一个操作数通常是引用类型变量,后一个操作数通常是一个类/接口
###:instanceof 操作符前面操作数的编译时类型要么与后面的类相同
要么与后面的类具有父子继承关系
否则会引起编译错误
作用: 判断引用变量指向的对象是否属于某一类型
语法:
boolean f = 引用类型变量名 instanceof 类型名
*package:包
作用: 用于管理源文件,区分类全名
命名规则: 域名后缀.域名.项目名.模块名(Oracle建议使用公司的域名倒写来作为包名)
如果该模块下还包括多种类型的组件,则还会建立对应的子包
声明位置: 在源文件的首行首句
类全名: 从包开始写起的名称(包名+类名)
###(1):源文件里使用package语句指定包名
(2):class文件必须放在对应的路径下
(3):如果没有显式指定package语句,则处于默认包下(企业开发中,不建议)
--常用的包:
java.包名.*: 代表导入这个包下的所有类
java.lang.* , 因为里面的类型非常常用,因此不需要导包
java.util.* ,此包下封装了java的大量工具类/接口和集合框架类/接口,如:Arrays,List,Set等
java.io.* , 此包下封装了io流的类型
java.net.* , 此包下封装很多关于网络的多种类型
java.text.* , 此包下包含了一些java格式化相关的类
java.sql.* , 此包下包含了java进行JDBC数据库编程的相关类/接口
java.awt.* , 此包下包含了抽象窗口工具集的相关类/接口,这些类主要用于构建图形用户 界面(GUI)程序
java.swing.*, 此包下包含了Swing图形用户界面编程的相关类/接口,这些类可用于构建平 台无关的GUI程序
--import:导包关键字
在class之上,package之下
用于声明类的类全名,在逻辑中就可以使用短的类型名
优点:
可以减少代码的书写
###:import static:静态导入
(1)导入指定类的单个静态成员/方法
--import static 包.子包....类名.变量名|方法名
(2)导入指定类的全部成员变量/方法
--import static 包.子包....类名.*
import和import static的区别:
使用import可以省略书写包名
使用import static 可以连类名也省略
*访问权限控制修饰词:
private,protected,public,默认的(default)
--修饰类时:
外部类:可以使用public,默认的
内部类:可以使用public,protected,默认的,private
--修饰成员变量:四个都可以进行修饰
###:可见性不同
本类中 同包下 不同包子类中 其他
public true true true true
protected true true true
default true true
private true
###: 在实际开发中,成员变量要尽可能的设置成不可见,好处是,
提高代码的安全性,即用private修饰.
为了在其他类中可以对成员变量重新设置值,或者获取值
我们可以定义相应成员变量的公有方法来进行操作.
public void setName(String name){
this.name = name;//修饰成员变量的值
}
public String getName(){
return name;
}
--修饰方法:
与修饰成员变量的可见性一致
--方法的重写:
子类不能重写父类的私有方法
*修饰词final:
最终的,最后的
(1)修饰类:
被final修饰的,不能被继承
意义在于:减少随意扩展功能的可能性
(2)修饰成员变量:
可以直接初始化,也可以在构造器中初始化
不能在其他任何地方再次赋值(只能初始化)
(3)修饰局部变量:
只能初始化一次.(使用前初始化即可)
(4)修饰方法:
不能在子类中重写.(可以避免某些子类"不经意"的重写)