javase进阶导入包访问权限API文档
P517-P527
关键词:import package 导包 访问权限 API文档 Object中的一些方法
package 和import
为什么要使用package?
package是java中的包机制。包机制的作用是为了方便程序的管理。
不同功能的类分别存放在不同的包下。按照功能划分的,不同的软件包具有不同的功能
package怎么用?
package是一个关键字,后面加包名。
例:
Package com.bjpowernode.javase.chapter17;
注意:package语句只允许出现在java源代码的第一行。
包名有没有命名规范?
有
一般都采用公司域名倒序的方式(因为公司域名具有全球唯一性))
包名命名规范:
公司域名倒叙+项目名+模块名+功能名
对于带有package的java程序怎么编译?怎么运行?
采用之前的编译和运行不行了
类名是:com.bjpowernode.javase.chapter17.HelloWorld
编译:
javac -d . HelloWorld.java
更好的方案:
使用IDEA
src里面右键一下package,然后在里面输入com.bjpowernode.javase.chapter17就好了
import:
如果在包里面开发的话,类似想创建Hello World对象
com.bjpowernode.javase.chapter17.HelloWorld hw = new com.bjpowernode.javase.chapter17();
HelloWorld hw2 = nwe HelloWord();也可,是因为这是在同一个包目录下
不同包下,包名可以省略吗?
//错误:找不到符号
如果不导包的话,只能按上面那样写 导入之后,可直接
HelloWorld hw2 = nwe HelloWord();
关于import什么时候用?
A类中使用B类
A类和B类都在同一个包下。不需要import。
A和B类不在同一个包下。需要使用import。
import怎么用
import语句只能出现在package语句之下,class声明语句之上
import com.bjpowernode.javase.chapter17.*;
例子:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//如果不导包,只能这么用
//java.util.Scanner s = new java.util.Scanner(System.in);
//如果导包了,可以直接
Scanner s = new Scanner(System.in);
String str = s.next();
System.out.println(“您输入的字符串是” + str);
}
}
java.lang.*;包下的,不需要导
例如 System String这些
String str = s.next()
使用IDEA的时候可以直接输入要用的,自动会帮你导包
大总结:
package和import
package
第一:package出现在java源文件第一行。
第二:带有包名怎么编译?javac -d . xxx.java
第三:怎么运行?java 完整类名
补充:以后说类名的时候,如果带着包名描述,表示完整类名。
如果没有带包,描述的话,表示简类名。
java.util.Scanner 完整类名。
Scanner 简类名
import
import什么时候不需要?
java.lang不需要。
同包下不需要。
其它一律都需要。
怎么用?
import 完整类名;
import 包名.*;
import java.util.Scanner; // 完整类名。
// 疑问:这样是不是效率比较低。
// 这个效率不低,因为编译器在编译的时候,会自动把变成具体的类名。
import java.util.;
// 不能太懒了
import java.; 这是不允许的,因为在java语言中规定,这里的只代表某些类的名字。
访问控制权限:
1.访问控制权限都有哪些?
4个
private 私有的
protected 受保护的
public 公开的
默认
以上的4个访问控制权限,控制的范围是什么?
private 表示私有的,只能在本类中访问
public 表示公开的,在任何位置都可以访问
protected 表示受到保护的 只能在本类,同包,子类中访问。
默认表示只能在本类,以及同包下访问
范围大小关系:
public >protected>默认>private
访问权限修饰符可以修饰什么
属性4个都能用
方法4个都能用
类 public 和默认能用
接口 public和默认能用
源码及API文档
JDK类库的根类:Object
这个老祖宗类中的方法我们需要先研究一下,因为这些方法都是所有子类通用的,任何一个类默认继承Obejct。就算没有直接继承,最后也会间接继承
Object 中有哪些常用方法
我们去哪里找这些方法呢?
第一种方法:去源代码中(这种方式比较麻烦,源码也比较难)
第二种方法:去查阅java的类库 API帮助文档。
什么是API?
应用程序编程接口。(Application Program Interface)
整个JDK的类库就是一个javase的API
每一个API都会配置一套API帮助文档。
Sun公司提前写好的这套类库就是API。
目前为止我们只需要指知道这几个文档就好
toString()方法
以后所有类的toString()方法是需要重写的。
重写规则,越简单越明了就好。
System.out.println(引用); 这里会自动调用“引用”的toString()方法。
String类是SUN写的,toString方法已经重写了。
equals()方法
以后所有类的equals方法也需要重写,因为Object中的equals方法比较
的是两个对象的内存地址,我们应该比较内容,所以需要重写。
重写规则:自己定,主要看是什么和什么相等时表示两个对象相等。
基本数据类型比较实用:==
对象和对象比较:调用equals方法
String类是SUN编写的,所以String类的equals方法重写了。
以后判断两个字符串是否相等,最好不要使用==,要调用字符串对象的equals方法。
注意:重写equals方法的时候要彻底。
finalize()方法。
这个方法是protected修饰的,在Object类中这个方法的源代码是?
protected void finalize() throws Throwable { }