在C语言中,我们经常会遇到指针,也常常被指针所困扰,毕竟它经常惹程序员头疼。那么在Java中我们便方便多了,只是因为有了this.
那么this到底能给我们带来多大的便利呢?接下来让我们一起康康。
static作为静态的单词,在Java中又有着怎样的妙用呢?
这里主要给大家讲解this的调用方法和注意事项以及static的妙用。
一、This调用方法
关于this,首先它是一个关键字,是不能当作变量名来使用的;在我们的使用过程中,this一般代表当前对象的一个引用,那么何为当前对象呢?当前变量指的是我们当前在调用的类中方法或属性的对象。
To:this.属性名表示访问本对象自己的属性;this.方法名表示调用当前对象自己的方法。
在上面我们也看到this的两种简单用法,即访问本类属性变量和调用本类方法。
1.访问本类属性
当对象的一个属性被方法或者构造器的参数屏蔽时,我们就会用到this.属性来进行调用。
实例如下:
package self6;
public class Person {
String name;
int age;
public Person(String name,int age ) {
this.name =name;
this.age=age;
}
public static void main(String[] args) {
Person p1 = new Person("bob",1);
Person p2 = new Person("xiaobob",11);
System.out.println("输出name:"+p1.name+"和年龄"+p1.age);
System.out.println("输出name:"+p2.name+"和年龄"+p2.age);
}
}
运行结果如下:
2.调用本类方法
这里我们简单将调用构造函数和方法放在了一起,但是我们要知道的是构造函数并不是方法!
使用this关键字调用本类的构造函数需要注意的有:this关键字可以调用类的重载构造函数;this关键字必须位于构造函数的第一行。
调用构造函数实例如下:
package self6;
public class Person{
String name;
int age;
public Person(int age){
this.age=age;
}
public Person(String name){
this(1);
this.name=name;
}
public static void main(String[] args){
Person p1 = new Person("bob");
Person p2 = new Person("bob1");
System.out.println("输出name:"+p1.name+"和年龄:"+p1.age);
System.out.println("输出name:"+p2.name+"和年龄:"+p2.age);
}
}
运行结果:
调用本类方法实例如下:
public class Student{
public void eat(){
System.out.println("执行eat");
}
public void talk(){
this.eat():
System.out.println("执行talk");
}
}
二、注意事项
三、static关键字
按照字面意思,static是静态的意思,在Java中,我们最常用的便是用static修饰变量和方法,下面将会讲到与之相关的用法:
说到静态变量,我们在Java中也会经常说到实例变量,那么它们又会有怎样的区别呢?
区别如下:
说完静态变量,这里我们来了解一下静态方法,我们将用static修饰的方法称之为静态方法,也叫类方法。在静态方法中我们是不能访问类的非静态成员变量和非静态的成员方法;而且在静态方法中是不能出现this关键字的;使用的两种方法:1.通过类名调用;2.通过对象名.静态方法调用。
静态块:
静态方法在类加载时执行,并且只执行一次;静态代码块在类中可以出现多个。
关于静态块、匿名构造函数和构造函数在Java中的执行顺序我们可以用程序来演示出来:
package self7;
public class staticdend {
int age;
String name;
public staticdend() {
age=10;
name="Bob";
System.out.println("这是构造函数");
}
static {
System.out.println("这是静态块");
}
{
System.out.println("这是匿名构造函数");
}
public static class Test{
public static void main(String[] args)
{
staticdend p1 = new staticdend();
staticdend p2 = new staticdend();
staticdend p3 = new staticdend();
staticdend p4 = new staticdend();
}
}
}
运行结果:
继续干Java~