「java初始化构造函数」java初始化构造函数怎么写

博主:adminadmin 2023-03-21 16:07:09 654

本篇文章给大家谈谈java初始化构造函数,以及java初始化构造函数怎么写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中创建对象了,显示初始化值和构造函数初始化对象的区别?先后执行顺序是什么?

两个都可以初始化值,本质上没有区别,不同的是执行的先后。构造方法初始化值时需要包含有参的构造方法,创建对象时使用Object obj = new Object(arg1,arg2)的形式,你说的显示初始化值应该是使用set方法吧,比如obj.setArg1(arg1)的形式。执行顺序肯定是构造方法的形式要在前了,因为在对象创建之后就会给属性赋值,而set方法形式赋值只会在你调用set方法时才会赋值。

再插一点题外话:其实在对象创建时成员变量已经初始化了,只是初始化的都是变量对应类型的默认值,比如int类型的默认值是0,引用类型默认值是null,boolean类型默认值是false。

请问java构造函数如何初始化成员变量的啊?

可以直接赋值的,在构造里写只不过是为了方便,因为使用一个类的时候通常都要先new出该类的实例在构造里赋值,这样在new这个类的实例的时候成员变量就已经被初始化了。

java中怎样用构造函数对集合进行初始化呀?

一般创建集合都用无参构造器TreeSet

treeSet=newTreeSet

();创建的集合是空的,要添加数据调用它的add(...)方法添加,如果TreeSet

treeSet=newTreeSet

(treeSet);使用的是有参构造器,在创建集合的时候就已经在里面添加初始数据了,意思就是对集合进行初始化了。

java类中构造函数中:数组怎样初始化

1、java构造函数--数组 在构造函数中初始化数组,如 public class array { private int [][] matrix; public array(int r,int c) { matrix=new matrix[r][c]; } }

matrix=new matrix[r][c];

2、这里是new int[][]; java中8个基本数据类型都是有默认值的,int默认值为0 ,

3、所以数组中默认都为0.

4、但是切记有默认值的变量必须是类的属性,方法中局部变量必须赋值才可以使用。

JAVA中怎样用构造函数对集合进行初始化呀?

一般创建集合都用无参构造器TreeSetPersontreeSet=newTreeSetPerson();创建的集合是空的,要添加数据调用它的add(...)方法添加,如果TreeSetPersontreeSet=newTreeSetPerson(treeSet);使用的是有参构造器,在创建集合的时候就已经在里面添加初始数据了,意思就是对集合进行初始化了。

Java子类构造函数初始化问题

刚刚想当然的回答了一个3,然后发现不妥,试了一下果然不对,就可耻的把回答删除了,删除后居然不能重新回答,果断重新注册个号回答

首先我们加上点东西

public class Demo10 {

    public static void main(String[] args) {

        new Joo();

    }

}

class Ioo{

    int a = 3;

    public Ioo() {

     System.out.println("Ioo构造方法执行");

     System.out.println("Ioo中this类型为:" + this.getClass().getSimpleName());//查看this是什么类型

     this.t();

    

     System.out.println("Ioo构造方法执行完毕");

    }

    public void t(){

     System.out.println("执行Ioo的t方法");

     System.out.println(this.a);

     System.out.println("Ioo中的t方法执行完毕");

    }

}

class Joo extends Ioo{

    int b = 3;

    public Joo() {

     System.out.println("Joo构造方法执行完毕");

    }

@Override

public void t(){

System.out.println("执行Joo中的t方法");

System.out.println(this.b);

System.out.println("Joo中的t方法执行完毕");

}

}

输出结果为:

-------------------------------------

Ioo构造方法执行

Ioo中this类型为:Joo

执行Joo中的t方法

Joo中的t方法执行完毕

Ioo构造方法执行完毕

Joo构造方法执行完毕

-------------------------------------

为什么输出的是0呢?又为什么Ioo中this的类型会是Joo呢?

接下来我们反编译一下class文件

class Ioo{

int a;

public Ioo(){

     a = 3;

System.out.println("Ioo构造方法执行");

System.out.println("Ioo中this类型为:" + getClass().getSimpleName());

t();

System.out.println("Ioo构造方法执行完毕");

}

public void t(){

System.out.println("执行Ioo的t方法");

System.out.println(a);

System.out.println("Ioo中的t方法执行完毕");

}

}

class Joo extends Ioo{

int b;

public Joo(){

b = 3;

System.out.println("Joo构造方法执行完毕");

}

public void t(){

System.out.println("执行Joo中的t方法");

System.out.println(b);

System.out.println("Joo中的t方法执行完毕");

}

}

我们可以看出,成员变量的赋值操作是放到了构造方法中执行的,我们根据控制台输出语句的顺序来模拟java的执行顺序,由于我们实例化的是子类Joo,他会首先执行父类的构造方法,我们先来看执行顺序

a赋值为3

输出"Ioo构造方法执行"

由于this代表当前对象,那么既然是实例化Joo时调用的方法,this代表的就是Joo,故输出Joo

执行t方法(由于class反编译后,this.被简化了,所以我们观察源代码,this.t(),既然this的类型是Joo,那么this.t()执行的就是Joo中的t方法)。此时控制台输出"执行Joo中的t方法"

此时应该执行System.out.println(b),我们想当然的以为应该是3,结果却输出了0,原因是这样:我们在Joo的构造方法中加入了输出语句,可是在控制台,此时并没有输出"Joo构造方法执行完毕",可见Joo的构造方法并没有执行,就是b = 3的赋值语句同样没有执行,此时的b默认值为0,故控制台输出了0。

此时t方法执行完毕,输出"Joo中的t方法执行完毕",Ioo的构造方法也执行完毕,输出"Ioo构造方法执行完毕"

父类Ioo的构造方法执行完毕,最后执行子类Joo的构造方法,我们看到,此时的b才被赋值为3,最后输出"Joo构造方法执行完毕"

至此,模拟完成,有不懂的可以再hi我,不要hi这个号,这号只是为了临时回答注册的,如无意外,不会再上,我常用的叫kq346635081,在这条回答的评论里

关于java初始化构造函数和java初始化构造函数怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。