package和import如何导包访问权限控制关于API文档的一些内容2021-07-24java学习日记

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 { }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值