面向对象之this关键字,static关键字 main

this指的是什么?

this其实是指本类的对象,本类对象可以创建很多,具体代表的是哪个对象呢?哪个对象在调用this所在的函数,this就代表哪个对象

什么时候使用this?

定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象,只要是本类功能内部使用到了本类对象,都可用this表示

class Person2
{
  private String name;
  private int age;
   Person2(String name,int age)
   {
	   //此时这里要用this,因为局部变量name ,age与成员变量名称相同,如果此处 不用this代表着用的还局部变量的name
	   this.name=name;
	   this.age=age;
   }
}
构造函数中的相互调用 this

this只能在构造函数的第一行,因为初始化要先执行

class Person2
{
  private String name;
  private int age;
   Person2(String name,int age)
   {
	   //此时会调用 用带有一个参数的构造参数
   	   this(name);
	   this.age=age;
   }
   //无参数构造函数
   Person2()
   {
	   
   }
   //有参构造函数
   Person2(String name)
   {
	   this.name=name;
   }

static关键字

修饰符,只能用于修饰成员 (成员变量,成员函数)

如果被static修饰的话这个成员变量/成员函数就不在堆内存 中了,而在方法区中(共享区,数据区)

方法区中存储的是什么 :静态,类中的方法,

静态除了被对象调用外,还可以直接被类名调用

静态有特点:

1.随着类的加载而加载,静态会随着类的消失面消失,说明它的生命周期最长

2,被所有对象共享

3.优先于对象存在,静态是先存在的,对象是后存在的,

4.可以被对象调用

实例变量和类变量的区别:

1,存放的位置

      类变量(静态)随着类的加载而存在于方法区中

      实例变量随着对象的建立而存在于堆内存中

2.生命周期

      类变量生命周期最长,随着类的消失而消失

      实例变量生命周期随着对象的消失而消失

静态使用的时候需要注意的地方

1,静态方法只能访问静态成员

2,非静态方法可以访问非静态成员 ,可以访问静态成员,因为静态优先于对象存在,所以能够访问

3.静态中不能定义this,super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this

静态的优点:

对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用

静态的缺点:

生命周期过长 ,访问出现了局限性,静态只能访问静态

什么时候会使用到静态?

当对象中有共享的数据时,是数据(值),而不是属性

当函数中没有出现对象的特有数据就可以将这个函数定义成static

简单的小示例

public class ObjectStatic 
{
    public static void main(String[] args)
    {
       //因为类成员方优先于对象存在所以此时可以用类名.方法调用
    	Student.classInfo();
    	Student s=new Student("zhangsan",20);
    	s.classInfo();
    	s.info();
    	
    }
}

class Student
{
	//学生的姓名 
    private String name;
    //学生的年龄
    private int age;
    //学生的班级,此时每个学生都属于同一个班级,可以将这个成员变量设置成static
    private static  String Class1="1023";
    
    Student(String name,int age)
    {
    	this.name=name;
    	this.age=age;
    }
    
    public void info()
    {//这里使用到了对象的特有数据函数不能声明为static
    	System.out.println("name:"+name+"age:"+age);
    }
    public static  void classInfo()
    {
    	System.out.println("class:"+Class1);
    }
}

主函数 main

是一个特殊的函数,程序的入口,可以被虚拟调用

主函数的定义:

public :该函数的访问权限最大

static:主函数随着类的加载而加载已经存在

void:主函数没有具体返回值

main:是一个特殊的单词,可以被虚拟机识别,不是关键字














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值