java单例继承_java-静态-单例-继承

a2e662636034cf07d9106deac3d92662.png

一.静态

1.1 静态方法

创建对象就是为了产生实例,并进行数据的封装。

而调用功能时,确没有用到这些对象中封装的数据。

该对象的创建有意义吗?虽然可以编译并运行,但是在堆内存中空间较为浪费。

不建议创建对象。那该怎么调用呢?java中的解决方案就是 使用 static关键字,这是一个成员修饰符。

被静态static修饰的方法除了可以被对象调用外,还可以被类名调用。

静态看上去很美,是不是所有的方法都静态呢?不行!

那么什么时候需要将方法定义成静态的呢?

定义功能时,如果功能不需要访问类中定义的成员变量(非静态)时,该功能就需要静态修饰

1.2 静态方法使用注意事项:

1,静态方法不能访问非静态的成员。

但是非静态可以访问静态成员的。

说明:静态的弊端在于访问出现局限性。好处是可以直接被类名调用。

2,静态方法中不允许出现this,super关键字。

为什么不行呢?

1.3 原理揭秘:

1,静态是随着类的加载就加载了。也是随着类的消失而消失了。

2,静态优先于对象存在,被对象共享。

3,因为静态先存在于内存中无法访问后来的对象的中的数据,所以静态无法访问非静态。

而且内部无法书写this。因为这时对象有可能不存在,this没有任何指向。

1.4 静态的主函数:

public static void main(String[] args)

public : 权限最大。

static :不需要对象。直接用给定的类名就可以访问该函数了。

void : 不需要返回值。

main : 函数名,该名称是固定的。

(String[] args) : 主函数的参数列表:字符串属性类型的参数。

args : arguments :参数。该名称就是一个变量名。

class MainDemo

{

public static void main(String[] args)

{

System.out.println(args);//[Ljava.lang.String;@1afae45//根据这个结果,说明jvm传递了一个字符串类型的数组实体。

System.out.println(args.length);//0,得出结论 jvm传递的是 new String[0];

for (int i = 0; i

{

System.out.println(args[i]);

}

}

void show()

{

System.out.println("show run");

}

}

1.5静态变量

什么时候定义静态变量呢?

当该成员变量的值,每一个对象都一致时,就对该成员变量进行静态修饰。

静态变量和成员变量的区别:

1,所属范围不同。

静态变量所属于类,成员变量所属对象。

静态变量也称为:类变量;成员变量也称为实例变量。

2,调用不同。

静态变量可以被对象和类调用(一般都用类名调用)

成员变量只能被对象调用。

3,加载时期不同。

静态变量随着类的加载而加载。

成员变量随着对象的加载而加载。

4,内存存储区域不同。

静态变量存储在方法区中。

成员变量存储在堆内存中。

class Circle

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值