包机制
包要注意的事项:
1.一个java文件如果有了包语句,那么该类文件的完整类名是“包名+类名”;
2.一个java文件只能有一个package语句。
3.package语句必须位于java文件中的第一个语句。
如何使用java的包机制?
- 使用package关键字。
- package 包名。
基本原则:需要将类文件切实安置到其所归属的package对应的相对目录下。
假设Hello.java文件在D:\Java\下。
package A; public class Hello{ public static void main(String args[]){ System.out.println("Hello World!"); } } D:\Java>javac Hello.java 此程序可以编译通过.接着执行。 D:\Java>java Hello 但是执行时,却提示以下错误! Exception in thread "main" java.lang.NoClassDefFoundError: hello (wrong name: A/Hello)
错误原因分析:
在当前目录下找不到A目录,更加找不到A目录下面的Hello.java文件。
解决办法:
- 自己在当前目录下新建一个A目录。
- 执行java A.Hello命令。(包其实就是文件夹).
存在的问题:使用包机制的话,我们是否每次都要自己创建一个文件夹呢?
解决:
在编译的时候则可以指定类文件存放的文件夹。
javac -d . Hello.java -d后面跟着就是包名,指定包存放的路径。
包机制引发的问题:
有了包之后访问类每次都需要把包名和类名写全。
解决办法:使用import语句。
格式:import 包名.类名。
package com.boxiaoyuan.aa; public class Demo01 { public int add(int a, int b) { return a + b; } }
package com.boxiaoyuan.bb; import com.boxiaoyuan.aa.Demo01; public class Demo02 { public static void main(String[] args) { Demo01 demo01 = new Demo01(); System.out.println(demo01.add(12, 13)); } }
注意细节:
- 如果想使用一个包中的许多类时,不需要多条的导入语句,可以使用 “*”号通配符代表所有的类。
- 使用*时不能导入包中的子类包的class文件。
- import语句可以是多条。
访问修饰符
用来控制类,属性,方法的可见性的关键字称为访问修饰符。
访问控制修饰符 | 同类 | 同包不同类(不含子类) | 同包子类 | 不同包不同类 (不含子类) | 不同包子类 |
public | √ | √ | √ | √ | √ |
protected | √ | √ | √ | -- | √(注意) |
没有访问控制修饰符 | √ | √ | √ | -- | -- |
private | √ | --- | --- | -- | -- |
protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中;default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。
常用快捷键
快捷键的配置,常用快捷键:
内容提示:
Alt + /
例如:System.out.println(); 语句 ,syso再按住alt 和/ 就会补全。
快速修复:
Ctrl + 1
例如:程序有编译期异常,或者需要导包,使用该快捷键会有相关提示。
导包:
Ctrl + shift + O
如果需要导入的包比较多,可以一次性全部导入,也会将多余的包清理掉。
格式化代码块:
Ctrl + Shift + F
代码位置调换:
Alt+上下键
添加/除去单行注释:
Ctrl+/
添加/除去多行注释:
Ctrl+Shift+/
Ctrl+Shift+\
大小写转换:
更改为大写 Ctrl+Shift+X
更改为小写 Ctrl+Shift+Y
复制行:
Ctrl+Alt+向下键
查看源代码:
1、Ctrl+单击 需要查看源码的类
2、Ctrl+Shift+T
删除:
1.Ctrl + D 删除当前行