zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【JAVA】函数和构造函数的区别及相关应用实例(源代码实例,知识点有注释!)

JAVA实例知识点应用 函数 区别 相关 源代码
2023-09-11 14:14:57 时间

前言:普通函数与构造函数的区别。

初学者没有必要了解太深,请住以下四点,能分辩出来就行了,后面用到了,自然就明白为什么要用构造函数了,如果初期想搞明白,只是概念上的,没有什么意义:

1、构造函数的方法名与类名相同(普通函数可以随便起名)

2、构造函数没有返回值,因此,既没有void,也没有return。

3、调用时,需要先用new声明一下,如:books book=new books();

3、如果非要弄明白:为什么要使用构造函数?你就把【构造函数】当成某个类的一组【静态变量】吧。比如:我们如果在程序中想定义一组变量书的变量,会这样给变量起名:book_Name="三国演义",book_page="350",book_color=”红色“。如果用构造函数就是定义一个book类,那么构造函数就是定义变量,只不过就是把【_】变成【.】了,book.Name。(这种比喻也不恰当,有点误人子弟了,不过,水平有限!)

补充:构造函数会用到哪儿?还有一个比喻,就是您应该用过手机APP吧,当你想退出APP时,都会用到一个【设置】页面,那个【页面】的选项就很很适合用【构造函数】。

一、函数的参数传递实例。

package HELLO;
import java.util.Scanner;

import javax.print.DocFlavor.INPUT_STREAM;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
public class helloword 
{
	public static int Max(int a,int b)  // a和b对应的就是x,y传过来的值。
	{
		int c=0;
		if(a>b)
		{c=a;}
		else 
		{
			c=b;
		}
		return c;   // 函数返回值或者叫输出值
	}
	
	public static void main(String[] args) 
	{

	int x=9;
	int y=6;
	int z=Max(x, y); // 调用函数,把x和y的值传入到函数max中的a和b,再获取到C的值给Z。
	System.out.println(x+"和"+y+"中,两者最大的值是:"+z);
	
	}
}

二、【同一个包下】调用另一个类的【函数】。

1、【包】的名称是【HELLO】,也就是两个java文件都在HELLO文件夹下,并且,代码第一行都是package HELLO;
2、csj.java文件代码。

package HELLO;

public class csj {

	public static int Max(int a,int b)  // a和b对应的就是x,y传过来的值。
	{
		int c=0;
		if(a>b)
		{c=a;}
		else 
		{
			c=b;
		}
		return c;   // 函数返回值或者叫输出值
	}
	
	public static void main(String[] args) {
		
	}

}

3、helloword.java代码。

package HELLO;
import java.util.Scanner;
public class helloword 
{
	public static void main(String[] args) 
	{

	int x=9;
	int y=6;
	csj h=new csj();  // 先从csj.java类中建立一个对象【h】,说白了就是建立一个关联,。
	int z=h.Max(x, y); // 通过【h.】来调用csj.java中的max函数。
	System.out.println(x+"和"+y+"中,两者最大的值是:"+z);
	}
}

三、【不在同一个包下】调用另一个类的【函数】。

1、我先截个图(为了更好的理解)。

2、【包】的名称是【love】下的csj.java文件代码。

package love;

public class csj {

	public static int Max(int a,int b)  // a和b对应的就是x,y传过来的值。
	{
		int c=0;
		if(a>b)
		{c=a;}
		else 
		{
			c=b;
		}
		return c;   // 函数返回值或者叫输出值
	}
	
	public static void main(String[] args) {
		
	}

}

、【包】的名称是【HELLO】下的helloword.java文件代码。

package HELLO;
import java.util.Scanner;
import love.csj;  // 导入包名和类名,记得中间有.
public class helloword 
{
	public static void main(String[] args) 
	{

	int x=9;
	int y=6;
	csj h=new csj();  // 先从csj.java类中建立一个对象【h】,说白了就是建立一个关联,。
	int z=h.Max(x, y); // 通过【h.】来调用csj.java中的max函数。
	System.out.println(x+"和"+y+"中,两者最大的值是:"+z);
	}
}

四、调用类的【构造函数】- 调用类时的参数传递和接收。

特点:只要运行类,就执行,而且,只要实例化对象(book aaa=new book();)就执行了。

1、先放一个图。

2、show_2.java代码

package Show;

public class Show_2 {

	private int a = 0;  // 就是一个变量,用private,不会造成数据泄露。
	private int b = 0;  // private定义私有变量b,不会造成数据泄露。
	
	// ============= 【构造函数 - 接收传参】 ,b就是获取传过来的值。
	
	public Show_2(int b) 
	{
		this.b = b;  // 就是把传过来的值,赋给变量b
	}
	
	// ============= 【函数 -每执行一次,变量就+1】
	
	public void add() 
	{
		a++; // 变量+1
		
		// 下面这个b的值,就是show_1.java中传过来的【10】,Show_2 ccc = new Show_2(10);
		if(a == b)  
		{
			a = 0;
		}
	}
	public int getvalue()
	{
       return a;
	}
	public static void main(String[] args) {}

}

3、show_1.java代码

package Show;

public class Show_1 {

	public static void main(String[] args) {

		Show_2 ccc = new Show_2(10);  // 用ccc对象关联到show_2类。注意,10就是传给了show_1类中的b变量。
		
       // ==============【做了一个循环】
		
		while (true) {

			// =====[这段代码是有1秒的暂停]
			
			try {
				Thread.sleep(1000);
			} catch (InterruptedException ex) {
				Thread.currentThread().interrupt();
			}

			ccc.add();  // 执行show_2类中的add函数,+1.
			System.out.println(ccc.getvalue());
		}
	}
}

// 本程序的执行结果是,从0到9显示,每隔一秒显示一个数字,到9后,接着从0开始。 

五、调用类的【构造函数】- 批量,让系统自动加上构造函数。

六、在MyEclipse中自动创建或快速生成【构造函数】的get 和set方法。

首先,用private定义私有变量,如:  

  private int id;
    private String name;
    private String old;

方法1:点击右键,选择source,再选择Generate Getters and Setters,再选择select all,点OK就行了。

方法2:快捷键:Shift+Alt +S ,后面的跟方法1一样。

注意:如果生成的方法在private 变量前面,首先检查光标是否在private变量的后面一行,再检查弹出设置框 insertion point,其中的after就是放在哪个后面,如: after old,就是放在old变量后面,选择一下就行了。