Java教程

Java类中的构造方法

本文主要是介绍Java类中的构造方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java类中的构造方法

开发工具与关键技术:eclipse  java
作者:黄济民
撰写时间:2021.6.3

package com.hjm.javase.work01;

/**
*

  • 关于java类中的构造方法:
  • 1.构造方法又被称为构造函数/构造器/Constructor
    
  • 2.构造方法语法结构:
    
  •    [修饰符列表] 构造方法名(形式参数列表){
    
  •         构造方法体;
    
  •    }
    
  • 3.回顾普通方法的语句结构:
    
  •    [修饰符列表] 返回值类型 方法名(形式参数列表){
    
  •         方法体; 
    
  •    }
    
  • 4.对于构造方法来说,"返回值类型 "不需要指定,并且也不能写void,
    
  •   只要写上void,那么这个方法就成为普通的方法了。
    
  • 5.对于构造方法来说,构造方法的方法名必须和类名保持一致。
    
  • 6.构造方法的作用:
    
  •    构造方法存在的意义是,通过构造方法的调用,可以创造对象。
    
  • 7.构造方法应该怎么调用?
    
  •     - 普通方法是这样调用的:方法修饰符中有static的时候:类名.方法名(实参列表),
    
  •       方法修饰符列表中没有static的时候:引用.方法名(实参列表)
    
  •     - new 构造方法名(实参列表)
    
  • 8.构造方法调用执行之后,有返回值吗?    
    
  •     每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不需要写。
    
  •     构造方法结束的时候java程序自动返回值。
    
  •     并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写
    
  • 9.当一个类没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器
    
  • 10.当一个类显示的构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造器。
    
  •    建议开发中手动的为当前类提供无参数构造方法。因为无参数构造方法太常用了。
    
  • 11.构造方法支持重载机制。在一个类当中编写多个构造方法,这多个构造方法显然已经构成方法重载机制。
    

*/

public class ConstructorText01 {

public static void main(String[] args) {
	
	//创建User对象
	//调用User类的构造方法来完成对象的创建
	//一下程序创建了4个对象,只要构造函数调用就会创建对象,并且一定是在“堆内存”中开辟空间。
	//new后面的User是构造方法的方法名,方法才带有括号
	User u1 = new User();
	User u2 = new User(10);
	User u3 = new User("zhangsan");
	User u4 = new User(10,"zhangsan");
	
	//普通方法调用
	//调用带有static的方法   类名.
	ConstructorText01.doSome();
	//在本类调用方法可以直接调用
	doSome();
	
	//调用没有static的方法  引用.
	//doOther方法在ConstructorText01类当中,所以需要创建ConstructorText01对象
	//创建ConstructorText01对象,调用无参数构造器。一个类中没有任何构造方法的话,系统会默认提供无参构造器
	ConstructorText01 d = new ConstructorText01();
	d.doOther();
	
	//普通方法调用
	User.fangfa(10);
	
}


public static void doSome() {
	System.out.println("do some!");
}

//这个方法不带有static所以要创建对象  引用.方法名(实参列表)  引用就是创建对象赋值给变量中的那个变量就是引用
public void doOther() {
	System.out.println("do other!");
}

}

package com.hjm.javase.work01;

/**

  • 构造方法的作用:
  •    1.创建对象
    
  •    2.创建对象的同时,初始化实例变量的内存空间。【给实例变量赋值】
    
  •    3.局部变量和成员变量在jvm的栈内存中的存储的
    
  •    4.引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保持了内存地址,指向了堆内存当中的对象。
    
  • 成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
  • 实例变量没有手动赋值的时候,系统默认赋值,那么这个系统默认赋值是在什么时候完成的呢?
  •   是在类加载的时候吗?
    
  •       不是,因为类加载的时候只加载了代码片段,还没来得及创建对象,所以此时实例变量并没有初始化。
    
  •   实际上,实例变量的内存空间是在构造方法执行的过程当中完成开辟的。完成初始化的。
    
  •   系统在默认赋值的时候,也是在构造方法执行过程当中完成的赋值。
    
  • 实例变量默认值:
  • byte short int long 默认值0
  • float double 默认值0.0
  • boolean 默认值false
  • 引用数据类型 默认值null
  • 实例变量是存储在JVM的堆内存java对象内部
  • 所有访问实例相关的数据,都需要通过"引用 ."的方式访问,因为只有通过引用才能找到对象
  • 只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。
  • class Student{
  •    Computer com; //com是一个引用【实例变量】
    
  •  public static void doSome(){
    
  •    Computer cc; //cc是一个引用【局部变量】
    
  •  }
    
  • }

*/

public class ConstructorText02 {

public static void main(String[] args) {
	
	//按ctrl键,鼠标移动到查看的元素上,出现下划线的时候开始单击
	//另外,在一个类当中元素过多,想快速查看,在当前类使用ctrl + o 快捷键吗,然后输入要查找的元素。
	//创建对象
	Account act1 = new Account();
	
	System.out.println("账号:" + act1.getActno());
	System.out.println("余额:" + act1.getBalance());                   
	                                                                    
	Account act2 = new Account("110");                                  
                                                                        
	System.out.println("账号:" + act2.getActno());//110                
	System.out.println("余额:" + act2.getBalance());//0.0              
	                                                                    
	Account act3 = new Account(10000.0);                                
                                                                        
	System.out.println("账号:" + act3.getActno());//null               
	System.out.println("余额:" + act3.getBalance());//10000.0          
	                                                                    
	Account act4 = new Account("ABC1231",10000.0);                      
                                                                        
	System.out.println("账号:" + act4.getActno());//ABC1231            
	System.out.println("余额:" + act4.getBalance());//10000.0  
	
}

}

这篇关于Java类中的构造方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!