java中有关构造方法中的输出

目录
  • 有关构造方法中的输出
    • 先来看一个例子
  • java中构造方法的作用

有关构造方法中的输出

在构造方法中的System.out.println是怎么运行的呢?下面让我们一起来看一下。

构造方法中的System.out.println:

先来看一个例子

package testasdd;

public class Abcdefg {
    String name;
    int age;

    Abcdefg(String namel,int agel){
    	name=namel;
    	age=agel;
    	System.out.println("我可谢谢你了");
    }

    void bank() {
    	System.out.println("可以的");
    }

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Abcdefg a= new Abcdefg("滑板", 22);
		String name=a.name;
		int age=a.age;
		System.out.println("我是"+name+"玩了"+age);
		a.bank();

	}

}

输出如下:

我可谢谢你了
我是滑板玩了22
可以的

为什么构造方法中的输出也在控制台输出了呢?

因为构造方法在类被实例化的时候会被调用。

也就是在我们,新键一个对象的时候构造方法会被调用因此其中的System.out.println会在创建对象的时候被调用输出。

这就是为什么我们明明没有有关他的语句却有这句输出的原因了。

java中构造方法的作用

初学Java的构造方法时,根本不能理解构造方法有什么用,自己写程序的时候也从来没有用过。于是刚开始我写的程序是这样的:

package test3;
public class Student {
 private String name;
 private long ID;
 private double score;

 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public long getID() {
  return ID;
 }
 public void setID(long iD) {
  ID = iD;
 }
 public double getScore() {
  return score;
 }
 public void setScore(double score) {
  this.score = score;
 }
 public static void main(String[] args) {
  Student s = new Student();
  s.setName("张三");
  s.setID(170316);
  s.setScore(86.0);
  System.out.println("学号为" + s.getID + "的" + s.getName() + "的成绩为" + s.getScore + "分。");
 }
}

然后我发现,这样写程序有弊端。就是比如我要登记学生的基本情况,有姓名、学号、年级班级、成绩等等好多情况,如果有很多属性,同时实例化了好多对象,我可能就会忘记忘记初始化一些属性;同时,这样还需要写许多get和set方法,虽然可以由eclipse自动生成,但还是显得代码很冗长,不便于阅读。这个时候就显示出构造方法的重要性了。

构造方法的主要作用就是创建对象。

构造方法分为有参数和没有参数两种。有参数的构造方法主要就是用于对创建出来的对象进行初始化,比如下边这个例子:

package test3;

public class Test_Constructor1 {

 private String name;
 private String gender;
 private long ID;
 private long birthday;

 Test_Constructor1(String name, String gender, long ID, long birthday) {
  this.name = name;
  this.gender = gender;
  this.ID = ID;
  this.birthday = birthday;
 }
 public static void main(String[] args) {
  Test_Constructor1 s = new Test_Constructor1("Lily", "女", 100001, 200000226);
  System.out.println("姓名:" + s.name +  " 性别:" + s.gender + " 学号:" + s.ID + " 生日:" + s.birthday);
 }
}

在控制台的输出结果如下:

这样在new一个对象出来的时候,就对它进行了初始化,避免了某些属性忘记初始化的问题;同时可以看出代码长度远小于上一个例子,提高了程序的可阅读性。

另一种是没有参数的构造方法,又叫缺省构造方法。其实,你的类如果没有定义任何构造方法,Java的编译器会配上一个自动缺省构造方法,这个构造方法是空的,不做任何事情,只是为了满足编译需要。或者,你也可以自己写一个空的构造方法,在里边对一些属性赋值,或者执行一些其他操作,比如下边这个例子:

package test3;

public class Test_Constructor2 {
 private int i;

 Test_Constructor2() {
  i = 5;
  System.out.println("i的值是" + i);
 }
 public static void main(String[] args) {
  Test_Constructor2 s = new Test_Constructor2();
 }
}

在控制台的输出结果如下:

没有参数的构造方法创建对象时也会被调用。创建对象时,首先变量中的所有变量会得到零值,然后执行定义初始化,最后执行构造方法。

