第二次课后作业:关于静态static
第一部分:
一、概述
static表示“静态”的意思,可以用来修饰成员变量和成员方法。
static的主要作用在于创建独立于具体对象的域变量或者方法
简单理解:
被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
并且不会因为对象的多次创建 而在内存中建立多份数据
二、分析
一般来说,当我们在创建类的时候,就是在描述那个类的对象的外观与一些行为;一般需要用new创建那个类的对象,否则,实际上并没有获得任何对象。当我们执行new来创建对象时,数据空间才能被分配,起内部的方法才能被外部调用!
当我们创建一个class Person{}的时候它是保存在方法区里面的,当new Person();我们就在堆内存中开辟了一个新的内存空间!而对象p是保存在栈内存中的,用来保存在堆内存中创建的空间地址。
静态修饰的属性在方法区中(理解:非静态方法创建的属性可以理解为对象的属性,静态方法创建的属性为类的属性)static属性是共用的。
重点:
静态成员 在类加载时加载并初始化。
无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份(可以理解为所有对象公用)
在访问时: 静态不能访问非静态 , 非静态可以访问静态 !
总结:
当声明一个事物是static时,就意味着这个与或方法不会与包含它的那个类的任何对象实例关联在一起。所以即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。通常,你必须创建一个对象,并用它来访问数据或方法。因为非static域和方法必须知道他们一起运作的特定对象。
第二部分:
代码:
public class xxxxx {
static int ku(int a) {
return a*a;
}
public static void main(String[] args) {
System.out.println("本次:"+ku(3));
}
在没有static时
报错原因是因为没有加上前缀static,不能够通过ku(3)直接引用,如果想调用必须先创建类的对象再从对象中进行调用
加上static后:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!