精华内容
下载资源
问答
  • 静态变量初始化顺序1.简单规则首先先看一段最...Java静态变量初始化遵循以下规则:静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值初始化的值。声明完毕后,再按声明的顺序依次设置为初始化的...

    静态变量初始化顺序

    1.简单规则

    首先先看一段最普遍的JAVA代码:

    ?

    这里先猜下控制台输出结果是什么?

    OK, 或许你已经猜到下面了结果了,那么你还是熟悉Java的。

    复制代码 代码如下:

    0 1

    如果你不明白是为什么会输出上面的结果,那么我来告诉你。

    Java静态变量初始化遵循以下规则:

    静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。

    声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过。

    看了这个就会明白,原来Test.a的值变化了三次。

    声明时设置为0>>Test1::Test1里设置为1>>Test.a初始化为0

    2.复杂规则

    明白了这个,请再看下面的代码。

    ?

    这个你还能猜到输出结果吗? 我是在一边测试一边写的,所以我没猜出来.哈哈

    控制台输出结果为:

    ?

    这个结果你没猜到吧,哈哈.

    要一句一句的讲解程序执行结果,还是要很到的篇幅的.这里就直接写出Java静态变量初始化遵循的规则了。

    第一段的规则依然有效,只是不健全。

    只有主动请求一个类,这个类才会初始化,仅包含静态变量,函数,等静态的东西.

    继承关系时,先初始化父类,后初始化子类.

    静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值.

    声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过.

    当初始化A.b=B.a时,暂停初始化A.b,设置当前类为B,跳到步骤3,并执行.

    当初始化B.plus = new A时,暂停初始化B.plus,实例化A并赋值给B.plus.

    当A的构造函数里需要获得B.a的值时,B.a还初始化并处于暂停初始化状态,直接取B.a的当前值,不再等待B.a初始化.

    final,静态常量其实是遵循普通静态变量的初始化的,但是在编译时,编译器会将不可变的常量值在使用的地方替换掉.可以用Java反编译工具查看.

    static数据的初始化

    加上static限定的字段,是所谓的类字段,也就是说这个字段的拥有者不是对象而是类。无论创建多少对象,static数据都只有一份。

    类内总是先初始化static字段,再初始化一般字段。接着初始化构造器。但是如果不创建这个类的对象,那这个对象是不会进行初始化的,并且只执行一次。

    如下面的代码,在StaticInitialization类中,先初始化static Table table = new Table();,然后才去初始化Table对象,不然是不会被初始化的。

    ?

    输出:

    ?

    显示的静态初始化(也就是静态块)

    把多个初始化语句包在一个static花括号里,叫做静态块,其实就是把多个static合在一起写了,本质是一样的。只有首次创建对象或者首次访问类的字段时才会执行,而且仅仅一次。

    ?

    输出:

    ?

    非静态实例初始化

    这个没什么好讲的,就是普通初始化,按顺序执行,可以多次执行。

    ?

    ?

    展开全文
  • 不小心就被师父看到了,然后发了一个截图问我,你这==1是什么意思? 我解释说是第一次加载页面的时候还没有数据可以初始值,如果直接用Stage的数字的话,将来如果后台变了就会没有效果了,我用1传到后台,在判断...

    这里写图片描述

    昨天花时间改了一下项目中筛选条件的样式和代码,然后提交到git上面去了。
    不小心就被师父看到了,然后发了一个截图问我,你这==1是什么意思?
    

    这里写图片描述

        我解释说是第一次加载页面的时候还没有数据可以初始值,如果直接用Stage的数字的话,将来如果后台变了就会没有效果了,我用1传到后台,在判断赋值一遍,至少不会错。 
        他说那我还不如用Stage对应的数字,至少不要if ,看你好像好多地方写了if(我们公司讨厌if else ,这是低质量代码的表现,只用一个if还可以容忍,虽然我也讨厌if,但是我还是用了)。
        我答,但是那样会很别扭啊,如果改动了就要全部改。
        然后又说了一堆,就是用==1压根就看不懂要表达的意思,我觉得用Stage数字一样看不懂啊,而且像-1,0, 1这样的临界数字会好一点,但是我没有说了,因为我知道这也不是最好的办法。
        然后师父过来帮我看了一下,说你到前端声明一个全局的用常量值,以后有变动也只要改这一个文件。我这样一想,是好一点,总比页面去判断等于1 好啊 。
        然后按Shared下面建了一个Stage-init.profile.ts的文件 如下:
    

    //公用的Stage
    var Stage: {
    routeAssigned: number,
    contentVerified: number,
    shippingPlanning: number,
    preInterventionNeeded: number,
    loadBalanced: number,
    };
    this.Stage = {
    routeAssigned: 120,
    contentVerified: 116,
    shippingPlanning: 117,
    preInterventionNeeded: 5,
    loadBalanced: 140,
    };
    export { Stage };
    在每个页面中继承并调用:

    import { Stage } from ‘../shared/stage-init.profile’;

    赋初始值:

        this.criteria.stage = Stage.routeAssigned;
    

    这样就搞定了,省掉了一大堆判断代码,有6,7个页面都要if判断一下也是心累的。

    反思: 在决定写这个的时候,我只想到了样式和代码的统一,确没有想到基本一样的代码,是不是可以抽出来,共用。比如用==1这样的写法,也是自己想不到更好的办法,觉得能看起来统一就行。但是我没有去跟同事讨论或者问问同事有没有更好的想法,自己一意孤行的就做了,结果很简单的一个问题,白白浪费了几个小时。以后一定要多跟同事交流,把自己的想法表达出来。

    展开全文
  • 展开全部一维数组初始化就是给一维数组赋初值,作用就是申明的这个一维数组有了一个e5a48de588b63231313335323631343130323136353331333365646231确定的值,从而可以得到具体应用。一个数组申明后,如果没有赋值,...

    展开全部

    一维数组初始化就是给一维数组赋初值,作用就是申明的这个一维数组有了一个e5a48de588b63231313335323631343130323136353331333365646231确定的值,从而可以得到具体应用。一个数组申明后,如果没有赋值,那么只是分配了内存空间,没有具体的值,也可以说是空,其组成是“\0”也就是NULL,无法在实际中使用。

    C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

    二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。  目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准。

    起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。

    展开全文
  • 问:定义了一个Point类 如下:class Point{public: Point():_x(0),_y(0){}; Point( int x, int y ):_x(x),_... 不知道类构造函数中:_x(x),_y(y)是什么意思? 答:这是对类的成员变量进行初始化 一般我们进行成员变量

     问:定义了一个Point类 如下:

    不知道类构造函数中:_x(x),_y(y)是什么意思?

     

    答:这是对类的成员变量进行初始化

     

    一般我们进行成员变量初始化用两种方法

    第一种是通过在构造函数内赋值

    第二种是使用初始化列表

     

     

    这两种用法是有区别的

    一、在有些情况下,必须使用初始化列表。特别是const和引用数据成员被初始化时。

     

    二、是从效率方面来说的,对于内置类型或复合类型,差异不会太大,但对于非内置数据类型,差异还是很明显的

    如我们再给Point类添加一个新的string类型的成员变量

     

    构造函数内赋值进行初始化

    _name = name 这个表达式会调用string类的缺省构造函数一次,再调用Operator=函数进行赋值一次。所以需调用两次函数:一次构造,一次赋值

     

    用初始化列表进行初始化

     

    _name会通过拷贝构造函数仅以一个函数调用的代码完成初始化

     

    即使是一个很简单的string类型,不必要的函数调用也会造成很高的代价。随着类越来越大,越来越复杂,它们的构造函数也越来越大而复杂,那么对象创建的代价也越来越高,所以一般情况下建议使用初始化列表进行初始化,不但可以满足const和引用成员的初始化要求,还可以避免低效的初始化数据成员。

    展开全文
  • 今天在一个ts代码示例里看到了如下语法: baseDir!...这个flag检查并确保一个类在初始化时,每一个属性都必须在构造器内初始化,或者在属性定义时赋予初始值。 官网的实例: class C { foo: numb...
  • python class中为什么要有初始化init

    千次阅读 2019-12-25 14:53:25
    初始化类,意思就是我们根据这个类,去创建一个特定实例的时候,需要运行的一个函数,其作用为整个类提供一个全局变量,为后面的函数提供变量。 例如: class Circle(object): def __init__(self, r): # 初始化一...
  • 所以为什么初始化这个问题就迎刃而解了! 既引用则需要有一块空间;光声明定义一个变量不行,要赋值,因为赋值了才会开辟空间;给一个变量赋值 这叫做初始化。 那out呢 它的意思是 在函数...
  • C# new和初始化

    2019-09-27 12:23:15
    2.初始化是什么意思。 3.变量声明后和变量赋值为null或变量调用了new的区别。 4.字段不是变量。 一、new的三个步骤: 1 在栈或者堆中开辟空间,空间的大小由类决定,进行内存空间指向。 2 在开辟的控件...
  • 操作一般不会分配内存(在声明初始化时会分配),memcpy()函数的字面意思就是内存拷贝,把一块内存中的数据拷贝给另一块内存,这个过程中有新的内存分配了。     memcpy从名字上也可以理解出来把内存拷贝,也...
  • 作为指针, p代表的意思是地址。 而&a表示的也a的地址, 二者相同, 所以需要p=&a; 定义的时候 int *p=&a; 这时,*和int一起,表示p的类型的。 赋值其实还是p=&a;
  • 展开全部Python中,2113__init__()方法所谓的对象的“构造函5261数”,负责在对象初始化时进行一4102系列的构建操作1653假设有如下类:class worker:pass在Python中,对某个类实例进行成员赋值,可以创建不存在的...
  • 构造函数后,接单冒号表示初始化列表。具体形式为对于class TEST,存在成员变量int a,b,c...需要注意的初始化的顺序并不是依赖于a,b,c在初始化列表中出现的顺序,而是与类中定义a,b,c的顺序相同。如果TEST定义为cla
  • 易语言中的静态变量是什么意思

    千次阅读 2013-03-21 10:06:03
    如果局部变量在定义时此属性被设置为假,那么运行应用程序时,此变量在其所在子程序开始被执行前自动分配存储空间并初始化,在所在子程序执行完毕后自动释放所分配的存储空间。也就是说,变量的存储空间仅在其所在子...
  • 指针也一种变量:指针存放的地址 不同于整形变量int型存放的整数... //定义并初始化一个指针变量 ** ** 但是不能: *p = &a; //这典型的错误的写法 为什么不能这么写:因为 * 只有在定义一个指针变量的
  • 没有初值是不是自动给它赋值(网上好像有这么讲的),那什么时候在内存开辟空间呢(这个图上的生存期从main函数就开始)? 这些可能涉及计算机组成原理,我没学过,希望哪位高手能详细解释下,万分感谢!!!
  • 版权声明:本文为博主原创文章,转载请注明出处,谢谢!版权声明:本文为博主原创文章,转载请注明出处:...也就是说如果有一个String初始化的值位”Hello”,如果把它赋值为”Hello World!”,那么不是在原内...
  • 当我们动态创建可包含Name属性的元素时,不能简单的使用赋值element.name = "..."来添加其Name, 而必须在创建Element时,使用document.createElement...这是什么意思啊?看下面的例子就明白了。 <script langua...
  • 初始化对象是什么意思? 直接将参数写到想要实现功能的成员方法中,运行的结果和有构造方法的一样,代码也没看到简化在哪儿,所以我就不明白构造方法的意义是什么?   问题一回答:对象初始化时候提供默认值,然后...
  • 关于实例对象

    2021-02-06 23:15:33
    1、什么是实例对象 ①类对象的抽象。对象类的具体实例,需要通过类来创建 ②创建对象的过程称为实例 ——意思是抽象的,需要通过创建对象(实例对象)来使用类的功能 2、实例对象的两个步骤 ①使用...
  • Python语言最常用的对象是变量和常量,常量的值是字面意思,其值...变量的数据类型是由初始化的常量来指定的,其类型根据赋值是可变的,这就是Python的动态类型模型。Python语言的特点是:Python是强类型的语言,只...
  • 那么不能修改什么意思呢?tuple 不可变指当你创建了 tuple 时候,它就不能改变了,也就是说它也没有 append(),insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值。那么为什么要有 tuple 呢?...
  • matlab的常量和变量&&运算符

    千次阅读 2016-09-08 20:31:11
     c语言是强类型语言,意思是定义变量时不用强调类型,赋得值是什么类型变量就是什么类型。而c语言定义变量时要强调类型。 3.变量的初始化  (1)用赋值语句初始化  如 “a=7”  (2)用input...
  • 程序员一直在机械的写程序,对于很多问题,那脑子里有个大概的思路,但是并不能准确的解释出来,今天看书遇到了const和readonly的用法就把它记录下来,方便大家遇到时能够共同参考。...2,初始化赋值不...
  • 那么不能修改什么意思呢?tuple 不可变指当你创建了 tuple 时候,它就不能改变了,也就是说它也没有 append(),insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值。那么为什么要有 tuple 呢?...
  • 意思是:指针可以被重新赋值以指向另一个对象,但是引用则总是在初始化时被指定的对象,以后不能改变,但是指向的内容可以改变。(下面这个规则的理解)string str1 = "a";string str3 = "b";string &str2 = str...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

初始化赋值是什么意思