精华内容
下载资源
问答
  • C++ 初始化列表

    2021-03-04 16:24:03
    那我们怎样才能完成成员变量的初始化呢,这时候就引进了–初始化列表 格式: 以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式 class Date { public: ...

    我们都知道,成员变量的初始化是在构造函数中完成的,而我们之前在构造函数的函数体内写的赋值操作,其实并不是初始化,因为,而是普通的赋值操作。初始化只能被初始化一次,而赋值操作可以被赋值多次。那我们怎样才能完成成员变量的初始化呢,这时候就引进了–初始化列表

    格式: 以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式

    class Date 
    {
    public: 
    	Date(int year, int month, int day) 
    		//初始化列表
    		:_year(year)
    		, _month(month)
    		, _day(day)
    	{}
    private: 
    	int _year;
    	int _month;
    	int _day;
    };
    

    但是即使是在函数体内赋值,那我们一样可以正常使用实例化出来的对象,那我们还用初始化列表干什么呢?存在即合理,有三种特殊的成员变量必须在初始化列表进行初识化
    1、引用类型的成员变量
    因为引用类型的变量在定义的时候必须初始化,不能进行空引用。而真正初始化的地方是在初始化列表,所以引用类型的成员变量必须在初始化列表进行初始化。
    2、const成员变量
    一个const变量也是必须在定义的时候初始化,初始化后的值不能在进行变化,所以必须在初始化列表进行初始化。
    3、没有默认构造函数的自定义类型成员
    我们知道,当我们的类的成员变量存在自定义类型成员时,会自动调用自定义类型成员的默认构造函数,如果没有默认构造函数就会编译报错,那我们可以在初始化列表中给该类型默认值。

    建议:不管是不是以上三种特殊的成员变量,只要涉及到成员变量的初始化都用初始化列表

    注意

    1. 当存在自定义成员变量时,先初始化自身的初始化列表,再执行自定义成员变量的初始化列表和函数体,最后再执行自身的构造函数的函数体
    2. 初始化列表中初始化顺序是按照声明的顺序进行的,并不是按照初始化列表依次从上往下初始化的
    展开全文
  • Java 对象初始化

    2021-02-26 21:18:01
    Static BlockEmployee Company:china softNon-Static BlockEmployee phone:0755-51595599Employee(String)Empoloyee()下面我们来对结果做分析:1在代码34行实例化对象时,先对给静态变量分配内存空间并初始化,然后...

    67746f85bfd50e187676473a15392775.png

    e9007ce86806bfd5fad58ce57351aa6b.png

    编译并运行该程序会有以下输出:

    Static Block

    Employee Company:china soft

    Non-Static Block

    Employee phone:0755-51595599Employee(String)

    Empoloyee()

    下面我们来对结果做分析: 1 在代码34行实例化对象时, 先对给静态变量分配内存空间并初始化,然后执行静态块。 因此,在这里会输出: Static Block   Employee Company:china soft      而Employee Company:china soft的输出也说明是先初始化静态变量然后再执行静态块,否则company将为null。

    2然后在内存中为Employee分配内存空间,并做默认初始化(即所有变量初始化为默认值,这里都初始化为null)。

    3 默认初始化完成后,开始显示初始化。即执行第5行,将phone初始化"0755-51595599",并且执行非静态方法块;因此在这里会有以下输出: Non-Static Block Employee phone:0755-51595599

    4 最后才调用默认构造函数,在默认构造函数中调用了带参数的构造函数,所以在这里先输出带参数构造函数中的:Employee(String),然后才输出:Empoloyee()。

    d840612133fbcae1e799ada1647fbb18.png

    上面的代码中Manager继承了前面写的Employee类,当我们编译并运行Manager类,会产生以下的输出:

    Static Block Employee Company:china soft Sub Static Block Manager department:sale Non-Static Block Employee phone:0755-51595599 Employee(String) Empoloyee() Sub Non-Static Block Manager salary:8000 Manager(String) Manager()

    下面我们对结果做分析:

    1 在行34实例化对象时,由于Manager继承了Employee,所以先从父类Employee开始;先给父类静态变量分配内存空间并初始化,然后执行父类静态块。

    然后再给子类静态变量分配内存空间并初始化,然后执行子类静态块,所以会得到以下输出: Static Block Employee Company:china soft Sub Static Block Manager department:sale

    2然后在内存中为父类Employee分配内存空间,并做默认初始化;再为子类Manager分配内存空间,并做默认初始化。

    3默认初始化完成后,从父类开始显示初始化并执行非静态方法块和构造函数,然后再子类开始显示初始化并执行非静态方法块和构造函数。

    因此会产生以下的输出: Non-Static Block Employee phone:0755-51595599 Employee(String) Empoloyee() Sub Non-Static Block Manager salary:8000 Manager(String) Manager()

    ...............................

    47bd860c3ee059e7815eba5600871ea1.png

    上面的执行完了 开始main()函数里的该干嘛干嘛

    你永远不知道博客园的排版有多丑

    展开全文
  • Java怎么为对象进行初始化发布时间:2020-06-25 14:37:49来源:亿速云阅读:86作者:Leah本篇文章为大家展示了Java怎么为对象进行初始化,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍...

    Java怎么为对象进行初始化

    发布时间:2020-06-25 14:37:49

    来源:亿速云

    阅读:86

    作者:Leah

    本篇文章为大家展示了Java怎么为对象进行初始化,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    一:初始化类

    首先创建某个对象时:Dog dog = new Dog();

    首次访问某个类的静态方法或者静态字段时:Dog.staticFields;

    Java 解释器就会去找类的路径,定位已经编译好的 Dog.class 文件。

    二:获得类的资源

    然后 jvm 就会载入 Dog.class,生成一个 class 对象。这个时候如果有静态的方法或者变量,静态初始化动作都会被执行。这个时候要注意啦,静态初始化在程序运行过程中只会在 Class 对象首次加载的时候运行一次。这些资源都会放在 jvm 的方法区。

    方法区又叫静态区,跟堆一样,被所有的线程共享。

    方法区中包含的都是在整个程序中永远唯一的元素,包含所有的 class 和 static 变量。

    三:初始化对象 Dog dog = new Dog()

    1、第一次创建 Dog 对象先执行上面的一二步

    2、在堆上为 Dog 对象分配足够的存储空间,所有属性和方法都被设置成默认值(数字为 0,字符为 null,布尔为 false,而所有引用被设置成 null)

    3、执行构造函数检查是否有父类,如果有父类会先调用父类的构造函数,这里假设 Dog 没有父类,执行默认值字段的赋值即方法的初始化动作。

    4、执行构造函数。

    上述内容就是Java为对象进行初始化的方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

    展开全文
  • 对象是java最基本的一个概念,对于对象的初始化...对象初始化类//待实例化的类publicclassWorkerimplementsCloneable,Serializable{privatestaticfinallongserialVersionUID=1L;privateStringname;privateIntegerage...

    对象是java最基本的一个概念,对于对象的初始化小伙伴们了解吗?本篇文章就一起来看看。

    对象初始化

    类//待实例化的类

    public class Worker implements Cloneable, Serializable

    {

    private static final long serialVersionUID = 1 L;

    private String name;

    private Integer age;

    public Worker()

    {

    this.name = "";

    this.age = 0;

    }

    public Worker(String name, Integer age)

    {

    this.name = name;

    this.age = age;

    }

    public void work()

    {

    System.out.println(name + "is working");

    }

    public Worker clone()

    {

    Worker worker = null;

    try

    {

    return (Worker) super.clone();

    }

    catch (CloneNotSupportedException e)

    {

    e.printStackTrace();

    }

    return worker;

    }

    }

    方式一:public static Worker createWorker()

    {

    System.out.println("直接使用new的方式,不使用参数");

    return new Worker();

    }

    方式二:public static Worker createWorker1()

    {

    Class clazz = null;

    Worker worker = null;

    try

    {

    clazz = Class.forName("com.code.loader.Worker");

    worker = (Worker) clazz.newInstance();

    }

    catch (ClassNotFoundException e)

    {

    e.printStackTrace();

    }

    catch (InstantiationException e)

    {

    e.printStackTrace();

    }

    catch (IllegalAccessException e)

    {

    e.printStackTrace();

    }

    System.out.println("使用反射机制,不带参数的newInstance()方法");

    return worker;

    }

    方式三:public static Worker createWorker4(String name, Integer age)

    {

    Worker person = new Worker();

    person.setName(name);

    person.setAge(age);

    //序列化

    OutputStream outputStream = new FileOutputStream("person.txt");

    ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);

    objectOutputStream.writeObject(person);

    outputStream.close();

    objectOutputStream.close();

    //反序列化

    InputStream inputStream = new FileInputStream("person.txt");

    ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);

    return (Worker) objectInputStream.readObject();

    }

    以上就是本篇文章的所有内容,更多详细java常见问题及解决方法可以关注我们网站了解具体。

    推荐阅读:

    展开全文
  • 使用addStudent方法,把学生添加到学校的学生列表中public void addStudent(int age,String name){ Student student = new Student(); student.setAge(age); student.setName(name); addStudent(student); } public ...
  • 如果你检查Listhttp://docs.oracle.com/javase/6/docs/api/java/util/List.html的API,你会注意到:Interface List作为一个接口意味着它不能被实例(没有新的List()是可能的)。如果你检查这个链接,你会发现一些类...
  • 我想初始化一个BlackJack游戏的Player对象数组。我已经阅读了很多有关初始化原始对象(如整数数组或字符串数组)的各种方法的信息,但是我无法将其理解为我在此处尝试做的事情(见下文)。我想返回一个初始化的Player...
  • 初始化列表

    2021-03-04 18:57:38
    //不是初始化 _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }; 在例子中,调用构造函数之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的...
  • 创建构造函数带参数的对象数组(构造函数初始化列表) #include<iostream> using namespace std; class node{//声明 public: node(int a,int b); ~node(); void print(); private: int x,y; }; //...
  • JAVA中怎么初始化对象数组?java中怎么创建对象数组?比如我创建了一个学生类Sclass Student{ } 类中怎么创建学生类兑现数组?学生类: class A{ private String name; private int age; public String getName() { ...
  • C++11中,集合(列表)的初始化已经成为C++语言的一个基本功能,这种初始化的方法被称为“初始化列表”(initializer list),例如: #include <vector> #include <map> using namespace std; int a[]...
  • (5)对于本身就是类对象的成员来说,使用成员初始化列表的效率更高 (6)数据成员被初始化的顺序与它们出现在类声明中的顺序相同,与初始化器中的排列顺序无关。 2.4 类内初始化 C++11 允许以更直观的方式进行初始...
  • 我想重新启动room实例,但是当我试图删除对象时,我得到AttributeError:room1。下面是一些伪代码:class Room:inventory = []__init__(self, itemsInRoom, doors):#makes a room instance and puts some items and ...
  • C++类和对象(下)——初始化列表、static成员和友元

    千次阅读 热门讨论 2021-03-08 09:23:18
    C++类和对象——初始化列表、static成员和友元一、再谈构造函数1.1 构造函数整体赋值1.2 初始化列表三级目录 关于C++类和对象的学习 C++类和对象(上)——类的基本概念、类的限定符及封装和类成员函数的this指针 C++...
  • C++11以前只能使用列表初始化初始化内置类型数组和POD类型对象,C++11中列表初始化可以用于初始化任何类型对象 POD(plain old data)类型:仅由内置类型变量构成且不含指针的类,简单来
  • 对象数组的定义和使用: 对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例对象数组的声明形式是: 类名 对象数组名 [ ]; 为对象数组分配内存空间: 对象数组名=new 类名[数组长度];//注意 :...
  • 对象的创建和初始化

    千次阅读 多人点赞 2020-12-26 12:28:05
    对象初始化三、构造器 前言 本文主要讲解类和对象的关系,以及如何创建和初始化对象,对构造器的详解 一、类和对象的关系 类是一种抽象的数据类型,它是对某一类事物的整体描述,但是不能代表某一个具体的事物...
  • 对于每个声明符,如果不省略,初始化符可能是以下之一:= expression(1)= { initializer-list }(2)其中 initializer-list 是一个非空的以逗号分隔的初始化列表(带有可选的尾随逗号),其中每个初始化器都有三种可能...
  • Spring的初始化对象创建流程

    千次阅读 2021-05-21 11:25:33
    Spring容器的初始化对象创建流程(代码方面): 如图: 1.Spring容器初始化流程: 文字说明: 在ClassPathXmlApplicationContext的构造函数中: super(parent);//调用父级的构造方法,构造父类对象初始化相关...
  • “在 Java 中,构造方法是一种特殊的方法,当一个类被实例的时候,就会调用构造方法。只有在构造方法被调用的时候,对象才会被分配内存空间。每次使用 new 关键字创建对象的时候,构造方法至少会被调用一次。” ...
  • C++在初始化数组时,可以使用下面花括号加初始值的形式: int arr[] = {1, 2, 3}; 在C++中,如有下面这样的类: class Tester { public: Tester(int value):m_value(value * 2){} void print(){ cout <<...
  • 函数表单在运行时调用构造函数来返回一个新的实例,而文字形式使得编译器在编译时使“创建”(真的,发出导致一个新对象的字节码).如果(由于某种原因)这些类本地反弹到不同的类型,前者是有用的.>>> def f():.....
  • 看起来您正在尝试创建一个句柄对象(Shooters)数组,并将其存储在另一个句柄对象(Squardron)的属性中.我有一个非常similar problem discussion可能会帮助你.简而言之:你在做什么可能不是很漂亮 – 但可能已经很好了....
  • 一、 Dart 面向对象、 二、 类定义、 三、 类的继承、 四、 私有变量、 五、 可选参数与默认参数、 六、 初始化列表、 七、 完整代码示例、 八、 相关资源
  • 1.初始化列表赋值 2.设置成静态的,在类外赋值 原本想的在构造函数中给const类成员赋值,编译错误。 思考大体原因: 1.构造函数在某种意义上还是可以理解为类已经生成好了,编辑器内部仅调用一次,此时const如果赋值...
  • 前端传递的对象有可能为未初始化对象,所以后端要进行判断,确定对象是否还未初始化。 前端判断代码 if (JSON.stringify(_this.user)=='{}'){ alert('不能保存空的用户信息'); } 后端判断代码
  • 在Java中,创建对象实例的时候,按照如下顺序进行初始化:1.先初始化字段,例如,int age = 10;表示字段初始化为10,double salary;表示字段默认初始化为0,String name;表示引用类型字段默认初始化为null;2.执行...
  • Spring初始化和创建对象概念流程

    千次阅读 2021-05-20 17:54:59
    Spring初始化和创建对象流程 大致流程概念图: 文字说明: Spring项目启动后,首先创建Spring容器,然后加载xml等配置文件、解析,将读取到的内容存放到BeanDefinition(bean的定义信息中); Spring容器在完成相关...
  • 关于C++ new动态创建对象数组并初始化的方法 #include <iostream> #include <string> #include <stdlib.h> class student{ private: static int object_count; int score; string name; ...
  • python参数初始化

    2021-03-18 08:26:01
    python 初始化参数怎么设置class A(object): def __init__(arg): self.arg = arg 在__init__中定义python中类的初始化函数形参=0含义看来你是学c#不久的 private和public作为访问权限来 控制变量的作用域是很有必要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,096,960
精华内容 838,784
关键字:

对象初始化列表