IDEA 快捷键
- 删除行:Ctrl + Y
- 复制行:Ctrl + D
- 补全代码:Alt + /
- 添加取消注释:Ctrl + /
- 导入该行需要的类:Alt + Enter
- 快速格式化代码:Ctrl + Shift + L
- 快速运行程序:Ctrl + Shift + F10
- 生成构造器:Alt + Insert
- 查看一个类的层级关系:Ctrl + H
- 自动分配变量名:在后面.var
IDEA 模板 / 自定义模板
包
包的三大作用
- 区分相同名字的类
- 当类很多时,可以很好的管理类 [看Java API 文档]
- 控制访问范围
包的基本语法
package com.hspedu;
说明:
- package 关键字,表示打包。
- com.hspedu; 表示包名。
包的本质
实际上就是创建不同的文件夹 / 目录来保存类文件,示意图如下:
包的命名
命名规则
只能包含数字、字母、下划线、小圆点,但不能用数字开头,不能是关键字或保留字。
如:
demo.class.exec1 //错误,包含关键字
demo.12a //错误,数字开头
demo.ab12.oa //正确
命名规范
一般是小写字母 + 小圆点一般是 com.公司名.项目名.业务模块名
比如:
com.hspedu.oa.model;
com.hspedu.oa.controller;
举例:
com.sina.crm.user //用户模块
com.sina.crm.order //订单模块
com.sina.crm.utils //工具类
常用的包
java.lang.* //lang包是基本包,默认引入,不需要再引入
java.util.* //util包,系统提供的工具包,工具类,使用 Scanner
java.net.* //网络包,网络开发
java.awt.* //是做java的界面开发,GUI
如何引入包
语法: import 包;
我们引入一个包的主要目的是要使用该包下的类。
比如:
-
import java.util.Scanner;
// 就只是引入一个类 Scanner。 -
import java.util.*;
// 表示将 java.util 包所有都引入。我们需要使用到哪个类,就导入哪个类即可,不建议使用 * 导入
包的注意事项和细节
- package 的作用是声明当前类所在的包,需要放在类的最上面,一个类中最多只有一个 package。
- import 指令,位置放在 package 的下面,要求在类定义前面,可以有多句且没有顺序。
类定义的进一步完善
访问修饰符
基本介绍
java 提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围):
- 公开级别:用 public 修饰,对外公开
- 受保护级别:用 protected 修饰,对子类和同一个包中的类公开
- 默认级别:没有修饰符号,向同一个包的类公开
- 私有级别:用 private 修饰,只有类本身可以访问,不对外公开
4 种访问修饰符的访问范围:
使用的注意事项
- 修饰符可以用来修饰类中的属性,成员方法以及类。
- 只有默认的和 public 才能修饰类!并且遵循上述访问权限的特点。
- 成员方法的访问规则和属性完全一样。
例子:
在 modifier 包下:
- A 类
package com.hspedu.modifier;
public class A {
//四个属性,分别使用不同的访问修饰符来修饰
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
//在同一个类中,可以访问 public protected 默认 private 修饰的属性和方法
public void m1(){
System.out.println("n1 = " + n1 + " n2 = " + n2 + " n3 = " + n3 + " n4 = " + n4);//属性,都可以访问
}
protected void m2(){}
void m3(){}
private void m4(){}
public void hi(){
m1();
m2();
m3();
m4();//成员方法,都可以访问
}
}
- B 类
package com.hspedu.modifier;
public class B {
public void say(){
A a = new A();
//在同一个包下,可以访问 public,protected 和 默认修饰的属性或方法,不能访问 private 属性或方法。
System.out.println("n1 = " + a.n1 + " n2 = " + a.n2 + " n3 = " + a.n3);//属性,不能访问 a.n4
a.m1();
a.m2();
a.m3();//成员方法,不能访问 a.m4()
}
}
- Test 类
package com.hspedu.modifier;
public class Test {
public static void main(String[] args) {
A a = new A();
a.m1();
B b = new B();
b.say();
}
}
// 只有默认的和 public 才能修饰类
class Tiger{
}
在 pkg 包下:
- Test 类
package com.hspedu.pkg;
import com.hspedu.modifier.A;
public class Test {
public static void main(String[] args) {
A a = new A();
//在不同包下,可以访问 public 修饰的属性或方法
//但是不能访问呢 protected ,默认, private 修饰的属性或方法
System.out.println("n1 = " + a.n1);//属性,不能访问 a.n2, a.n3, a.n4
a.m1();//成员方法,不能访问 a.m2(), a.m3(), a.m4()。
}
}