当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 有关构造方法中的输出 先来看一个例子 java中构造方法的作用 有关构造方法中的输出 在构造方法中的System.out.println是怎么运行的呢?下面让我们一起来看一下。 构造方法中的Sy
目录
  • 有关构造方法中的输出
    • 先来看一个例子
  • 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一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。要注意,自己写了有参的构造方法,编译器是不会再补充一个缺省构造方法的。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

    上一篇:java swing GUI窗口美化方式
    下一篇:没有了
    网友评论