静态类

常量、字段、和方法

岁酱吖の 提交于 2019-11-30 19:51:39
1、常量 在C#中以下类型是基类型,可用于定义常量:Boolen、Char、Byte、SByte、Int16、Uint16 、Int32、UInt32、Int64、UInt64、Single、Double、Decimal和 String。 C#也可以定义非基元类型的常量变量,前提是把值设为null: using System; public sealed class SomeType { // SomeType is not a primitive type but C# does allow // a constant variable of this type to be set to 'null'. public const SomeType Empty = null; } 因为常量不会被改变,所以总是被视为类型定义的一部分,也就是说它被视为静态成员,而不是实例成员。 常量定义后从不变化的特性有以下需要注意的: 1、因为不会被改变,代码引用常量符号时,编译器在定义常量的程序集的元数据中查找该符号,提取常量的值,将值嵌入生产的IL代码中。 2、因为常量值内嵌到IL代码中,所以在运行时不需要分配内存。 3、又因为常量不需要分配内存,所以不能获取常量的地址,也不能以传递引用的方式传递常量。 这些限制意味着不能很好地支持跨程序集的版本控制。 2、字段 字段是一种数据成员

类的静态成员

霸气de小男生 提交于 2019-11-30 16:48:34
类的静态成员 面向对象的设计方法兼容数据的保护和共享,静态成员的提出是为了解决不同对象之间数据共享问题的。例如要统计人员个数,出现次数等等都需要用到静态处理。静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括静态数据成员和静态成员函数)。 首先我们要搞懂 静态变量生存的周期 静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。基于这个类的所有对象只有一个静态成员变量的拷贝,所以一个函数结束时,静态变量仍然在内存中的静态存储区里保存,直到脚本结束才会被注销。 1.静态数据成员 如果我们需要面向对象中“类属性”,这个属性为整个类拥有,不属于其中某一个对象,从而体现了整个类的数据共享。此时我们就用用static声明静态成员。 由于静态数据成员不属于任何一个对象,我么可以用类名对他进行访问,一般用法是 类名::标识符 ,但是在类中也要进行定义性声明。 类的静态数据成员需要类之外定义是因为要单独给他们分配空间。 例如书上5-4中具有静态成员的point类 #include<iostream> using namespace std; class point { public: point(int x=0,int y=0):x(x),y(y){ count++; } point(point &p); ~point()

springboot实战之获取工具类bean

