精华内容
下载资源
问答
  • JAVA对象数组的初始化方法 分类: Java 问题如下: [java] view plaincopyprint? class FileStruct{     int intPara;     FileStruct(){     intPara=0;  ...
     

    JAVA对象数组的初始化方法

    分类: Java

    问题如下:

    1. class FileStruct{  
    2.   
    3.        int intPara;  
    4.   
    5.        FileStruct(){  
    6.   
    7.             intPara=0;  
    8.   
    9.        }  
    10.   
    11.        public void setintPara(int i){  
    12.   
    13.             intPara=i;  
    14.   
    15.        }  
    16.   
    17.        public int getintPara(){  
    18.   
    19.             return intPara;  
    20.   
    21.        }  
    22.   
    23. }  
    24.   
    25.    
    26.   
    27. class Read{  
    28.   
    29.         public void main(String[] args){  
    30.   
    31.                FileStruct[] fs=new FileStruct[10];  
    32.   
    33.               for(int i=0;i<10;i++)  
    34.   
    35.                      System.out.println(fs[i].getintPara);  
    36.   
    37. }  


    此时程序会抛出异常:java.lang.NullPointerException

    在以上程序中已存在两个错误:1.对数组的初始化工作没有结束   2.在类FileStruct中没有将构造器函数公有化

    错误原因:1. 在Java中对非基本数据初始化时,必须使用new。在使用new创建数组后,此时数组还是一个引用数组。只有再创建新的对象,并把对象赋值给数组引用,到此初始化结束。

                      2. 在以上程序中如果再使用new创建对象对数组引用赋值,仍会抛出异常:The constructor FileStruct() is not visible

    基于此,以上程序应改为:

    1. class FileStruct{  
    2.   
    3.        int intPara;  
    4.   
    5.        public FileStruct(){  
    6.   
    7.             intPara=0;  
    8.   
    9.        }  
    10.   
    11.        public void setintPara(int i){  
    12.   
    13.             intPara=i;  
    14.   
    15.        }  
    16.   
    17.        public int getintPara(){  
    18.   
    19.             return intPara;  
    20.   
    21.        }  
    22.   
    23. }  
    24.   
    25.    
    26.   
    27. class Read{  
    28.   
    29.         public void main(String[] args){  
    30.   
    31.                FileStruct[] fs=new FileStruct[10];  
    32.   
    33.              for(int j=0;j<10;j++)  
    34.   
    35.                      fs[j]=new FileStruct();  
    36.   
    37.               for(int i=0;i<10;i++)  
    38.   
    39.                      System.out.println(fs[i].getintPara);  
    40.   
    41. }  
    展开全文
  • c++中对象数组的初始化用的是显示调用构造函数,在这个过程中生成了一个匿名对象,这个匿名对象是指什么?如果是构造函数为了初始化对象元素生成的,那也是应该调用拷贝初始化构造函数,为什么要调用构造函数?请...

    # re: 对象数组初始化的一种方法

    2006-12-24 10:32

    草根

    我能问一个问题吗?c++中对象数组的初始化用的是显示调用构造函数,在这个过程中生成了一个匿名对象,这个匿名对象是指什么?如果是构造函数为了初始化对象元素生成的,那也是应该调用拷贝初始化构造函数,为什么要调用构造函数?

    请各位高手,帮我解决,

    # re: 对象数组初始化的一种方法

    2007-03-28 21:46

    ahlongxp

    @草根

    #include using namespace std;

    class foo

    {

    private:

    int num;

    public:

    foo()

    {

    cout << "foo default constructing^" << endl;

    }

    foo(int a)

    {

    num = a;

    cout << "foo constructing^ " << num << endl;

    }

    ~foo()

    {

    cout << "foo desctructing^" << endl;

    }

    };

    int main(int argc, char* [])

    {

    foo g[] = {foo(1),foo(2),foo()};

    return 0;

    }

    该代码通过g++4.03编译后的运行结果是:

    foo constructor^ 1

    foo constructor^ 2

    foo default constructor^

    foo destructor^

    foo destructor^

    foo destructor^

    因此,结论很明显:没有创建所谓的匿名对象。

    # re: 对象数组初始化的一种方法

    2007-04-09 14:19

    静水流深

    十分对不起,好久没有上网了,没及时回复。

    你说的那个匿名对象应该是指构造函数构造的一个临时对象。这个对象在表面是看不见的,使程序的内在机制。

    上面的数组是生成十个数组的元素,而我们只给出三个来初始化,其他没有给出的就得调用默认的构造函数。并产生十个临时对象(我们在表面并不知道),然后把这十个对象分别付给数组元素。 我的理解是这样,不明白可以再看一下那本书。

    我的那个例子是这样的:

    #include using namespace std;

    class foo

    {

    private:

    int num;

    public:

    foo()

    {

    cout << "foo default constructing^" << endl;

    }

    foo(int a)

    {

    num = a;

    cout << "foo constructing^ " << num << endl;

    }

    ~foo()

    {

    cout << "foo desctructing^" << endl;

    }

    };

    int main(int argc, char* [])

    {

    int aNum = 5;

    foo g[5] = {foo(1),foo(2),foo()};

    return 0;

    }

    在VC6.0 下编译的结果为:

    foo constructing^ 1

    foo constructing^ 2

    foo default constructing^

    foo default constructing^

    foo default constructing^

    foo desctructing^

    foo desctructing^

    foo desctructing^

    foo desctructing^

    foo desctructing^

    # re: 对象数组初始化的一种方法

    2007-12-13 19:06

    beginner1

    看了斑竹的文章,我学会了使用对象数组的初始化,不过我支持"草根“回复的内容。

    首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,然后

    将临时对象的内容复制到相应的元素中.因此,要创建类对象数组,则这个类必须有默认构造函数.

    第一对象数组的初始化不一定要求它的类有默认构造函数;

    第二初始化对象时并不是先调用默认构造函数,然后创建临时对象并用来初始化对象数组。初始化列表是直接指定了初始化对象的构造函数!!!

    以下程序证明了我的观点,我去掉了默认构造函数,但程序依然正确运行。

    书上写的不对!

    #include using namespace std;

    class foo

    {

    private:

    int num;

    public:

    /*foo()

    {

    cout << "foo default constructing^" << endl;

    } */

    foo(int a)

    {

    num = a;

    cout << "foo constructing^ " << num << endl;

    }

    ~foo()

    {

    cout << "foo desctructing^" << endl;

    }

    };

    int main(int argc, char* [])

    {

    foo g[3] = {foo(1),foo(2),foo(3)};

    return 0;

    }

    运行结果:

    foo constructing^ 1

    foo constructing^ 2

    foo constructing^ 3

    foo desctructing^

    foo desctructing^

    foo desctructing^

    回复  更多评论

    # re: 对象数组初始化的一种方法[未登录]

    2007-12-19 12:21

    静水流深

    @beginner1

    我测试了一下,上面的有构造函数的初始化方法并没有调用构造函数,而",要创建类对象数组,则这个类必须有默认构造函数"这句话可能是书上只针对树上给的那个例子的情况__初始化的元素没有给全的情况.

    而拷贝构造函数的调用大体情况有三:

    一是用一个对象初始化另一个对象是;二是函数返回一个对象赋值时;三是对象作为函数参数值传递时.

    按理说上面的拷贝构造函数应该调用,有待进一步研究.........

    展开全文
  • C++中关于构造函数有参数的对象很简单` ...以下为对C++中关于构造函数有参数的对象数组的使用的几种方法 class Test { public: int id; Test(int i) { id = i; } ~Test() { cout <&...

    C++中关于构造函数有参数的对象很简单`
    Test *a = new Test(1);
    但是C++中关于构造函数有参数的对象数组的使用却不是那么友好
    以下为对C++中关于构造函数有参数的对象数组的使用的几种方法

    class Test
    {
    	
    	public:	
    	int id;	
    	Test(int i)	
    	{	
    		id = i;	
    	}	
    	~Test()	
    	{	
    		cout << "ID: " << id << " destruction function is invoked!" << endl;	
    	}
    
    };
    
    //方法一
    Test t1[3]  = {Test(1),Test(1),Test(1)};//栈中分配,数组型对象
    
    方法二
    Test *t1  = new Test[3]{1,1,1};//栈中分配,数组型对象
    
    delete[] t1;
    
    

    很多人可能会怀疑方法二行不行,我可以怎么说,在C++11标准中,他已经实现了,但在这之前的标准中,其运行会报警告,析构函数无法运行

    展开全文
  • 设计一个雇员类,创建雇员类的对象数组初始化,输出每个雇员信息 class Employee { //雇员类 private String id; //编号 private String name; //姓名 private int age; //年龄 private String vocation; //...

    设计一个雇员类,创建雇员类的对象数组并初始化,输出每个雇员的信息

    class Employee {   //雇员类
     private String id;  //编号
     private String name; //姓名
     private int age;     //年龄
     private String vocation; //职务
     public Employee(){} //构造方法一
     public Employee(String id,String name,int age,String vocation){
      set(id,name,age,vocation);
     }
     //设置属性的方法
     public void set(String id,String name,int age,String vocation){
      this.id=id;
      this.name=name;
      this.age=age;
      this.vocation=vocation;
     }
     public String toString() {
      String mess=id+","+name+","+age+","+vocation;
      return mess;
     }
    }
    public class Example11 {
     public static void main(String[] args) {
      //先创建3个雇员对象
      Employee employee1=new Employee("0001","张文军",50,"总经理");
      Employee employee2=new Employee("0005","李琦",45,"副经理");
      Employee employee3=new Employee("1016","张丽",28,"秘书");
      //声明对象数组并直接初始化
      Employee 雇员1[]={employee1,employee2,employee3};
      output(雇员1);//输出雇员信息
      System.out.println("------------------");//分割线
      //声明对象数组并直接初始化,初始化元素直接调用
      //构造方法创建对象
      Employee 雇员2[]={new Employee("0001","张文军",50,"总经理"),
      new Employee("0005","李琦",45,"副经理"),
      new Employee("1016","张丽",28,"秘书")};
      output(雇员2);
     }
     //定义方法用于输出雇员信息,注意方法是private,static
     private static void output(Employee 雇员[]){
      for(Employee employee:雇员)
       System.out.println(employee.toString());
     }
    }
    

    在这里插入图片描述

    展开全文
  • // 在Java 语言中, 数组被创建后会根据数组存放的数据类型初始化成对应的初始值(例如,int类型会初始化为0,对象会初始化为null) // 一维数组的声明方式:type arrayName[]或 type[] arrayName // 初始化...
  • Java初始化对象数组初始化,指定初始化,显示静态初始化
  • //array of 10 uninitialized ints此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素指针,此返回值初始化了指针pia。在自由存储区中创建的数组对象是没有名字,只能通过其地址间接...
  • 方法就是若干语句功能集合 参数:进入方法的数据 返回值:从方法中出来数据 定义方法的完整格式: 修饰符 返回值类型 方法名称(参数类型,参数名称){ 方法体 Return 返回值;} 修饰符:public static 返回值...
  • 集合ArrayList小练习: ...输出其中一个Car对象的Name属性 删除下标为1元素,并输出当前元素个数 遍历输出当前集合中Car对象的Name属性 删除一个ArrayList元素有几种方法? ArrayList和List<T>主要...
  • c++类对象数组初始化的几种方法

    万次阅读 2011-04-22 15:46:00
     类对象数组初始化  如有一个如下类:  class EquipmentPiece {  private:  int IDNumber;  public:  EquipmentPiece(int IDNumber) : IDNumber(IDNumber) {};  }...
  • 对象的初始化: Object类型是包含属性(也可以叫字段)和方法(也可以叫函数)。因此在创建Object类型的时候一定是要说明的要点。  一般创建Object类型数的方法有两种:  (1)使用new运算符 var box=new ...
  • package 类数组的初始化相关问题; public class Person { public int age; public String name; public Person(){} }这里先不提供set,get方法,然后在Test类中测试: package 类数组的初始化相关问题; public
  • 对象数组初始化

    2013-08-14 14:22:00
    如有一个如下类: class EquipmentPiece { private: int IDNumber; public: EquipmentPiece(int IDNumber) : ...以下列出几种初始化的方法: <一>、对象数组 int ID1, ID2, ID3; EquipmentPiece bestP...
  • java中创建数组数组是以对象的形式出现方法中这样声明:int[] arr1 = new int[5]; //定义一个长度为5整型二位数组 动态初始化:int[] arr1 = new int[5]; 静态初始化:int[] arr1 = new int[] {11,22,33,44...
  • 今天写我自己的博客,我的页面需要当前页面的所有路由,但是不要第一个首页的路由,于是我开始的思路是...就是利用数组的slice方法。 果不其然,一下就解决了我的问题。 用法: Array.prototype.slice 的参数含义为 ...
  • 数组的三种初始化状态: 上图的Man是自己创建的一个对象,是一个引用类型,后面开辟的是一个对象数组 整型默认初始化值为0,String类型初始化值为null 手动一个个赋值的称为动态初始化 在定义后直接初始化赋值的...
  • 在用devcpp编译程序时发现,二维vector数组如果只定义话,不指定元素个数也不进行初始化时候会导致编译出错...二维数组初始化方法目前有以下两种: 第一种初始化方法(以元素类型为int为例) 初始化为1: `vect...
  • 主要介绍了Java中对象数组的使用方法,结合实例形式分析了java对象数组的功能、定义、初始化与相关使用技巧,需要的朋友可以参考下
  • 数组初始化

    2017-06-18 21:05:46
     本文主要讲数组的初始化方法、可变参数列表以及可变参数列表对函数重载的影响。 回到顶部 1.数组初始化 定义数组的方式:  int[] arr1; 或 int arr1[]; 数组初始化  通过上边的定义,我们只是得到...
  • 特别注意 列表=[对象]*N 这种写法是错误,因为初始化得到N个对象指向相同地址,实验如下: class Phase_struct: pass #方法1 phases1 = [Phase_struct(),Phase_struct(),Phase_struct()] print(id(phases1[0]...
  • 一、 数组是指具有相同类型数据...根据对象的特点是封装了一些数据,同时提供了一些属性和方法,从这个角度讲,数组对象 int[] a={1,2}; int[][] b=new int[2][4]; String[] s={"a","b...
  • 对象数组的初始化方法:类名数组名[数组元素个数]={类名(实参)}; 例如:Point a[2]={Point(1,2),Point(2,5)}; 在初始化的时候,元素对象调用构造函数进行初始化。 注意:在设计对象数组的时候,若对象元素的值...
  • 在看到c++primer第三章,3.5.2节练习时,碰到了一个问题如下: ...一、初始化构造时拷贝 vector&lt;int&gt; tem(list); 这种拷贝相当于复制了list内部数据,内容没有发生改变。 二、assign vec...
  • Java数组初始化

    千次阅读 2019-05-06 22:34:32
    动态初始化:数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。 Java数组是一种引用数据类型。数组变量并不是数组本身,而是指向堆内存中存放的数组对象。因此,可以改变一个数组变量所引用的...
  • OpenCV的官网介绍Mat对象,共列出了25种基本的初始化方法。 其中,对于使用数组数据块的初始化方法官方给出的例子是 ``` double m[3][3] = {{a, b, c}, {d, e, f}, {g, h, i}}; Mat M = Mat(3, 3, CV_64F, m).inv...
  • cpp-数组初始化

    2020-12-09 15:38:50
    title: cpp-数组初始化 ...vector数组的初始化 初始化vector对象方法 方法说明 vector v1 v1是一个空vector,它潜在的元素是T类型的,执行默认初始化 vector v2(v1) v2中包含v1所有元素的.
  • 数组的三种初始化方法

    千次阅读 2018-04-18 14:21:21
    package theChildOfGod.bjxy.array; public class Test02 { public static void main(String[] args) { //声明 int []a; int b[]; //创建数组对象 a = new int [4]; b...
  • Python中初始化一个5 x 3每项为0的数组,最好方法是:multilist=[[0forcolinrange(5)]forrowinrange(3)]我们知道,为了初始化一个一维数组,我们可以这样做:alist=[0]*5没错,那我们初始化一个二维数组时,是否可以...

空空如也

空空如也

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

对象数组的初始化方法