JAVA学习(this关键字,static关键字,主函数)
一、this关键字
this 关键字用来表示当前对象本身,通过 this 可以调用本对象的所有方法和属性
例如:
public class Test1 {
private String name = "狗";
private int age;
public void setName(){
String name = "猫";
System.out.println(this.name); //打印当前对象的成员变量name
}
public static void main(String[] args) {
Test1 T = new Test1();
T.setName();
}
}
可见结果是狗,this关键字可以调用本对象的所有方法和属性
4.1 this关键字的作用:
(1)如果存在同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;
(2)在一个构造函数中可以调用另外一个构造函数初始化对象;但是要注意:
this关键字调用其他的构造函数时,this关键字必须要位于构造函数中的第一个语句;
this关键字在构造函数中不能出现相互调用的情况,因为是一个死循环;
例如:
public class Test1 {
private String name ;
private int age;
Test1(String name){
this.name = name;
}
Test1(String name,int age){
this(name); //this关键字调用其他构造函数
this.age = age;
}
public void setName(){
String name = "猫";
System.out.println(this.name+":"+this.age);
}
public static void main(String[] args) {
Test1 T = new Test1("狗", 5);
T.setName();
}
}
注意:
(1)存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(Java采取的是“就近原则”的机制访问的);
(2)如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么Java编译器会在该变量的前面添加this关键字;
应用举例: 对象T1与对象T2比较年龄
public class Test1 {
private String name ;
private int age;
Test1(String name){
this.name = name;
}
Test1(String name,int age){
this(name);
this.age = age;
}
public void setName(){
String name = "猫";
System.out.println(this.name+":"+this.age);
}
public boolean compare (Test1 T){
if(this.age>=T.age){
return true;
}
else {
return false;
}
}
public static void main(String[] args) {
Test1 T1 = new Test1("狗",5);
Test1 T2 = new Test1("猫",6);
boolean F = T1.compare(T2); //对象T1与传入的参数对象T2比较
System.out.println(F);
}
}
二、static关键字
(1)当类中的某些属性需要被所有对象共享,那么应该将其声明为static属性;
(2)如果一个类中的方法由类名调用,则可以将其声明为static方法。
特点:
1.static是一个修饰符,用于修饰成员
2.static修饰的成员被所有的对象所共享
3.static优于对象存在,因为static的对象随着类的加载就已经存在了
4.static修饰的成员多了一中调用方式,可以直接被类名所调用,类名.静态成员变量
5.static修饰的是共享数据,对象中存储的是特有数据
5.1 成员变量和静态变量的区别
1.生命周期不同:
成员变量随着对象的创建而存在,随着对象的回收而释放
静态变量随着类的加载而存在,随着类的消失而消失。
2.调用方式不同:
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
3.数据存储位置不同
成员变量数据位置存储在堆内存的对象中,所以也叫对象的特有数据
静态变量数据位置存储在方法区(的静态区),所以也叫对象的共享数据
5.2静态变量使用的注意事项
1.静态方法只能访问静态成员(指静态变量,静态函数)(非静态既可以访问静态,又可以访问非静态)
2.静态方法中不可以使用this或者super关键字
3.主函数是静态的
三、主函数的特殊
1.格式是固定的
2.被JVM所识别和调用
public:因为权限必须是最大的
static:不需要对象,直接使用主函数所属类名调用即可
void:主函数不需要具体的的返回值
String[ ] args :这是主函数的参数列表,是一个数组类型的参数,而且元素类型都是字符串类型
同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;

浙公网安备 33010602011771号