静态成员变量

Java初始化顺序

被刻印的时光 ゝ 提交于 2020-03-17 04:43:29
Java初始化顺序 1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test{ static Sample sam= new Sample("静态成员sam初始化"); Sample sam1= new Sample("sam1成员初始化"); static { System.out.println("static块执行"); if (sam== null )System.out.println("sam is null"); sam= new Sample("静态块内初始化sam成员变量"); } Test() { System.out.println("Test默认构造函数被调用"); } } //主函数 public static void main(String str[]) { Test a= new Test(); } 输出结果为: 静态成员sam初始化 -----静态成员初始化 static块执行 -----静态块被执行 静态块内初始化sam成员变量 ----静态块执行 sam1成员初始化 -----普通成员初始化 Test默认构造函数被调用

std::tr1::function std::tr1::bind

冷暖自知 提交于 2020-02-08 22:59:34
在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。可以参考Scott Meyers. <<Effective C++ (3rd Edition)>>. Item 35.下面具体说明其使用方法。 一、指向全局函数或静态成员函数时 因为在本质上讲全局函数和静态成员函数没有区 别,使用方法上除了静态成员函数在引用时要在前面加域作用符className::外,没有其它任何区别,事实上全局函数也有可能放入命名空间,或者使用 全局域作用符,例如 nameSpace::function() 或::function,这样不仅本质上相同,形势上也与静态成员函数一致了,所以它们是没有区别的,放到一起讨论。 这种情况比较简单,只需要定义一个类型 #include <iostream> #include <iomanip> #include <tr1/memory> #include <tr1/functional> typedef std::tr1::function<void (int)> HandlerEvent; 然后再定义一个成员变量 class Sharp{ public: HandlerEvent handlerEvent; };

Java入门part5--类和对象

▼魔方 西西 提交于 2020-02-07 05:13:33
类和对象 oop语言的三大特征?(OOP 面向对象的程序设计语言 Object-oriented-program) 继承 封装 多态 什么是类?什么是对象? 类是一类对象的统称,对象是类的具体化的实例。在现实世界中类就相当于设计图纸,而对象就是根据图纸建造出来的房子。 面向对象 关注对象 即参与过程所涉及到的主体 处理大问题 面向过程 关注过程 即整个过程中涉及的行为 处理小问题 类和类的实例化 A . 如何产生一个类 //产生类的语法 class 类名{ field;//成员字段 即类中的元素 method;//成员方法 } 比如 class Person{ //属性 成员变量 实例成员变量 存放在对象内 public String name; public int age; //static修饰的 静态成员变量(也叫类变量)编译时已产生 属于类本身且只有一份 放在方法区 public static int count = 10; //被static和final同时修饰 静态常量 属于类本身 只有一份 后续不可更改 放在方法区 public static final int SIZE = 20; //实例成员常量 被final修饰 也属于对象 放在哪个区不一定 public final int SIZE2 = 30; //构造方法 public Person(String

static静态成员

こ雲淡風輕ζ 提交于 2019-12-25 21:16:34
## static静态成员 对于一个类中,有一些数据是共用同一份的,这时使用static关键字进行修饰,就可以起到节省内存的作用。static关键字一旦使用,那么这个成员就不属于new出的对象,而是属于原本所在的类中。 注意: 1.程序执行时,会先加载static修饰的变量和方法,所以 静态不能调用非静态。而非静态可以调用静态 。 2.静态不能使用this,因为静态是类属性,而this是在创建对象时,对象会把地址值赋给this。 3.静态方法推荐直接用“类名称.静态方法名”的方式书写,如下例,method.methodStatic()实际上在编译时,会变为MyClass.methodStatic(),所以为了加以区分,静态方法用“类名称.静态方法名”的方式书写。 //静态方法推荐直接用“类名称.静态方法名”的方式书写 MyClass . methodStatic ( ) ; MyClass method = new MyClass ( ) ; method . method ( ) ; method . methodStatic ( ) ; //不推荐 static可以修饰:1.成员变量,2.成员方法 静态代码块存在唯一性,即被多次调用时,也只在第一次的时候执行。 public class Person { public Person ( ) { System . out .

抽象类也有构造函数

℡╲_俬逩灬. 提交于 2019-12-07 06:55:39
抽象类是不可以直接被我们new出来,但是可以被它子类的构造函数调用 抽象只是代表它希望有人继承它,实现它的某些方法,并不是说,它永远不能被使用,类的初始化顺序你要清楚, 父类的静态成员,静态初始化块,子类静态成员,静态初始化块,父类成员变量,父类构造函数,子类成员变量,子类构造函数 来源: CSDN 作者: klarclm 链接: https://blog.csdn.net/klarclm/article/details/7954768

对象的创建

主宰稳场 提交于 2019-12-01 10:01:55
a) 遇到一个新类时,会进行类的加载,定位到class文件 b) 对所有静态成员变量初始化,静态代码块也会执行,而且只在类加载的时候执行一次 c) New 对象时,jvm会在堆中分配一个足够大的存储空间 d) 存储空间清空,为所有的变量赋默认值,所有的对象引用赋值为null e) 根据书写的位置给字段一些初始化操作 f) 调用构造器方法(没有继承) 来源: https://www.cnblogs.com/Yanss/p/11677824.html

黑马程序员_日记8_JavaSE阶段性习题练习及复习

橙三吉。 提交于 2019-11-26 05:25:04
 ——- android培训 、 java培训 、期待与您交流! ———- JAVASE阶段性习题练习及复习 这篇博客主要是把毕老师出的前四大练习题全部做了一遍,经我反复测试和修改后写得一些JAVASE基础总结。我的代码都是可以直接编译运行的。 练习一(4题) 原题带我的代码 注意:练习一是一个题目+一个我的代码 已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。 90~100为等级A,80~89为等级B,70~79为等级C, 60~69为等级D,0~59为等级E。 要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。 例如:当成绩为100时,该学生的等级时A。 需求分析: 1.定义一个功能,通过给定的分数,获得对应的等级 2.明确功能的结果:等级。char。 3.有没有未知的内容:分数。int //解法一: class Demo { public static void main (String[] args) { graceDegree( 100 ); graceDegree( 0 ); graceDegree(- 100 ); } static void graceDegree( int grace) { if (grace < 0 || grace > 100 ) System. out .println( "Wrong " ); else if