Java(day3)
什么是方法
方法,今天讲一下方法。方法有点类似于c语言中的函数,可以这么理解。
在Java语言中方法是程序中最小的执行单元,在实际的开发当中我们可以把重复的、具有独立功能的代码抽取到方法当中去。这样可以提高代码的复用性,可以提高代码的可维护性
方法的格式
public static 方法返回值类型 方法名称(参数列表){
方法体
return 返回值;
}
简单的方法定义
public class test1 {
public static void f1(){
int a=10,b=20;
System.out.println(a+b);
}
public static void main(String[]args){
f1();
}
}
带参数的方法定义
以上面的方法f1来说,只能计算a=10,b=20的值,要是计算别的是不是还要定义别的方法呢?要这样想,方法实现的功能一样两个数的和并打印,就可以抽象成一个方法,只不过传入的参数不同。
public class test1 {
public static void f1(int a,int b){
System.out.println(a+b);
}
public static void main(String[]args){
f1(20,30);
f1(100,200);
}
}
再讲一下带参方法中的形参和实参。
形参:方法定义中的参数
实参:方法调用的参数
public class test1 {
public static void f1(int a,int b){
System.out.println("长"+a+"宽"+b+"的周长是"+(a+b)*2);
}
public static void main(String[]args){
f1(20,30);
f1(100,200);
}
}
public class test2 {
public static void f(double r){
double s=3.14*r*r;
System.out.println("半径为"+r+"的圆的面积是"+s);
}
public static void main(String[]args){
f(10);
f(20);
}
}
带返回值的方法
public class test1 {
public static int f1(int a,int b){
return a+b;
}
public static void main(String[]args){
//直接调用
f1(10,10);
//赋值调用
int sum=f1(10,10);
System.out.println(sum);
//输出调用
System.out.println(f1(10,10));
}
}
return关键字
方法的重载
public class test3 {
public static void bijiao(int a,int b){
if(a==b)
System.out.println("a等于b");
else
System.out.println("a不等于b");
}
public static void bijoao(byte a,byte b){
if(a==b)
System.out.println("a等于b");
else
System.out.println("a不等于b");
}
public static void bijoao(short a,short b){
if(a==b)
System.out.println("a等于b");
else
System.out.println("a不等于b");
}
public static void bijoao(long a,long b){
if(a==b)
System.out.println("a等于b");
else
System.out.println("a不等于b");
}
public static void main(String[]args){
bijiao(10,10);
bijiao(10,20);
bijoao(10,10);
bijoao(10,20);
bijoao(10,10L);
bijoao(10L,10);
}
}
方法在内存中是在栈区的
方法的值传递
方法小练
数组遍历
//设计一个方法遍历数组
public class test4 {
public static void bianli(int[]arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
System.out.print("\n");
}
public static void main(String[]args){
int[]arr={1,2,3,4,5};
int []arr2={4,5,34,546,6,54,21,34,2,24,32,123,312,4};
bianli(arr);
bianli(arr2);
}
}
数组最大值
public class test4 {
public static int Max (int[]arr){
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(max<arr[i])
max=arr[i];
}
return max;
}
public static void main(String[]args){
int[]arr={1,2,3,4,5};
int []arr2={4,5,34,546,6,54,21,34,2,24,32,123,312,4};
System.out.println(Max(arr));
System.out.println(Max(arr2));
}
}
判断是否存在
public class test5 {
public static boolean f(int []arr,int n){
boolean flag=false;
for(int i=0;i<arr.length;i++){
if(arr[i]==n){
flag=true;
}
}
return flag;
}
public static void main(String[] args) {
int []arr={1,2,3,4,5,6,7,8,9,10};
if(f(arr,11))
System.out.println("找到了");
else
System.out.println("没找到");
}
复制数组
public class test6 {
public static void copy(int []arr,int from,int to){
int []arr1=new int[to-from+1];
for(int i=from-1,j=0;i<=to-1;i++){
arr1[j]=arr[i];
j++;
}
for(int i=0;i<arr1.length;i++)
System.out.print(arr1[i]+" ");
}
public static void main(String[] args) {
int []arr={1,2,3,4,5,6,7,8,9,10};
copy(arr, 2, 5);
}
}