this关键字
在编程时,为了区分成员变量与局部变量,在编码时,可以使用this关键字进行指示
使用this调用的是成员变量或成员方法,还有构造方法
this在实际运行时,表示当前正在调用此方法的对象
this表示当前对象
public class Student {
int num;
String name;
String gender;
public Student(){
//赋予默认值
this(1002,"李四","女"); //无参的构造方法
}
public Student(int num,String name,String gender){
this.num=num;
this.name=name; //这样就区分了成员变量和局部变量. 这种情况占了this使用情况的大多数!
this.gender=gender;
}
public void study(){
System.out.println(this.name+"好好学习");
this.exam(); //this调用成员方法
}
public void exam(){
System.out.println(this.name+"认真考试");
}
public static void main(String[] args) {
Student stu=new Student(1001,"张三","男");
stu.study();
stu.exam();
Student stu1=new Student();
System.out.println(stu1.num);
stu1.num=1003;
System.out.println(stu1.num);
}
}
static关键字
static修饰的变量就是静态变量(类变量,与类一样,只有一份) 当所有类的对象的某个属性值相同时,可以把它定义为静态的 当类被加载时,静态成员就会被加载,先于对象创建存在 静态先执行,可以被类,对象访问,非静态只能通过对象访问
public class Chinese {
/*
static表示静态,可以修饰成员变量,成员方法,代码块,内部类
*/
String name;
static String country="中国"; //静态成员建议直接使用类名进行访问
public static void main(String[] args) {
Chinese chinese1 = new Chinese();
chinese1.name="张三";
Chinese chinese2=new Chinese();
chinese2.name="李四";
System.out.println(Chinese.country); //静态成员因为在内存中只有一份,所以建议直接使用类名进行访问
System.out.println(chinese1.country);
}
}
代码块
代码块: 定义在类中,类似于一个没有名字的方法, 因为代码块没有名字,只能在满足条件时,自动由系统调用 分为 实例代码块 :在创建对象时,被自动调用执行 {
} 静态代码块 :在类被加载时,被自动调用执行 static{
}
静态代码块: 类什么时候被加载: 通过类名访问类中的静态成员时,类会被加载 在一个类中使用main方法,也会加载类 创建对象也会被加载 类只被加载一次 如果有多个实例代码块或多个静态代码块,按照先后顺序执行 代码块先于构造方法执行
public class Demo {
int n;
public Demo(){
n=3452;
}
//实例代码块
{
System.out.println("Demo实例代码块1");
}
{
System.out.println("Demo实例代码块2");
}
//静态代码块
static {
System.out.println("Demo静态代码块3");
}
static {
System.out.println("Demo静态代码块4");
}
public static void test(){
System.out.println("静态test");
}
public static void main(String[] args) {
Demo.test();
new Demo();
Demo.test();
new Demo();
}
}
运行结果:
包
为了解决一些类管理的问题,java引入包机制 包称为类的命名空间(可以理解为一个文件夹) 是类名的组成部分 类名(全类名) = 包名(地址) + 类名简称
一个类属于不同的包,就可以避免同名类问题. 按照不同功能管理类 控制访问权限
包名单词全部小写
包命名: 第一级: 项目类型 com,org,gov,edu... 第二级: 公司名称 sun,oracle 第三级: 项目名称 oa erp 第四级: 功能模块名称 在类中使用其他包中的类时,需要使用import关键字导入类的地址(全类名) java.lang包中的类不需要导入
访问权限修饰符 访问权限修饰符用来修饰类中的成员,控制是否可以被访问
从大到小 public: 公共权限.在系统中哪里都可以访问, 可以修饰 类(包含内部类),方法(构造方法,成员方法),成员变量
protected:受保护权限,在同包类,本类,不同包子类可以访问 可以修饰 内部类,方法(构造方法,成员方法),成员变量
:默认权限,在本类,同包类访问 可以修饰 类(包含内部类),方法(构造方法,成员方法),成员变量
private:私有权限,只能在本类中使用 可以修饰 内部类,方法(构造方法,成员方法),成员变量