精华内容
下载资源
问答
  • java对象创建实例化和初始化的区别 实例化:在堆中申请内存空间,属性都是默认值 初始化:给对象的属性进行赋值操作或者初始化方法的调用

    java对象创建实例化和初始化的区别

    实例化:在堆中申请内存空间,属性都是默认值
    初始化:给对象的属性进行赋值操作或者初始化方法的调用

    展开全文
  • 这里写自定义目录标题C++中初始化和赋值的区别 C++中初始化和赋值的区别 区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。 int a=12 ; //...

    C++中初始化和赋值的区别

    区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。
    int a=12 ; //初始化, copy 0X000C to a
    a =12 ; //赋值, copy 0X000C to a
    1、静态变量在定义时未显式地指定初值,则自动初始化为相应类型的零值(数值型为0或0.0;字符型为’\0’),即静态变量能够自动初始化(有称之为隐式初始化),且静态变量只初始化一次。静态变量定义时显式地指定了值,则其初值为指定的值。定义时无论是否显式地指定了初始值,都只能被初始化一次。但可以通过赋值的方式多次修改静态变量的值。
    2、初始化与赋值是不同的概念。
    静态变量的初始化是在编译时进行,变量的赋值是在函数或程序运行时进行。静态变量只初始化一次,但可以通过赋值的方式多次修改静态变量的值。
    以下程序要求主函数中每个循环结束后都能输出5行星号。分析以下程序的输出结果。
    int i;
    main()
    { void pr(); void pt(); void pk(); /对被调函数的声明/
    for(i=0;i<5;i++) pr(); /对函数prt()调用5次/
    printf("\n");
    for(i=0;i<5;i++) pt(); /对函数prt()调用5次/
    printf("\n");
    for(i=0;i<5;i++) pk(); /对函数prt()调用5次/
    }
    void pr()
    { static int i=0; /定义时显式地指定初值为0,称为初始化,静态变量仅一次/
    printf("%d: “,i); /输出上次调用该函数后保留的i的值/
    for(i=1;i<=5;i++);/此句中i=1为赋值,将上次调用后保留的i的值重新赋值为1/
    printf(”%c",’*’);
    printf("\n");
    }
    请分析:pt函数同样被调用了5次,但结果只输出了一行星号,而不是5行星号。验证了静态变量的赋值和静态变量的初始化的不同概念。
    void pt()
    { static int i; /定义时未显式地指定初值,但该变量仍被初始化一次,起初值为0 /
    printf("%d: “,i); /输出上次调用该函数后保留的i的值/
    for(;i<5;i++) /i未被重新赋值,即保留了上次调用后的保留值(5),所以下次调用该函数时循环条件不再满足,因为i值已经等于5了/
    printf(”%c",’
    ’);
    printf("\n");
    }
    void pk()
    { static int i; /定义时未显式地指定初值,但该变量仍被初始化一次,起初值为0/
    printf("%d: “,i); /输出上次调用该函数后保留的i的值/
    for(i=0;i<5;i++) printf(”%c",’
    ’); /*循环中的i=1为赋值 */
    printf("\n");
    }

    展开全文
  • 初始化和赋值的区别

    千次阅读 2017-03-11 16:01:13
    折腾我挺长一段时间,基本挺明白了,先来个区别说明:赋值操作是在两个已经存在对象间进行,而初始化是要创建一个新对象,并且其初值来源于另一个已存在对象。编译器会区别这两种情况...c++中初始化和赋值操作差
    折腾我挺长一段时间,基本挺明白了,先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是简单地复制类中的每个成员。
     下面看例子。 

    c++中初始化和赋值操作差别是很大的。
      对于基本数据类型差别不大:
      比如:
      int a = 12// initialization, copy 0X000C to a
      a = 12// assignment, copy 0X000C to a

      但是对用户自定义的数据类型比如String 初始化和赋值就差别很大:
    class String {
       
    public:
       String( 
    const char *init ); // intentionally not explicit!
       ~String();
       String( 
    const String &that );
       String 
    &operator =const String &that );
       String 
    &operator =const char *str );
       
    void swap( String &that );
       friend 
    const String // concatenate
       operator +const String &const String & );
       friend 
    bool operator <const String &const String & );
       
    //...
       private:
       String( 
    const char *const char * ); // computational
       char *s_;
      }
    ;

      初始化的构造过程比较简单:先分配一个足够大的空间然后填充上数据:
      String::String( const char *init ) {
       
    if!init ) init = "";
       s_ 
    = new char[ strlen(init)+1 ];
       strcpy( s_, init );
      }

      析构过程更简单:
    String::~String() { delete [] s_; }


      但是如果赋值操作就复杂多了:
      String &String::operator =const char *str ) {
      
       
    if!str ) str = "";
      
       
    char *tmp = strcpy( new char[ strlen(str)+1 ], str );  // 多了中间变量
      
       delete [] s_; 
    // 多了删除s_;
       s_ = tmp;   // 多一个赋值操作!现在是指向字符的指针,如果是个大对象,效率的差别可想而知.
      
       
    return *this;
      }


      建议在条件允许的情况下最好在初始化的时候就赋值,而尽量避免用=号赋值了,比如用成员初始化列表来初始化成员数据,不在构造函数里用赋值操作给成员数据.
    展开全文
  • 初始化不是赋值,初始化创建变量时候赋予其一个初始值,而赋值含义是把对象当前值擦除,用一个新值替代 int a=10;//创建一个变量,初始化并赋予其一个初始值10 int b;//创建一个变量没有赋予其初始值 b=...

    初始化不是赋值,初始化是创建变量的时候赋予其一个初始值,而赋值的含义是把对象的当前值擦除,用一个新值替代

    int a=10;//创建一个变量,初始化并赋予其一个初始值10 
    
    int b;//创建一个变量没有赋予其初始值
    b=10; //给变量赋值10 

     

    展开全文
  • 结论:参考...初始化只在类加载时候执行一次。类实例化:是指创建一个对象过程。这个过程中会在堆中开辟内存,将一些非静态方法,变量存放在里面。在程序执...
  • 的初始化:是完成程序执行前准备工作。在这个阶段,静态(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态数据。初始化只在类加载时候执行一次。类实例化:是指创建一个对象过程...
  • 有三个与此主题相关的术语:声明,初始化和实例化.从后到前工作.实例化这是为对象分配内存的时候.这就是新关键字正在做的事情.从new关键字返回对创建的对象的引用.初始化这是将值放入已分配的内存中的时间.这是使用...
  • 初始化和默认初始化的区别

    千次阅读 2018-03-11 20:29:08
    参考资料[1]P185指出,如果局部变量没有显式的初始化值,它将执行值初始化(不是默认初始化!),内置类型局部静态变量初始化为0 1 背景 参考资料[1]P39提到,在C++语言中,初始化与赋值并不是同一个概念:...
  • 创建了就是在Java堆上分配了内存,但是这被划出来内存没有被初始化,也就是全部为0,初始化就是给这被划出来内存赋值为0或者1; 看一段代码,一个类数组,如果每一个数组里元素是一个类,只是简单一句new ...
  • 类的初始化和实例化的区别

    千次阅读 2019-01-23 19:54:48
    的初始化,是完成程序执行前准备工作。在这个阶段,静态(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态数据。初始化只在类加载时候执行一次。 类实例化,是指创建一个对象...
  • 在Java中,有两种初始化块:静态初始化非静态初始化块.静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量,即...括号里初始化块,这里面代码在创建j...
  • 初始化和赋值的区别

    2008-04-23 16:52:00
    赋值操作是在两个已经存在对象间进行,而初始化是要创建一个新对象,并且其初值来源于另一个已存在对象。
  • 实例化一般是由类创建的对象,在构造一个实例的时候需要在内存中开辟空间,即 Student s = new Student(); 初始化 实例化的基础上,并且对 对象中的值进行赋一下初始值 ...
  • //先看代码 class Test { public: ... //栈中分配 ,由操作系统进行内存分配管理 Test test2 = Test; //栈中分配 ,由操作系统进行内存分配管理 Test *test3=new Test(); //堆中分配 ...
  • C++与Java数组的申明创建初始化的区别 复习Java数组知识的时候,发现数组的申明、创建初始化在JavaC++的不同之处,特此记录。 Java中,数组的申明 int [] array; //如果现在对array进行初始化, array1...
  • 1.创建实例需要先加载并初始化该类 此处main方法所在类需要先加载并初始化 2.子类初始化要先初始化其父类 3.类初始化即是执行clinit(ClassInit)方法 A.(静态!)分为 静态变量显式赋值操作 静态代码块  B.上到...
  • 最简单示例 package com.abchina.test_static; /** * @author : yewang * create at: 2020/10/14 9:36 上午 */ public class ParentClass { static int num = 0; String name = "qqqqqq"; static String ...
  • C++中直接初始化与复制初始化是很多初学者容易混淆概念,...“通常直接初始化和复制初始化仅在低级别优化上存在差异,然而,对于不支持复制类型,或者使用非explicit构造函数时候,它们有本质区别: ifstream
  • 问题描述:我们在newHashMap(16)...HashMap中initialCapacity指数组大小,比如指定inittialCapacity为16,那么初始化创建的数组大小就是16; ConcurrentHashMap中inittialCapacity指ConcurrentHashMap的容量,而不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,442
精华内容 1,376
关键字:

初始化和创建的区别