Java系列11—包的使用和Object类介绍

包的使用和Object类介绍

一、包的概念

/*
    关于java语言中的包机制
	1、包又称为package,java中引入package这种语法机制主要为了方便程序的管理
	不同功能的类被分门别类放到不同的软件包中,查找比较方便,管理比较方便,易维护
	
	2、怎么定义package?
	 —— 在java源程序的第一行上编写package语句
	 —— package只能编写一个语句
	 —— 语法结构:
	    package 包名;
	3、包名的命名规范
	    公司的域名倒序 + 项目名 + 模块名 + 功能名;
	    采用这种方式的重名几率比较低,因为公司域名具有全球唯一性
	    例如:
		com.bjpowernode.oa.user.service
		org.apach.tomcat.core
	4、包名要求全部小写,包名也是标识符,必须遵守标识符命名规则
	5、一个包将来对应一个目录
	6、使用步骤,以com.bjpowernode.javase.day11为例:
		第一种方式:
			先使用javac Test01.java编译生成javac字节码:指定编码加:-encoding utf-8
			手动创建com/bjpowernode/javase/day11文件夹
			运行:java com.bjpowernode.javase.day11.Test01
		第二种方式:
			javac -d 编译之后存放路径 java源文件的路径
*/
package com.bjpowernode.javase.day11; // 对应四个目录

public class Test01
{
	public static void main(String[] args){
		
	} 
}
package com.bjpowernode.javase.day11; // 对应四个目录
class Test02 
{
	public static void main(String[] args) 
	{
		com.bjpowernode.javase.day11.Test01 t = new com.bjpowernode.javase.day11.Test01();
		System.out.println(t); //com.bjpowernode.javase.day11.Test01@15db9742

		// Test01和Test02在同一个包下,默认在当前包下找,可以使用这种方式
		Test01 tt = new Test01();
		System.out.println(tt); //com.bjpowernode.javase.day11.Test01@6d06d69c
	}
}

package org.apache;

/*
	import语句用来导入其他类,同一个类下的类不需要导入
	不在同一个包下的类需要导入
	
	import 包名
	import 包名.*

结论:什么时候需要import导入
	不在同一个包中
	不在java.lang包下
*/
import com.bjpowernode.javase.day11.Test01;

class Test04 
{
	public static void main(String[] args) 
	{
		com.bjpowernode.javase.day11.Test01 t = new com.bjpowernode.javase.day11.Test01();
		System.out.println(t); //com.bjpowernode.javase.day11.Test01@15db9742

		Test01 tt = new Test01();
		System.out.println(tt); //com.bjpowernode.javase.day11.Test01@15db9742
		
		// java.lang.*不需要导入,系统自动引入
		// lang:language语言包,是java的核心类,不需要手动导入
		String str = "name";
	}
}

二、Java中自带的包

  1. Object类常见方法总结:

    (1)是类层次结构的根类,所有类都直接或者间接的继承自该类。

    (2)构造方法:

    • 有一个无参构造方法。

    (3)成员方法:

    public final native Class<?> getClass()//native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。
    
    public native int hashCode() //native方法,用于返回对象的哈希码,主要使用在哈希表中,比如JDK中的HashMap。
    public boolean equals(Object obj)//用于比较2个对象的内存地址是否相等,String类对该方法进行了重写用户比较字符串的值是否相等。
    
    protected native Object clone() throws CloneNotSupportedException//naitive方法,用于创建并返回当前对象的一份拷贝。一般情况下,对于任何对象 x,表达式 x.clone() != x 为true,x.clone().getClass() == x.getClass() 为true。Object本身没有实现Cloneable接口,所以不重写clone方法并且进行调用的话会发生CloneNotSupportedException异常。
    
    public String toString()//返回类的名字@实例的哈希码的16进制的字符串。建议Object所有的子类都重写这个方法。
    
    public final native void notify()//native方法,并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。
    
    public final native void notifyAll()//native方法,并且不能重写。跟notify一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。
    
    public final native void wait(long timeout) throws InterruptedException//native方法,并且不能重写。暂停线程的执行。注意:sleep方法没有释放锁,而wait方法释放了锁 。timeout是等待时间。
    
    public final void wait(long timeout, int nanos) throws InterruptedException//多了nanos参数,这个参数表示额外时间(以毫微秒为单位,范围是 0-999999)。 所以超时的时间还需要加上nanos毫秒。
    
    public final void wait() throws InterruptedException//跟之前的2个wait方法一样,只不过该方法一直等待,没有超时时间这个概念
    
    

猜你喜欢

转载自blog.csdn.net/qq_42486675/article/details/106511079