龙空技术网

初识Java—(十五)深入构造器

IT研究僧 141

前言:

现时同学们对“java中构造器”大约比较看重,小伙伴们都想要知道一些“java中构造器”的相关资讯。那么小编同时在网摘上收集了一些对于“java中构造器””的相关资讯,希望咱们能喜欢,看官们一起来了解一下吧!

5.4 深入构造器

构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,因此Java类必须包含一个或一个以上的构造器。

5.4.1 使用构造器进行初始化

构造器最大的用处就是在创建对象时执行初始化,所谓的初始化就是创建对象时,系统对这个对象的Field进行赋值处理。

举例1:

package com.langsin.test;public class Person {private String name = null;private int age = 0;Person(String name,int age){this.name = name;this.age = age;}public String getName(){return this.name;}public void setName(String name){this.name = name;}public int getAge(){return this.age;}public void setAge(int age){this.age = age;}public static void main(String[] args) {Person p1 = new Person("张三",35);System.out.println(p1.getName());System.out.println(p1.getAge());}}

注意:如果程序员提供了自定义的构造器,系统就不再提供默认的构造器,在上例的Person类中提供了构造器因此不能再通过new Person()代码来创建实例,因为该类不再包含无参数的构造器。

5.4.2 构造器重载

同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。构造器重载允许Java类里包含多个初始化逻辑,从而允许使用不同的构造器来初始化java对象。

举例1:

package com.langsin.test;public class Test {private String name = null;private int age = 0;Test(String name,int age){this.name = name;this.age = age;}Test(){}public String getName(){returnthis.name;}publicvoid setName(String name){this.name = name;}publicint getAge(){returnthis.age;}publicvoid setAge(int age){this.age = age;}publicstaticvoid main(String[] args) {Test test = new Test("张三",35);System.out.println(test.getName());Test test1 = new Test();System.out.println(test1.getName());}}
5.4.3创建对象总结:

到这里结束,一个类的组成我们已经大体讲完了。包括变量,方法,构造方法,它们的使用以及需要注意的地方,那咱们一块来写一个person类。包括成员变量,成员方法,构造方法,以及给成员变量进行赋值。

那我们写了 Person p = new Person(); 也就是当我们创建了一个对象的时候 ,JVM都干了一些什么事?

• 加载Person.class文件进内存

• 在栈内存为p开辟空间

• 在堆内存为Person对象开辟空间

• 对Person对象的成员变量进行默认初始化

• 对Person对象的成员变量进行显示初始化

• 通过构造方法对Person对象的成员变量赋值

• Person对象初始化完毕,把对象地址赋值给p变量

5.4.4static关键字详细解释

static是一个特殊的关键字,它可以用于修饰方法,变量(Field)等成员,static修饰的成员表明它属于这个类本身,而不是该类的单个实例,通常把static修饰的变量(Field)和方法(method)称为类变量,类方法。不使用static修饰的普通方法、变量则属于该类的单个实例。

举例:

public class Student {private String gender = "男";private static String name = "wangwu";public static void main(String[] args) {name = "zhangsan";System.out.println(name);//zhangsanStudent st = new Student();st.name = "lisi";System.out.println(st.name); //实例的名称System.out.println(name); //类的名称st.gender = "男";System.out.println(st.gender);Student st1 = new Student();System.out.println(st1.name);/}}

static关键字的特点有哪些?

(1) 它随着类的加载而加载(典型的就是main()方法)。

(2) 它优先于对象存在,在JVM中出现的比对象早。

(3) 而且它被类的所有对象共享。而它的这个特点也是告诉了我们什么时候用static关键字来进行修饰成静态的?比如说咱们的班级编号。

(4) 可以通过类名来直接使用。

接着咱们来画个图来看一看,咱们的图又要添加新的内容了。

静态变量与成员变量的区别有哪些?

1.归属不同2.内存中位置不同3.在内存中出现的时间不同4.调用方式不同

标签: #java中构造器