This的用法
this. ---> 指代对象
- 指代当前类的对象 可以省略的
- 特指成员变量,不可省略.此时this.用来区分同名的局部变量和成员变量
this. ---> 指代方法(构造方法)
- 调用构造器的代码必须要在首行写
- 不允许在普通方法中调用构造器
- 构造器不能和普通方法一样 通过方法名称调用 而是使用this()调用
当this指代对象时
1.指代当前类的对象(可以省略)
//在方法中,可在变量前加上this.来特指成员变量,减少重复定义变量
class person
{
String name;
public void showname(String name)
{
This.name=name;
}
}
2.特指成员变量时(不可省略)
//在非static方法中,可以在引用成员变量时,在变量前加上this来指代该类的对象
class person01
{
String name="张三";
public void showname()
{
System.out.println(this.name);
}
}
class person01
{
String name="张三";
public void showname()
{
System.out.println(name);//此处this可以省略,不会报错
}
}
当this指代构造器时
//在构造器中无参构造器,可在方法体内用this(参数,参数)来调用其他有参构造器
package code;
public class Test_test {
public static void main(String[] args)
{
person01 stu1=new person01();//创建一个新对象
stu1.showInfor();//输出结果为张三 15
}
}
class person01
{
public person01() //创建一个无参构造器,在其中引用有参构造器
{
this("张三",15);//调用有参构造器
}
public person01(String name,int age) //将输入的参数赋值给成员变量
{
this.name=name;
this.age=age;
}
String name;
int age;
public void showInfor() //验证this是否成功完成构造器的指代
{
System.out.println(this.name);
System.out.println(this.age);
}
}
- 调用构造器的代码必须要在首行写
- 不允许在普通方法中调用构造器
- 构造器不能和普通方法一样 通过方法名称调用 而是使用this()调用
Static的用法
static: 意思为静态的 共享的
static ---> 方法
被static修饰的方法属于类,可以用类名直接调用
若没有static则属于对象,需要创建对象调用
static ---> 变量
被static修饰的变量称为类变量,可以被对象调用,
若被改变,则所有对象的类变量都会改变
static的注意事项:
- 在同一个包下的同一个类的static方法可以直接用,不需要输入类名.
在同一个包下的不同类的static方法仍需要用类名去调用
- static修饰的方法,可以通过对象调用,一般不推荐使用
- 在一个static方法中无法使用非static变量
原因:
Static修饰的方法是属于类的,再创建类时,类方法就已经存在了,而非static修饰的成员变量是属于对象的,可能类不创建对象,那么成员变量就无法使用,所以会报错.所以在类方法中无法使用成员变量(有了类,不一定有对象)
因此,可以在非静态方法中使用静态变量(有了对象,就一定有类)