会有一股神秘感。 提交于 2019-11-30 13:38:15
  这次的实践经验的起因在于,在开发中,我想在工具类中使用配置文件的变量值。通常使用@value注解,这个只能在spring中管理的bean总获取。之前我也很疑惑,为什么之前的开发人员会在SpringUtil类上加入@Component注解,今天又遇到这种情况,其原因完全理解了。 @Component public class SpringUtil implements EnvironmentAware { private static Environment env; public static String getProperty(String key){ return env.getProperty(key); } @Override public void setEnvironment(Environment environment) { injectEnvironment(env); // 因为spring会创建这个接口的实现类的一个对象,所以实例方法调用静态方法,只是目前这个类我们是看不到的 } public static void injectEnvironment(Environment env){ SpringUtil.env = env; // 这其实是实例方法调用静态方法 } }   这个原理很简单,就是实例方法调用静态方法,所以还是生成了对象

File 类,FileInfo 类 Directory 类,DirectoryInfo 类 区别

我们两清 提交于 2019-11-29 22:31:53
File 类 是一个静态类。提供用于创建、复制、删除、移动和打开文件的静态方法。 FileInfo 类 是一个密闭类。提供创建、复制、删除、移动和打开文件的实例方法。 由于所有的 File 方法都是静态的,所以如果只想执行一个操作,那么使用 File 方法的效率比使用相应的 FileInfo 实例方法可能更高。 File 类的静态方法对所有方法都执行安全检查。 如果打算多次重用某个对象,可考虑使用 FileInfo 的实例方法,而不是 File 类的相应静态方法,因为并不总是需要安全检查。 Directory 类 与 DirectoryInfo 类 和 File 类,FileInfo 类的情况相同。 来源: CSDN 作者: yaoxtao 链接: https://blog.csdn.net/YaoXTao/article/details/8283665

java中的内部类

妖精的绣舞 提交于 2019-11-29 15:41:06
概述 将一个类定义在另一个类的里面,里面的那个类就称为内部类(内置类,嵌套类) 分析事物A时,发现该事物A描述中还有事物B,而且这个事物B还在访问被描述事物A的内容,将事物B定义成内部类来描述。 特点 内部类可以直接访问外部类中的成员; 外部类要访问内部类,必须建立内部类的对象; 举例: package innerdemo; public class InnerDemo1 { public static void main(String[] args) { Outer.Inner in = new Outer().new Inner(); // 直接访问内部类的方法 in.show(); Outer o = new Outer();// o.method(); } } class Outer{ private int num = 3; // 内部类 class Inner{ void show(){ num = 100; System.out.println("内部类run..."+num); } } public void method(){ Inner in = new Inner(); //外部类要访问内部类,必须建立内部类的对象; in.show(); } } 修饰符 直接访问外部类中的内部类中的成员:(不多见) 外部类名.内部类名 变量名 = new 外部类名().

[Java] Java内部静态类

拜拜、爱过 提交于 2019-11-28 16:09:52
Java内部静态类 Java内部静态类和静态方法实际上属于完全不同的两个意思。静态成员或者静态变量一般指的是只有一个,静态内部类并没有这个属性。 在Java当中内部类可以声明为static的,或者普通的内部类。 两者的区别表现在下面。 一、普通的内部类拥有外部类的引用,因此外部类的成员和方法对于内部类是可见的;但是static内部类,不能看到外部类的属性和方法,这样就增加了封装性和代码的可读性(和外部类没有多大的关系) 二、两者的声明方式是不一样的。 对于普通内部类是依赖于外部类对象实例,因此需要首先外部类声明之后,才能声明内部类;static内部类可以跳过外部类的声明。 1.普通内部类 Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); 2、静态内部类 Outer.Inner inner = new Outer.Inner(); 来源: http://www.cnblogs.com/deepblueme/p/4796797.html

java静态内部类的作用

末鹿安然 提交于 2019-11-28 15:20:16
需要了解2个概念:内部类和静态修饰符static 1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。 2)静态都是用来修饰类的内部成员的。比如静态方法, 静态成员 变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+ 静态成员 名直接获得。 这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。 以下举例说明怎么使用: Student类有个叫School的内部类(非静态) Student stu = new Student(); stu.School sch = new stu.School(); sch就是School的一个对象。 假如School是内部静态类: Student.School sch = new Student.School(); 来源: https://www.cnblogs.com/jinsheng1027/p/11412083.html

单元测试不可测试那些类(无抽象、静态类、静态方法)

点点圈 提交于 2019-11-28 00:14:17
实际上“单元测试不可测试那些类(无抽象、静态类、静态方法)”是个伪命题,因为事实是:无抽象、静态类、静态方法都是不可单元测试的。那么,如果我们要写出可测试的代码,又要用到这些静态类等,该怎么办,实际上我们需要两个步骤: 1:为它们写一个包装类,让这个包装类是抽象的(继承自接口,或者抽象类,或者方法本身是Virtual的); 2:通知客户端程序员,使用包装类来代替原先的静态类来写业务逻辑; 实际上,微软也是这么干的,我在上一篇博文《 单元测试WebForm的UI逻辑及文件上传 》写到,最典型的不可测试类,那就是WebForm架构的网站中,对Response等的模拟。查看Response这个类: namespace System.Web { public sealed class HttpResponse { ... } } 很明显,如果我们在某个WebForm的后台方法中,直接使用它的话: protected void Page_Load(object sender, EvengArgs e) { this.Response.Write("test u"); } 该后台代码逻辑就无法进行单元测试了,因为类似MOQ的框架所依赖的是代码本身具有可被重写行,如果某个类本身是静态的,就无法在运行时用模拟类替换掉实际类。 所以,写一个包装类吧,我们看到微软为Response写了一个包装类

Java内部类

不问归期 提交于 2019-11-26 11:52:00
根据定义的方式不同,内部类分为 静态内部类、成员内部类、局部内部类、匿名内部类 四种。 1.静态内部类   定义在类内部的静态类,就是静态内部类。 1 public class Out { 2 private static int a; 3 private int b; 4 public static class Inner { 5 public void print() { 6 System.out.println(a); 7 } 8 } 9 }   1)静态内部类可以访问外部类所有的静态变量和方法,即使是private的也一样。   2)静态内部类和一般类一致,可以定义静态变量、方法、构造方法等。   3)其他类使用静态内部类需要使用“外部类.静态内部类”方式。如下所示:Out.Inner inner = new Out.Inner();  inner.print();   4)Java集合类HashMap内部就有一个静态内部类Entry。Entry是HashMap存放元素的抽象,HashMap内部维护Entry数组用来存放元素,但是Entry对使用者是透明的。像这种和外部类关系密切的,且不依赖外部类实例的,都可以使用静态内部类。 2.成员内部类   定义在类内部的非静态类,就是成员内部类。成员内部类不能定义静态方法和变量(final修饰的除外)。这是因为成员内部类是非静态的