NO1.类的方法

一个类里不仅可以添加属性,也可以添加方法

       属性:描述“我有什么”

       方法:描述“我能做什么”

  }

1)示例

package my;

public class Student
{

	public String id;
	public String name;
	public boolean sex;
	public String cellphone;
    public StudentCard card=new StudentCard();
    
    public void show()
    {
    	for(int i=0;i<10;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }

}

2)调用方法

package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		
		Student s1=new Student();
		s1.show();
		
	}
}

NO2.方法的参数

1)添加一个方法,指定一个int型参数

public void show2(int maxNumber)

{

}

2)调用这个方法

Student s=new Student();

s.show2(30);

3)示例

package my;

public class Student
{

	public String id;
	public String name;
	public boolean sex;
	public String cellphone;
        public StudentCard card=new StudentCard();
    
    public void show()
    {
    	for(int i=0;i<10;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }
    public void show2(int maxNumber)
    {
    	for(int i=0;i<maxNumber;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }

}

调用方法,由调用者指定输出结果:

package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		
		Student s1=new Student();
		s1.show2(36);
		
	}
}

进一步扩展方法的参数:

package my;

public class Student
{

	public String id;
	public String name;
	public boolean sex;
	public String cellphone;
    public StudentCard card=new StudentCard();
    
    public void show()
    {
    	for(int i=0;i<10;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }
    public void show2(int maxNumber)
    {
    	for(int i=0;i<maxNumber;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }
    public void show3(int from,int to)
    {
    	for(int i=from;i<to;i++)
    	{
    		System.out.println("报数:"+i);
    	}
    }

}

调用方法,报数的起点和终点都由调用者决定:

package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		Student s1=new Student();	
		s1.show3(2, 53);
	}
}

NO3.方法的返回值1

方法是说“我可以做什么事情”

返回值是说“这件事情的结果”  return value

在java语言里,使用return来返回一个值

return语句执行后,函数不再往下执行,直接退出方法

示例:

package my;

public class MyMath
{
     public void getMax(int[] data)
     {
    	
    			int result=0;
    			for(int i=0;i<data.length;i++)
    			{
    				if(data[i]>result)
    				{
    					result=data[i];
    				}
    			}
    			System.out.println("最大值:"+result);
    		}
     public int  getMax2(int[] data)
     {
    	 int result=0;
    	 for(int i=0;i<data.length;i++)
			{
				if(data[i]>result)
				{
					result=data[i];
				}
			}
			System.out.println("最大值:"+result);
			return result;
		}
     }
package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		int [] a1= {29,93,193};
		
		MyMath m=new MyMath();
		m.getMax(a1);
		int result=m.getMax2(a1);//用int型接收方法的返回值
		
		System.out.println("结果为:"+result);
		
	}
}

示例加深:

package my;

public class MyMath
{
     public void getMax(int[] data)
     {
    	
    			int result=0;
    			for(int i=0;i<data.length;i++)
    			{
    				if(data[i]>result)
    				{
    					result=data[i];
    				}
    			}
    			System.out.println("最大值:"+result);
    		}
     public int  getMax2(int[] data)
     {
    	 int result=0;
    	 for(int i=0;i<data.length;i++)
			{
				if(data[i]>result)
				{
					result=data[i];
				}
			}
			System.out.println("最大值:"+result);
			return result;
		}
     public int getMax3(int[] a1,int[] a2)
     {

			int result=0;
			for(int i=0;i<a1.length;i++)
			{
				if(a1[i]>result)
				{
					result=a1[i];
				}
			}
			
			for(int i=0;i<a2.length;i++)
			{
				if(a2[i]>result)
				{
					result=a2[i];
				}
			}
				
			System.out.println("最大值:"+result);
    	 return 0;
    	 
     }
   }
package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		int [] a1= {29,93,193};
		int [] a2= {90,89,289};
		
		MyMath m=new MyMath();
		int r1=m.getMax2(a1);
		int r2=m.getMax2(a2);
		int max=r1;
		if(r2>max)  max=r2;
		
		
		System.out.println("结果为:"+max);
		
	}
}

从以上可以看出,没有返回值是不能同时求两个数组之间最大值的。

需要注意的是,打印输出和返回值是完全不同的两回事,打印输出只是为了方便调试。

NO3.方法的返回值2

步驟:

1)添加一个方法(方法名,参数,返回值类型)

2)实现

示例1:

package my;

public class MyTest
{
	public boolean check(int[] arr)
	{
		boolean result=false;
		
		int sum=0;
		for(int i=0;i<arr.length;i++)
		{
			sum+=arr[i];
			if(sum>100)
			{
				//result=true;
				//break;
				return true;
			}
		}
		//return result ;//沒必要总是把return写在最后面
		return false;
	}
   
}

3)调用

package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		int [] a1= {29,93,193};
		
		MyTest m=new MyTest();
		boolean result=m.check(a1);
		
		System.out.println("结果为:"+result);
		
	}
}

小结:

1)return语句:在得到结果之时,立即终结方法

2)return语句可以放在方法的任何一个位置,可以放在while{}也可以放在if{}中,没有限制

3)如果返回值是void,也可以直接终结函数

示例2:

package my;

public class MyTest
{
	public void print(int n)
	{
		if(n<0)
		{
			System.out.println("给定的数<=0!!");
			return;
		}
	     if(n>10)
	    {
	    	 System.out.println("给定的数太大了!!");
	    	 return;
	    }
	     int rows=0;//行数
	     int cols=0;//列数
	     for(int k=0;k<=n;k++)
	     {
	    	 System.out.print(k+" ");
	    	 cols++;
	    	 if(cols>rows)
	    	 {
	    		 System.out.print("\n");
	    		 rows++;
	    		 cols=0;
	    	 }
	     }
	
    }
}
package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		
		MyTest m=new MyTest();
		m.print(5);
		
	}
}

输出结果:

0 
1 2 
3 4 5

NO4.方法的返回值3

return语句:

各处类型的值都可以被return:

-int,double,boolean,String

-引用类型:Student这样的对象

-数组对象

示例:

package my;

public class MyTest
{
	    //把符合要求的值放在返回值里
	public int [] find8(int[] arr)
	{
		//创建的等大的数组
		int[] temp=new int[arr.length];
		
		int count=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i]%8==0)
			{
				temp[count]=arr[i];
				count++;
			}
		}
		
		 //拷贝结果到数组里
		int[] result=new int[count];
		for(int i=0;i<count;i++)
		{
			result[i]=temp[i];
		}
		return result;
	}
	     
}
package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		
		int[] arr= {18,28,32,36,48};
		MyTest m=new MyTest();
		int[] result=m.find8(arr);
		System.out.println("完成");
		
	}
}

NO5.方法的重载(overload)

允许方法名相同,参数不同就可以

package my;

public class Simple {
	
	public void test()
	{
		System.out.println("测试1......");
	}
	public void test(int a,int b)
	{
		System.out.println("测试2:a="+a+"b="+b);
		
	}
	public void test(int a,String b)
	{
		System.out.println("测试3:a="+a+"b="+b);
	}
	

}

调用根据参数进行匹配:

package my;

public class HelloWorld
{
	public static void main(String[] args)
	{
		
		Simple s=new Simple();
		s.test();
		s.test(10,20);
		s.test(10, "cc");
		
	}
}

 输出结果:

测试1......
测试2:a=10b=20
测试3:a=10b=cc