方法
//主方法_程序执行的入口
public static void main (String[] args)
//其他遇到过的方法
Scanner sc=new Scanner(System.in);
sc.nextInt();
sc.next();
使用对象名来调用方法/使用类名去调用方法
方法——用来解决一类问题的代码的有序组合(轮子,函数)
方法声明
与主方法结构相对应
方法在类的内部定义!!!
方法分类
无参无返回值
package mythod;
//无参无返回值
public class Mython {
//输出一行*号的方法
public void printStar() {
System.out.println("**********************");
}
public static void main(String[] args) {
Mython my=new Mython();
my.printStar();
System.out.println("hello!");
my.printStar();
}
}
无参带返回值
Scanner类中的next();就是无参返回值为string类型的
package mythod;
//无参有返回值
public class Mython2 {
public static int area() {
int area=5*10;
return area;
}
public static void main(String[] args) {
System.out.println(area());
}
}
有参无返回值
package mythod;
//有参无返回值
import java.util.Scanner;
public class Mython3 {
public static void max(float a,float b) {
if(a>b)
System.out.println(a);
else
System.out.println(b);
}
public static void main(String[] args) {
System.out.println("请输入两个数:");
Scanner sc=new Scanner(System.in);
float a=sc.nextFloat();
float b=sc.nextFloat();
max(a,b);
}
}
有参有返回值
package mythod;
//有参有返回值
import java.util.Scanner;
//有参有返回值
public class Mython4 {
public static int fac(int n) {
int result=1;
for(;n>0;n--)
result*=n;
return result;
}
public static void main(String[] args) {
System.out.println("请输入一个整数");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(n+"的阶乘为"+fac(n));
}
}
数组作为方法参数
一维数组参数传值时不需要传入数组大小
package mythod;
//数组作为方法参数
public class Mython5 {
public static void printArr(int[] arr) {
for(int n:arr)
System.out.print(n+" ");
System.out.println();
}
public static void main(String[] args) {
int[] arr= {1,2,3,4,5};
printArr(arr);
}
}
实例:查找数组中元素
package mythod;
import java.util.Scanner;
public class ArrSearch {
public boolean search(int n,int[] arr) {
for(int i:arr) {
if(i==n)
return true;
}
return false;
}
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
Scanner sc=new Scanner(System.in);
System.out.print("请输入您想在数组中查找的元素: ");
int n=sc.nextInt();
ArrSearch as=new ArrSearch();
System.out.println(as.search(n,arr));
}
}
方法重载
方法名相同,但参数列表不同。(为了应对不同类型的数据,提高方法的使用效率,减少方法名记忆量)
//方法重载案例实现
package mythod;
public class Reload {
//求int类型的和
public int sum(int a,int b) {
return a+b;
}
//求double类型的和
public double sum(double a,double b) {
return a+b;
}
//求数组类型的和
public int sum(int[] arr) {
int sum=0;
for(int i:arr)
sum+=i;
return sum;
}
public static void main(String[] args) {
int a=5,b=10;
int[] arr= {1,2,3,4,5};
Reload r=new Reload();
System.out.println("int类型的累加和为:"+r.sum(a,b));
System.out.println("double类型的累加和为:"+r.sum(2.5,6.5));
System.out.println("数组类型的累加和为:"+r.sum(arr));
}
}
相同的方法名可以用于不同的数据类型
基本数据的传值
基本数据传值到方法中进行计算后,不会对原本的数据进行改变。
数组的传值
数组的传值传递的是首地址,在方法中对数组元素进行的改变会影响到数组本来的值(类似于参数传址)
可变参数列表(已知数据类型但未知个数的变量)
可变参数列表格式:
public void search(int... a)
可以输入任意多个整型数据,也可以直接传入整个数组(无论长度)
可变参数列表必须是参数列表的最后一个参数
package mythod;
//可变参数列表实现
public class Changeable {
public static void search(int n,int...a) {
for(int i:a)
{
if(i==n) {
System.out.println(true);
return;
}
}
System.out.println(false);
}
public static void main(String[] args) {
search(5,1,2,3,4,5,6);
}
}
本质上相当于(int[] a)
但不能反过来用,数组参数不能输入多个变量
Java默认int...a
与int[] a
等价,因此这两个不能相互重载
可变参数列表所在的方法在重载方法中是最后被访问的(优先级最低)
方法的调试
F6进行下一步
F5进入方法内逐步调试
F7由方法内部返回到调用处
实例:
package part1;
import java.util.Scanner;
//Java基础部分实战案例
public class Work {
public int[] insertData() {
System.out.println("请输入数据");
Scanner sc=new Scanner(System.in);
int[] a=new int[10];
for(int i=0;i<9;i++) {
System.out.println("请输入第"+(i+1)+"个元素");
a[i]=sc.nextInt();
}
return a;
}
public void showData(int[] a,int length) {
System.out.println("数组元素为:");
for(int i=0;i<length;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public void insertAtArray(int[] a,int n,int k) {
int[] b=new int[10];
int i=0;
for(i=0;i<k;i++)
b[i]=a[i];
b[i]=n;
i++;
for(;i<b.length;i++)
b[i]=a[i-1];
for(int j=0;j<10;j++)
a[j]=b[j];
}
public void divThree(int[] a){
System.out.println("能被3整除的数据有:");
for(int i:a) {
if(i%3==0&&i!=0)
System.out.print(i+" ");
}
System.out.println();
}
public void notice(){
System.out.println("*****************************************");
System.out.println(" 1-插入数据");
System.out.println(" 2-显示所有数据");
System.out.println(" 3-在指定位置处插入数据");
System.out.println(" 4-查询能被3整除的数据");
System.out.println(" 0-退出");
System.out.println("*****************************************");
}
public static void main(String[] args){
System.out.println("欢迎使用本数据管理程序!");
System.out.println("请根据提示进行操作");
Scanner sc=new Scanner(System.in);
int i;int[] a= {};
Work w=new Work();
do{
w.notice();
i=sc.nextInt();
switch(i){
case 0:{
break;
}
case 1:{
a=w.insertData();
break;
}
case 2:{
int len=0;
for(int k:a) {
if(k==0)
break;
len++;
}
w.showData(a, len);
break;
}
case 3:{
System.out.println("请输入要插入的数据:");
int p=sc.nextInt();
System.out.println("请输入要插入的位置:");
int q=sc.nextInt();
w.insertAtArray(a, p, q);
break;
}
case 4:{
w.divThree(a);
break;
}
default:{
System.out.println("错误输入!请重新输入!");
break;
}
}
if(i==0) {
System.out.println("感谢使用!");
break;
}
}while(true);
}
}