其实,构造方法的主要作用就是为对象成员变量赋初始值,总是与new运算符一起使用在创建对象的语句中——也就是说,只要你new一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。要注意,自己写了有参的构造方法,编译器是不会再补充一个缺省构造方法的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java中构造方法及this关键字的用法实例详解(超详细)

    目录 初识构造方法 构造方法的使用 初识this this.xx的用法 this()用于构造函数的调用 总结 初识构造方法 我们上篇讲了java中类的创建,那么让我们来实战演练一下:创建一个学生类,里面有学生的基本信息,包括姓名.性别.年龄.学号,你可能会写出这样的代码: class Student { String name; String gender; int age; long studentID; } public class TestDemo2 { public static voi

  • Java字节缓存流的构造方法之文件IO流

    目录 1.字节缓冲流 1.1字节缓冲流构造方法 1.2字节流复制视频 2.字符流 2.1为什么会出现字符流 2.2编码表 2.3字符串中的编码解码问题 2.4字符流中的编码解码问题 2.5字符流写数据的5种方式 2.6字符流读数据的2种方式 2.7字符流复制Java文件 2.8字符流复制Java文件改进版 2.9字符缓冲流 2.10字符缓冲流复制Java文件 2.11字符缓冲流特有功能 2.12字符缓冲流特有功能复制Java文件 2.13IO流小结 3练习案例 3.1集合到文件 3.2文件到集合

  • 深入探究Java线程的创建与构造方法

    目录 一.创建线程 启动线程—start 方法 方法一 方法二 方法三 方法四 方法五 方法六 二.run方法和start方法的区别 ①方法性质不同 ②执行速度不同 ③调用次数不同 总结 三.线程的构造方法 一.创建线程 启动线程—start 方法 通过覆写 run 方法创建⼀个线程对象,但线程对象被创建出来并不意味着线程就开始运行了 覆写run方法是给线程指令清单 但是start方法,则是让线程去真正的执行 方法一 继承Thread类 /** * 继承Thread创建线程 */ class M

  • java线程组构造方法源码解析

    目录 线程组构造方法 为啥开启线程,就能统计到呢? 线程组下面可以有线程组吗? 线程组构造方法 我们看这个线程组,线程组名字是system,设置优先级,然后指定父线程是空,可以看出这个是根线程组,这个方法是私有的,不是给我们调用的. 把当前线程加入线程组中 我们试试上述代码逻辑,对叭,没指定线程组就加入当前创建的main线程的线程组,如果指定线程组就是当前线程组. 我们看源码也是一样: 活跃线程和活跃线程组数量都是0: 我们这是没开启线程,所以我们需要开启线程,这里就看到活跃线程数量了: 为啥开

  • 详解Java的构造方法及类的初始化

    目录 一. 利用构造方法给对象初始化 1. 构造方法的概念 2. 构造方法的特性 3. 子类构造方法 4. 避免在构造方法中调用重写的方法 二. 对象的默认初始化 三. 就地初始化对象 四. 类的初始化顺序 1. 普通类(没有继承关系) 2. 派生类( 有继承关系) 一. 利用构造方法给对象初始化 1. 构造方法的概念 构造方法(也称为构造器)是一个特殊的成员方法,其名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次. 构造方法的作用就是给对象中的成员进行初

  • Java基础学习之构造方法详解

    目录 一.构造方法概述 二.构造方法的注意事项 三.标准类制作 一.构造方法概述 构造方法是一种特殊的方法 作用:创建对象Student stu = new Student(); 格式: pucli class 类名{        修饰符 类名(参数){        } } 功能:主要是完成对象数据的初始化 示例代码: class Student { private String name; private int age; //构造方法 public Student() { System.

  • java构造器 默认构造方法及参数化构造方法

    目录 1.构造器 1.1 权限修饰符是public 1.2 显示定义构造器 1.构造器 构造器也叫构造方法.构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化.构造器的用处是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化. 有两种类型的构造方法: 1.默认构造方法(无参数构造方法) 2.参数化构造方法 1.1 权限修饰符是public 权限修饰符是public,表示内部属性能被其他类访问到. java默认的构造方法是无参的. Java编译器会自动创建

  • Java构造方法 super 及自定义异常throw合集详解用法

    1.构造方法: public 类名(){} 区别一下 // public void 方法名(){} 分为有参,无参子类构造方法 public class Zi extends fu{ public int message=35; public Zi(){ System.out.println("我是谁"); }} 创建对象时:就会输出:子类构造方法中内容: 2.super和this使用: public void show(int message) { System.out.printl

  • Java构造方法和方法重载详解

    目录 第一 构造方法的作用 第二 构造方法的特点 方法重载 总结 类的结构包括 : 1. 成员变量 2. 成员方法 3. 构造方法 4. 代码块 5. 内部类 第一 构造方法的作用 主要有以下三方面的作用: (1)在构造方法中为创建的对象初始化赋值 (2)在创建一个对象的时候,至少需要调用一个构造方法 (3)每一个类都有构造方法 一个例子加深对以上三条的理解 public class Car{ String name; String color; float price; } 上一篇文章已经讲解

  • Java构造方法有什么作用?

    构造方法的作用:即给重要属性赋初始值. Java构造方法本身并不神秘,通常它只是去完成一些初始化的工作.构造方法本身并不能去创建出一个对象,真正创建对象的是Java平台,构造方法只是Java平台在创建出一个对象之后去默认调用的方法. 构造方法需要理解的重点: 构造方法没有返回值类型,但是在构造方法中可以使用return 构造方法必须和类名一样 Java平台创建出一对象后,会根据new语句中给出的类名和参数调用相应的构造函数 一个类可以有多个构造方法,它们之间的关系是重载 Java平台是构造函数的

  • Java 构造方法的使用详解

    目录 1. 看一个需求 2. 基本语法 3. 基本介绍 4. 快速入门 5. 注意事项和使用细节 6. 练习 1. 看一个需求 看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做? 这时就可以使用构造器. 2. 基本语法 [修饰符] 方法名(形参列表){ 方法体; } 说明: 构造器的修饰符可以默认, 也可以是 public protected private 构造器没有返回值 方

随机推荐