111-静态函数和非静态函数的调用问题-【视频讲解】

本文深入解析Java中静态成员变量和静态方法的特性与使用场景,包括它们如何在内存中存储,以及在类与对象间的共享机制。同时,阐述了静态方法调用限制,解释了为何main函数需为静态。

1.1.1. 静态成员变量的使用细节

点击查看视频教程

一个类的静态成员变量在内存中只有一份,所有类都共享这一份数据。

 

1

2

结论:静态成员变量,在类中独一份;所有对象都共享这一份数据;

非静态成员变量,在类的每一个对象中都有一份;不同对象互不影响。

1.1.1. 静态方法的调用问题

结论:在非静态函数中,可以直接使用类中的任何成员(包括静态和非静态的),不能直接调用构造函数;

结论:

静态函数不能调用非静态成员,只能调用静态成员;

原因:

因为静态成员可以直接通过类名调用,和对象无关;不管程序执行时,是否创建了对象,只要类加载进内存了,就都可以使用静态成员;

非静态成员必须依赖对象存在,只有创建了对象,才能使用非静态成员;

所以,在非静态函数中调用静态成员,肯定可以,因为非静态函数都能执行了,肯定就已经创建了对象了;对象都已经创建了,说明类肯定已经加载了;

所以再非静态函数中,可以直接调用静态和非静态的成员;

 

而在静态函数执行的时候,因为静态函数不需要对象,所以此时内存中很可能还没有对象,就不能非静态成员;

 

问题:为什么main函数需要使用static关键字修饰?

因为main函数是用作Java程序的入口的;也就是说Java程序运行是从main函数开始的;

也就是说,运行main函数的时候还没有执行其他代码,也就意味着,这个时候内存中还没有创建任何对象;

既然没有对象,就不能使用非静态的函数;所以main函数只能是静态函数;

 

public static void main(String[] args){

 

}

启动main函数时,给main函数传参,main函数通过参数列表中的字符串数组接受参数:

1.1.1. static使用场景

需求一:使用类描述学生,具有姓名、性别和学号的属性,以及说话和学习的功能;创建学生对象,调用学生睡觉的功能;

 

结论:在一个类中,如果某个函数中没有使用任何非静态成员变量,这个函数可以定义为静态函数;

 

需求二:使用类模拟圆形;并提供获取圆形面积的功能;

实现代码:

结论:如果一个类中的某个变量,需要在类的所有对象中都保持一致,就应该将这个变量声明为静态成员变量,就可以在所有对象中共享;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值