你不知道的Static
2024-10-09 04:49:41
Static静态字段,静态方法,静态代码块
壹 简介
一些场景下会要求一个类的多个实例共享一个成员变量;有时候想定义一些不和具体对象关联、不需要new就调用的方法
举例:Console类的WriteLine,MessageBox的Show。这个时候就要使用静态。
所谓静态方法、静态成员是类的方法、类的成员,他不归属于任何一个对象。因此不用new出来,直接类型.静态方法()就能用了。
贰 特征
1、static变量不需要new就可以直接通过类名调用。static变量是共享的内存空间,非static变量则是对象隔离的。
2、static 方法中无法使用this关键字,因为static独立于对象存在,不是任何人的唯一。
3、static成员中只能访问static成员,不能直接访问非static成员。非static成员可以访问static成员。
叁 静态代码块
1. 示例
class
MyTest
{
static
MyTest()
{
Console.WriteLine(
"静态代码块"
);
}
public
MyTest()
{
Console.WriteLine(
"构造方法"
);
}
}
MyTest t1 =
new
MyTest();
MyTest t2 =
new
MyTest();
2. 说明
1.静态代码块,在类第一次被使用的时候执行一次,只要用到类,哪怕没new对象(比如只是声明变量)也会被执行,且只执行一次。
2.静态代码块,在构造函数执行之前执行。
3. 试题
public
class
MyJingTaiDaimaKuai
{
public
static
int
i = test1();
//最开始执行
public
int
age = test2();
//new的时候先执行成员变量的初始化,再执行构造函数
static
MyJingTaiDaimaKuai()
{
Console.WriteLine(
"静态代码块"
);
//再执行
}
public
MyJingTaiDaimaKuai()
{
Console.WriteLine(
"构造函数"
);
}
public
static
int
test1()
{
Console.WriteLine(
"test1"
);
return
3;
}
public
static
int
test2()
{
Console.WriteLine(
"test2"
);
return
333;
}
}
MyJingTaiDaimaKuai a1 =
new
MyJingTaiDaimaKuai();
Console.WriteLine(a1.age);
MyJingTaiDaimaKuai a2 =
new
MyJingTaiDaimaKuai();
Console.WriteLine(a2.age);
/* 对以上代码描述如下*/
/*
* 1.只要接触类,最先执行的是类中的静态的成员变量。
* 2.其次执行的是静态代码块。
* 3.静态成员变量的声明和定义仅在首次加载的时候执行一次。
* 4.“动态”成员变量在构造函数之前执行。
* 5.“动态”成员变量在每次实例化对象时候都执行。
*/
最新文章
- TCP三次握手和四次挥手状态变迁解析
- jquery键盘事件总结
- Monkey测试3——Monkey测试结果分析
- [CC]CC插件初探
- linux下恢复误删除的文件方法(ext2及ext3)
- SQL Server UDF用户自定义函数
- iOS9的那些坑 — — WeiboSDK registerApp启动就崩溃
- MYSQL查询一周内的数据(最近7天的)、最近一个月、最近三个月数据
- swoole 弹幕系统
- 创建多线程的第二种方法实现Callable接口
- PhoenixFD插件流体模拟——UI布局【Resimulation】详解
- ubuntu安装命令
- [Full-stack] 网页布局艺术 - Less
- go程序性能测量和分析
- ubuntu16.4+nginx+uwsgi+Django 部署上线
- delphi 消息的使用
- STM32f103的数电采集电路的双ADC的设计与使用
- WPF流程图制作系列相关基础一
- JAVA中的数据存储(堆及堆栈)
- HashMap 不能并发
热门文章
- 【leetcode】215. Kth Largest Element in an Array
- [转帖]Linux 的UTC 和 GMT
- ASP.NET存储Session的StateServer
- Java知识点整理(三)
- 详解免费高效实用的.NET操作Excel组件NPOI(转)
- jquery不能是使用普通的for循环 因为普通的for循环通过下表获取对象 如果通过下表获取对象的话 会转成dom对象
- java实现PV操作
- 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)
- WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)复现
- Amphetamine的cf日记