一、this
(1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。
(2)什么时候使用this呢?
A:当局部变量和成员变量重名的时候,可以用this进行区分。
B:this调用成员方法
C:构造函数中使用this
**this() 必须放在第一行。
同下面的道理:
Person(String name){
this.name = name;
}
Person(String name,int age){
this(“张三”);
this.name = name;
this.age = age;
}
Person p = new Person(“lisi”,20);
二、static关键字
(1)静态的意思。可以修饰类的成员(成员变量和成员方法);
(2)静态成员的特点:
A:随着类的加载而加载,随着类的消失而消失,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。建议用类名.调用
(3)什么时候需要使用static修饰呢?
当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
简单说:共性用static修饰,特性不用static修饰。
(4)注意事项
A:静态方法只能访问静态成员的。
B:静态方法中不能使用this,super关键字。
C:main是静态的。
**格式如下:
public static void main(String[] args){//new String[0]
}
***由于它被jvm调用,所以权限要足够大,所以用public权限修饰符。
***为了jvm可以不用创建对象直接调用它,所以用static修饰。
***void jvm不需要任何返回。但是方法体结尾默认有return;
***main jvm只认识这个名字。
***String[] 有可能需要传入参数。
***args 字符串数组的名字,只要符合标识符的命名规则可以随便起
面试题
public class Test{
private static int i=1;
public int getNext() {
return i++;
}
public static void main(String[]args) {
Test test = new Test();
Test testObject = new Test();
test.getNext();
testObject.getNext();
test.getNext();
System.out.println(testObject.getNext());
}
}
对于使用static关键字修饰的变量来说,该变量是属于类本身的,不属于特定的某个类对象。因此new出的两个对象test和testObject是对同一个变量i进行的操作。对于i++来说,是先引用再自加;对于++i来说是先自加,再引用。程序段中调用了4次getNext()方法,根据先引用再自加的原则,最后打印出4。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!