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