this关键字的作用:
1、在Java中任何方法中都一个this变量,这个变量用来记录调用这个方法的那个对象。
this指向调用这个方法的那个对象。
2、可以使用this区别成员变量和局部变量同名问题。
3、调用构造方法
代码:
boolean compareByAge( Person otherPerson)
{
/*书写具体的比较方式:
if(this.age == otherPerson.age )
{
return true;
}
使用静态修饰成员方法注意事项:
1、静态方法可以被类名调用,因为静态修饰的类中的内容是在使用这个类的class文件时,
这些静态的内容就被加载到内存中,并且已经初始化完成,就可以执行开始运行了。
2、静态修饰的方法,只能调用静态方法,而不能去调用非静态的方法。
静态的是在类加载的时候就准备完成,可以通过类名直接去调用的方法,
而非静态的方法需要创建本类的对象来调用。而在类加载的时候并不一定就会创建出对象,
没有对象,非静态的方法就无法运行。
3、非静态的方法可以调用静态方法。
非静态方法是通过对象调用的,既然已经有了对象了,说明当前这个类早已经加载完成了,
那么静态的已经准备就绪。
4、静态仅仅是改变了方法的调用方式,静态的方法可以被类名调用,也可以被对象调用。
5、记住;任何方法要运行,必须被调用。方法不调用是不会运行的。
6、静态方法中不能使用this关键字,也不能使用super关键字。
this表示当前调用这个方法的那个对象,而在静态方法运行的时候,是不需要对象的
Main方法是静态的:
public static void main(String[] args)
当我们要想让某个类独立运行的时候,需要在这个类中添加main方法,
而程序要运行其实是我们在dos窗口中输入了
java类名 回车 JVM启动
JVM就会去加载当前指定的这个名称的那个class文件
把这个class文件加载完成之后,JVM就开始尝试去运行这个class文件,
JVM就会使用当前指定的 类名.main 运行这个类中的main方法
而一个方法可以通过类名调用,要求这个方法必须是静态的。
voidmain方法是程序的入口,主要是由JVM调用,只要让程序运行起来就可以,而不需要在main方法
运行完成之后给JVM返回任何结果,那么就把返回值类型书写成void类型
main固定写法的方法名,表示程序的入口
String[]args main方法接收的参数,JVM在调用main方法的时候,传递的数据存放在args这个字符串数组中
JVM再调用方法的时候,其实是这样调用:
类名.main(new String[0]);
int[]arr = new int[0];
静态成员变量和非静态成员变量区别:
1、在内存中的存储位置不同:
静态成员变量存放在方法区的静态区中
非静态成员变量需要随着对象的创建才能在堆中出现,没有对象,就没有非静态成员变量
2、在内存中的生命周期不同:
静态成员变量是在类加载的时候随着类加载就存放在方法区的静态区中,直到class文件被从方法区卸载掉,那么这个静态
成员变量才会消失。
非静态的成员变量随着对象的创建在堆中出现,随着对象的消失就消失了。
当所有的程序中没有任何引用再指向这个对象时,这个对象就变成垃圾,等待垃圾回收器收走。
3、它们在内存中出现的时间不同:
静态成员变量是在类加载的时候就出现了
非静态成员变量是在对象创建的时候才出现
4、变量的初始化时间不同:
静态成员变量是在类加载的时候随着类的加载就在方法区的静态区中出现,并且紧接着就会给起进行初始化
非静态成员变量是在创建对象的时候出现,先要默认初始化,然后依赖于构造方法进行显示初始化。
静态成员方法是可以调用静态的成员变量。
静态代码块
代码块代表一段独立的代码,并使用大括号把这段代码包裹起来。
{
代码
}
代码块。
静态代码块:
在代码的前面加上静态的关键字:
static {
代码;
}
静态代码块是在类加载的时候就会运行的代码块。这个代码块不需要认为的去调用它,就会自动的运行。
当我们在启动程序的时候,如果程序在启动完成就要加载完部分数据,作为程序启动的初始数据,这时就可以把加载这部分初始数据的代码书写在类中的静态代码块中。
构造代码块
构造代码块:
构造方法它是在创建对象的时候会执行的方法,并且是给特定的对象进行初始化的方法。
如果在类的成员位置上直接书写{} 这段代码就称为构造代码块
构造代码块是在创建对象的时候执行的代码块。而静态代码块只是在类加载的时候运行一次,以后不再运行。
如果在一个类中有多个构造方法,当多个构造方法中有相同的初始化代码时,而这些代码如果在每个构造方法中
都书写的话,会导致代码严重的重复,就会可以把这部分重复的代码提取到构造代码块中。
静态代码块:是在类加载的时候运行,并且只运行一次,因此把静态代码块称为给当前这个类进行初始化的。
构造代码块:是在每次创建对象的都会执行的代码块,因此把构造代码块成为给所有对象进行初始化的代码块。
局部代码块
局部代码块:
它的格式:
{
代码;
}
它如果写在的类的成员位置上,就变成构造代码块,如果把它写在方法体中,或者写在静态代码块,或者写在构造代码块中
就变成局部代码块了。
局部代码块仅仅是为了限定某些变量的作用范围,即就是限定某个变量的生命周期
当我们在书写代码的时候,如果某些变量在程序某些位置上使用,在这个位置后不再使用,这时可以使用局部代码块把这些封装起来,
限定这个变量的生命周期。
总结常用关键字和类中成员位置可以写内容
学习面向对象中常用的关键字:
public 权限关键字,表示权限最大,在任何地方都可以访问被public修饰的成员
private 私有关键字,被它修饰的成员,只能在本类中访问。
this 表示当前某个对象。
new 创建对象的
static 它主要是用来修饰类中的成员(成员变量、成员方法),它不能修饰构造方法。构造方法是创建对象时候自定执行方法
被静态修饰的内容,如果没有被私有修饰,那么在本类以外的地方都可以通过类名调用。
class 定义类
一个类的成员位置上都能书写什么东东?
成员变量
成员方法
构造方法
静态代码块
构造代码块
一个类的成员位置上是不能书写普通的语句,打印语句,循环语句,判断语句等都不可以。