this关键字
表示当前对象
在编程时,为了区分成员变量和局部变量,在编码时,可以使用this关键字进行指示,使用this调用的是成员变量或者成员方法
this在实际运行时,表示当前正在调用此方法的对象
作用:
使用this关键字引用成员变量
使用this关键字引用成员方法
使用this关键字引用构造方法
代码示例:
package day06;
public class Student {
String name;
int number;
String gender;
static String country = "中国";
public Student(String name,int number,String gender){
this.name = name;
this.number = number;
this.gender = gender;
}
public void study(){
System.out.println(this.name+"好好学习");
this.test();
}
public void test(){
System.out.println(this.name+"认真考试");
}
public Student(){
this("zzz",333,"男");
}
}
package day06;
public class StudentText {
public static void main(String[] args) {
Student student1 = new Student("何非",222,"男");
Student student2 = new Student("李木子",111,"女");
Student stu3 = new Student();
student1.study();
student2.test();
stu3.study();
System.out.println(Student.country);
System.out.println(student1.country);
System.out.println(student2.country);
System.out.println(stu3.country);
}
}
static关键字
被称为静态,可以用来修饰类的成员变量、成员方法、代码块、内部类
类——class——静态代码 只有一份存在
静态——在内存中只有一份存在
static修饰的变量就是静态变量(类变量,与类一样,只有一份)
当所有类的对象的某个属性值相同时,可以把他定义为静态的(例如,中国人类 国籍都是中国)
当类被加载时,静态的成员就会被加载,先于对象创建存在
修饰的成员,被所有对象共享
静态的先执行,可以被类、对象访问,非静态的只能通过对象访问
static关键字修饰的方法就是静态方法,属于类,可以通过类名直接进行访问
在静态方法中,只能访问静态的变量,不能使用非静态的成员,因为静态的成员随着类的加载而加载,类的加载先于对象
当方法中不需要使用非静态的成员变量时,我们可以将方法设计为静态方法,不需要创建对象,直接通过类名访问
非静态成员方法中,可以使用静态的成员变量
代码块
定义在类中,类似于一个没有名字的方法
因为代码块没有名字,只能在满足条件时,自动由系统调用
分为实例代码块、静态代码块
实例代码块:在创建对象时,被自动调用执行(构造方法是在创建对象后被执行,因此实例代码块在构造方法前执行)
静态代码块:在类被加载时,被自动调用执行
类什么时候被加载:(类只会被加载一次)
1.通过类名访问类中静态成员时,类会被加载
2.在一个类中使用main方法,也会加载类
3.创建对象也会加载类
如果有多个实例代码块或静态代码块
代码示例:
public class DaiMaKuai {
{
System.out.println("实例代码块1");
}
{
System.out.println("实例代码块2");
}
static{
System.out.println("静态代码块1");
}
static{
System.out.println("静态代码块2");
}
public static void main(String[] args) {
}
}
package day06;
public class DaiMaKuaiText {
public static void main(String[] args) {
new DaiMaKuai();
DaiMaKuai st=new DaiMaKuai();
}
}
包
(1)项目越复杂,所含的类越多,可能会出现同名类的问题
(2)不同类的功能不同,需要分类管理
综上,为了解决这些问题,Java引入了包机制
包称为类的命名空间,可以理解为一个文件夹,是类名的组成部分
类名(全类名)= 包名(地址)+ 类名简称
不同包中,便可以出现同名的类
命名规范:
第一级:项目类型 com,org,gov,edu等
第二级:公司名称 oracle,sun,huawei,ali等
第三级:项目名称 oa,erp,cms等
第四级:功能模块名称
在类中,使用其他包中的类时,需要使用import关键字导入类的地址(全类名)(java.lang包中的类比较特殊,使用时不需要导入)
类中可以定义:
1.成员变量(非静态成员变量属于对象,每个对象中都有一份;静态的成员变量属于类,和类一样,只有一份)
2.成员方法(非静态的成员方法,属于对象,可以使用非静态的成员变量和静态的成员变量,静态的成员方法只能使用静态的成员变量)
3.构造方法(在创建对象后,为成员变量进行初始化,有无参,也有有参的)