今天学习了类与对象,其中关于this关键字的用法,static静态变量与静态方法,以及引用传递需要特别注意一下。
首先是引用传递:
在本段程序中可以通过进行外部对类对象的属性赋值来更改,同时也可以通过外部方法来对类对象属性进行修改。最后的结果为:
值得注意的地方为:如果将temp的类型改为String类型,结果仍然被改变。String在堆空间内是无法被修改的,但是在类对象内,每次对属性的修改都会再次开辟新空间,如果仅仅在主方法内进行字符串的修改,其输出结果是不会有变化的:
下面为this关键字的使用方法:
1.表示类中的属性和调用方法。
2.调用本类中的构造方法。
3.表示当前对象。
例如在构造方法中
public people(String name,int age){
this.name = name;
this.age = age;
}
通过这种方法才可以达到赋值的目的,this来表示本类中的属性,没有this关键字则无法进行赋值。
用this关键字可以调用本类中的构造方法。
在上面的构造方法的基础上再添加一个无参数的构造方法。
public people(){
System.out.println("无参数构造函数");
}
想要在构造方法是调用此无参构造方法,需要将原构造方法改写为:
public people(String name,int age){
this(); //一定要把调用写到最开始,否则编译错误
this.name = name;
this.age = age;
}
第三种用途就是用来表示当前对象:
Static关键字的使用:
被Static修饰的成员被称为静态成员,不用static修饰的叫做实例成员。
Static变量相当于全局变量,被保存在公共存储单元中,类中若含有static变量,必须要独立于方法之外。
与静态变量相同,用static修饰的方法是属于类的静态方法:
1.非static方法是属于某个对象的方法。static方法是属于整个类的,被所有对象共用。
2.static方法不能操纵和处理属于某个对象的成员,只能访问static成员变量或调用static成员方法,不能访问实例变量和实例方法。
3.在静态方法中不能使用this或super。
4.调用静态方法是,最好使用类名直接调用。