1、删除光标当前行,ctrl+d
2、向下复制光标所在当前行,ctrl+alt+向下光标,如果后面加的向上光标即向上复制光标所在当前行
3、补全代码,alt+/
4、添加注释与取消注释,ctrl+/,第一次按下即进行注释,第二次按下即取消,也可进行块的选中
包
包的作用:
1、区分相同名字的包
2、当类很多时,可以很好的管理类
3、控制访问范围
包的本质分析:
实际上是创建不同文件夹或目录来保存类的文件
包的命名
命名规则:
只能包含数字、字母、下划线、点且不能用数字开头,不能是关键字或保留字
命名规范:
一般是小写字母+点一般为:
com.公司名.项目名.业务模块名
常用包:
java.lang.* //lang包为基本包,默认引入,不需要重复引入
java.util.* //util包为系统开发包,工具类
java.net.* //网络包,做网络开发
java.awt.* //做java的GUI界面开发
这里的*号为通配符,如果像上述包名直接进行引用则相当于将该包内的所有类进行导入
包的导入:
import 包名;
尽量用到哪个包就进行哪个包的导入,少使用’*‘的导入方式
案例:利用包内的方法对数组进行排序
int []arr= {-1,-3,5,1,6,7};
//新建一个已知数组;
Arrays.sort(arr);//导入java.util.Arrays这个包即可使用该Arrays
//类中的方法sort,调用一次后该数组就排序完成了
for(int i=0;i<arr.length;i++) {//进行输出
System.out.print(arr[i]+" ");
}
输出结果:
包的注意事项以及细节:
1)package的作用是声明当前类所在的包,需放在class的最上面,一个类中最多只有一句package
2)import指令位置当放在package的下方,在类定义前面,而且有多句且没有顺序要求
访问修饰符:
java提供四种访问修饰符号控制方法和属性(成员变量)的访问权限(范围):
a: 公开级别:使用public修饰,对外公开
b: 受保护级别:使用protected修饰,对子类以及同一包中的类进行公开
c: 默认级别:没有修饰符号,向同一个包的类进行公开
d: 私有级别:使用private修饰,只有类本身可以进行访问,不对外公开
访问范围:
访问级别 | 修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | X |
默认 | 无修饰符 | √ | √ | X | X |
私有 | private | √ | X | X | X |
使用的注意事项:
1)修饰符可以用来修饰类中的属性,成员方法以及类
2)只有默认以及public才能修饰类,并遵循上述的访问特点
3)成员方法的访问规则与属性完全一样
面向对象三特征:封装、继承、多态
封装:将抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(方法),才能对数据进行操作
封装的好处:
a: 隐藏实现的细节
b: 可以对数据进行验证,保证安全合理
封装步骤:
1)将属性进行私有化
2)提供一个公共的set方法,用于对属性判断与直接赋值
3)提供一个公共的get方法,用于获取属性的值
案例:在一个程序中:不能随便查看人的年龄,工资等隐私,并对年龄进行合理的验证。合理即设置,否则赋默认值,年龄必须在1-120,工资不能直接看,name长度为2-6之间。
class Person{
public String name;//姓名
private int age;//年龄
private double salary;//工资
private String job;//岗位
//进行封装:设置get以及set方法
public void setName(String name) {
if(name.length()>2 && name.length()<=6) {//进行名字的逻辑判断,满足则进行赋值,不
//满足则赋默认值
this.name=name;
}else {//设置默认值
System.out.println("姓名长度不合法,将会设置默认值");
this.name="佚名";
}
}
public String getName() {
return name;
}
public void setAge(int age) {
if(age > 1 && age <= 120) {//进行年龄的逻辑判断,满足则进行赋值,不满足则赋默认值
this.age=age;
}else {//进行赋默认值
System.out.println("年龄不在1-120之间,将会设置默认值");
this.age=18;
}
}
public int getAge() {
return age;
}
public void setSalary(double salary) {
this.salary=salary;
}
public double getSalary() {
return salary;
}
public void setJob(String job) {
this.job=job;
}
public String getjob() {
return job;
}
public String info() {
return "信息为: name="+name+" age:"+age+" salary ="+salary+" job ="+job;
}
}
新建一个对象,再调用这些方法进行验证。
封装与构造器:
考虑到使用构造器的时候就不会进行逻辑检测,可以进行构造器设置:
public Person() {
}
public Person(String name,int age,double salary,String job) {
setName(name);
setAge(age);
setSalary(salary);
setJob(job);
}