静态方法的学习
2009-05-29 16:48
148 查看
什么是静态方法[转]
静态方法的1个特别作用就是不用创建类的对象,而直接用类里面的方法(public static 2个条件),
例如: class A { public static void b() {..............} }
可以这样直接用: A.b(); 那么在程序中如何可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。 static: 类变量(对象共享)可以用类名,对象名点取,间接使用。 类方法
1)static方法中不能直接使用非静态成员, 因为非静态成员与实例相关,通过对象点取间接使用
2)static方法中不能用this(与实例相关)
3)非static方法中可以使用static成员
静态方法有什么弊端? [转]
问:我翻看一些源码工程时看到几乎没有什么静态方法唯独Ms的SQLHelper中几乎全是静态方法 为什么呢?
答1:在一些系统中使用非常频繁的方法都使用静态方法可以提高系统性能我是这么认为的.
答2:本身不可升级, 重写 这要看一个软件产品的目的是什么了.
答3:为了方便,不用实例化,但这样程序编译运行时就占用了系统资源.
答4:静态的属性和方法在程序启动的时候,就全部装入内存的,而不管这些方法、属性以后有没有用到。即使是没有人再访问程序,这部分内存仍然不会释放还有就是,所有访问者看到的静态属性的数据几乎都是一样的,比如A用户设置了UserName这个属性,B用户访问的时候,得到的UserName仍然是A用户设置的那个。这种特性,如果用在固定数据中,那不会有太大问题,比如连接字符串之类的.
答5:静态方法/数据成员是属于类的,不是属于某一个对象的,因而调用它不需要实例化;静态方法和静态数据成员相当于共享变量。为该类的所有对象所共有,因而在需要共享数据时,定义这种类型时很好的选择。 一但定义一个类后(不一定要实例化对象)该类的所有静态成员就载入内存(并不是程序启动,就装入内存,没有定义该类时它不会载入内存) 静态成员的作用域与它所属的类的作用域相同.
常见的静态方法举例
Main()方法 //作为一个程序的入口我们必须将其定义为static方法,否则执行时必须先实例化包含该方法的类才行,这样显然会存在很多问题。
Console.WriteLine(); //通过调用方式我们可以很明显的发现WriteLine()方法是静态的方法。
Convert.ToString(); //ToString()方法也是直接通过Convert的class type调用的,自然是静态方法了。
静态方法的1个特别作用就是不用创建类的对象,而直接用类里面的方法(public static 2个条件),
例如: class A { public static void b() {..............} }
可以这样直接用: A.b(); 那么在程序中如何可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。 static: 类变量(对象共享)可以用类名,对象名点取,间接使用。 类方法
1)static方法中不能直接使用非静态成员, 因为非静态成员与实例相关,通过对象点取间接使用
2)static方法中不能用this(与实例相关)
3)非static方法中可以使用static成员
静态方法有什么弊端? [转]
问:我翻看一些源码工程时看到几乎没有什么静态方法唯独Ms的SQLHelper中几乎全是静态方法 为什么呢?
答1:在一些系统中使用非常频繁的方法都使用静态方法可以提高系统性能我是这么认为的.
答2:本身不可升级, 重写 这要看一个软件产品的目的是什么了.
答3:为了方便,不用实例化,但这样程序编译运行时就占用了系统资源.
答4:静态的属性和方法在程序启动的时候,就全部装入内存的,而不管这些方法、属性以后有没有用到。即使是没有人再访问程序,这部分内存仍然不会释放还有就是,所有访问者看到的静态属性的数据几乎都是一样的,比如A用户设置了UserName这个属性,B用户访问的时候,得到的UserName仍然是A用户设置的那个。这种特性,如果用在固定数据中,那不会有太大问题,比如连接字符串之类的.
答5:静态方法/数据成员是属于类的,不是属于某一个对象的,因而调用它不需要实例化;静态方法和静态数据成员相当于共享变量。为该类的所有对象所共有,因而在需要共享数据时,定义这种类型时很好的选择。 一但定义一个类后(不一定要实例化对象)该类的所有静态成员就载入内存(并不是程序启动,就装入内存,没有定义该类时它不会载入内存) 静态成员的作用域与它所属的类的作用域相同.
常见的静态方法举例
Main()方法 //作为一个程序的入口我们必须将其定义为static方法,否则执行时必须先实例化包含该方法的类才行,这样显然会存在很多问题。
Console.WriteLine(); //通过调用方式我们可以很明显的发现WriteLine()方法是静态的方法。
Convert.ToString(); //ToString()方法也是直接通过Convert的class type调用的,自然是静态方法了。
相关文章推荐
- ruby学习笔记(8)-"静态方法的4种写法"与"单例方法的2种写法"
- Java学习笔记17. 静态方法和非静态方法
- Effective Java 中文版之学习 第1条:考虑用静态工厂方法代替构造器
- python静态方法、实例方法、类方法的学习
- JavaScript 学习笔记十四 this特性,静态方法 和实例方法,prototype
- Java关键字static,abstract,instanceof使用(静态属性,静态方法,抽象类抽象方法的学习)
- C#:静态字段和静态方法的学习
- Ext学习笔记 - NameSpace,类实例属性,类实例方法,类静态方法
- Java学习笔记1:考虑用静态工厂方法代替构造器
- Java反射05 : 修饰符Modifier静态方法学习示例
- Effective Java 中文版之学习 第1条:考虑用静态工厂方法代替构造器
- Python学习笔记-静态方法和类方法
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- python学习笔记-实例方法、类方法、静态方法、属性方法
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
- JavaSE 学习参考:类的静态成员和静态方法
- C# 静态成员和方法的学习小结
- Java学习:静态方法,静态变量和静态代码块
- Java学习笔记【静态域与静态方法】
- Android学习小记----监听电量的变化(不能静态注册的广播), 保持Service不被杀死的好方法