一.this关键字
1.概念:
this修饰的变量用于指代成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
什么时候用this? 解决局部变量隐藏成员变量
this:代表所在的类对象的引用
方法被哪个对象调用,this就代表哪个对象
2.作用:
1.this关键字可以用来访问本类的属性、方法、构造器
2.this用于区分当前类的属性和局部变量
3.访问成员方法的语法:this.方法名(参数列表)
3.访问构造器语法:this(参数列表);注意只能在构造器使用(即只能在构造器中访问另外一个构造器) 必须放在第一条语句
4.this不能在类定义的外部使用,只能在类定义的方法中使用
3.示例:
public class Person {
String name;
int age;
String gender;
public Person(String name,int age,String gender){
this.name = name;
this.age = age;
this.gender = gender;
}
}
二.static关键字
1.概念:
static被称为静态,可以用来修饰类的成员变量,成员方法,代码块,内部类。
静态成员不依赖于类的实例,被类的所有实例共享,就是说 static 修饰的
方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,静态成员
就会被加载创建
2.特点:
非静态成员方法
1.能够访问静态的成员变量;
2.能够访问非静态的成员变量;
3.能够访问静态的成员方法;
4.能够访问非静态的成员方法;
静态的成员方法
1.能够访问静态成员变量,但是不能够直接访问非静态成员变量
2.能够访问静态的成员方法,但是不能够直接访问非静态成员方法
一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量)。
显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
static可以用来修饰类的成员方法、类的成员变量,另外也可以编写static代码块来优化程序性能
3.示例:
public class Chinese {
String name; //中国人,每个人的名字都不同,需要在每个对象中都有一个name属性
//中国人 国籍都是中国, 此时应该用static修饰,静态属性在内存中只有一份,所有对象共享减少内存用
static String country = "中国";
//使用一个变量来记录此类被创建了多少个对象
static int count = 0;
public Chinese(){
count = count+1;
}
public static void main(String[] args) {
//静态成员随着类的加载而加载的,只要类加载了,静态成员就可以直接被使用了
System.out.println(Chinese.country);
Chinese c1 = new Chinese();
c1.name = "张三";
//c1.country = "中国";
Chinese c2 = new Chinese();
c2.name = "李四";
//c2.country = "中国人";
//System.out.println(c1.country);
// System.out.println(c2.country);
System.out.println(Chinese.country);//建议使用类名访问静态的成员
System.out.println(Chinese.count);
}
}
三.代码块
概念:
public class Demo {
static int a = 10;
{
System.out.println("实例代码块1");
}
{
System.out.println("实例代码块2");
}
static{
System.out.println("静态代码块1");
}
static{
System.out.println("静态代码块,2");
}
public static void main(String[] args) {
System.out.println(Demo.a);
System.out.println(Demo.a);
}
}
结果为:
四.包
1.概念:
在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会
发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。
有时,开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以
便于管理。
为了解决上述问题,Java 引入了包(package)机制,提供了类的多层命名空
间,用于解决类的命名冲突、类管理等问题。
使用package关键字修饰包
每个类属于一个特定的包,所以java中一个类的完整名称等于包名+类名
2.包的作用:
按照不同功能管理类
避免类重名
控制访问权限
3.命名规范:
在包名中,可以使用.号来区分包的级别;包名一般情况下是小写
第一级 指该项目的类型,如com,org,gov等,
第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等
第三级 指项目的名称,如:bcms,oa,erp,cms等
第四级 指项目模块的名称,如:bean,action,exception等
导入外部包的类,关键字“import”
当在一个类中使用其他包中的类时,需要先使用import关键字导入进来. 只有java.lang包中的类比较特殊,使用时不需要导入.
五.访问权限修饰符
1.概念:
访问权限修饰可以修饰类,成员变量,成员方法, 内部类.
2.分类:
访问权限修饰符共有4种:
public : 公共权限 修饰类,成员变量,成员方法, 内部类
protected: 受保护权限 修饰成员变量,成员方法, 内部类
什么都不写 : 默认权限 修饰类,成员变量,成员方法, 内部类
private : 私有权限 修饰成员变量,成员方法, 内部类