方法的定义
方法是为了完成一个操作而组合在一起的语句组,为了一次性编写好通用的代码而无需重新编写。
方法的定义与调用
1.方法的定义
方法的定义由方法名、参数、返回值类型以及方法体组成。定义方法的语法如下:
修饰符 返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
方法头是指方法的修饰符、返回值类型、方法名和方法的参数。
方法又可以分为带返回值和不带返回值(void)两种
1)带返回值
修饰符 返回值类型 方法名(参数){
方法体;
return 返回值;
}
注意:必须有返回值。即return+??
2)void方法
修饰符 void 方法名(){
方法体;
调用语句;
}
注意:对void方法的调用必须是一条语句。void方法不需要return语句,但它能用于终于方法并返回到方法的调用者,他的语法是:
return;
这种方法很少用但是对于改变void方法中的正常流程控制很有用。
2.方法的调用
方法的调用分为两种:1.有返回值的调用;2.void方法的调用
1)有返回值的方法
如果方法返回一个值,对方法的调用通常就当作一个值。例如:
int large=max(3,4); //调用方法max(3,4)并将结果赋给变量large
System.out.println(max(3,4));//直接将max(3,4)打印输出
2)void方法
如果方法返回void,对方法的调用必须是一条语句。例如:println方法返回void。
System.out.println("Hello Java!");
这种就是println方法返回main中void
3.调用方法时的注意事项
1.方法不调用不执行
2.方法与方法之间是平级关系
3.方法定义是参数用逗号隔开,例如:
public static int reverse(int a,int b){
...
}
4.方法在调用的时候不用再传数据类型。
4.方法的重载
重载方法可以使得你使用相同的名称来定义不同的方法,只需要他们的数据类型不相同即可。也就是说一个类中有两个方法,他们具有相同的名字,但有不同的参数列表。Java编辑器根据方法签名决定使用那个方法。
public static int max(int a,int b){...}
public static double max(double a,double b){...}
public static char max(char a,char b){...}
系统会根据所输入的数据类型来判断调用哪个方法
5.例题
import java.util.Scanner;
/*
1.输入一个整数num long
2.在sumDigits方法中对数字进行拆分
*/
class Demo41
{
public static void main(String[] args){
System.out.print("请输入一个整数:");
Scanner scanner=new Scanner(System.in);
long num=scanner.nextLong();
int sum=sumDigits(num);
System.out.print(sum);
}
public static int sumDigits(long num){
int sum=0;
while(num!=0){
sum+=num%10;
num/=10;
}return sum;
}
}
2.判断数字是否是回文数
import java.util.Scanner;
class Demo42
/*
1.输入一个数字
2.定义reverse方法拆分数字 用a来接收返回后的值
3.定义isPalindorome方法(用b来接收)用来比较 a和number 如果 a==number 是回文数
a!=number 不是
4.主方法调用
*/
{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int number=scanner.nextInt();
//调用方法
int sum=reverse(number);
boolean b=isPalindorome(sum,number);
System.out.println("数字"+sum+"是否是回文数? " +b);
}
public static int reverse(int number){
int sum=0;
while(number!=0){
sum=sum*10+(number%10);
number/=10;
}
return sum;
}
public static boolean isPalindorome(int sum,int number){
if(sum==number){
return true;
}else{
return false;
}
}
}
class Demo44
/*
1.遍历1-20 每次循环里面都有一次对方法m(i)调用
2.方法m(int i)
double sum=sum+1.0*i/(i+1)
3.打印
*/
{
public static void main(String[] args){
double num=0;
for(int i=1;i<=20;i++){
num=num+m(i);
System.out.print(i+" "+" "+num);
System.out.println();
}
}
public static double m(int i){
double sum=1.0*i/(i+1);
return sum;
}
}
4.判断回文数?
/*
主函数:num=0;
1.判断该数是个素数且是个回文数
isPrime(num) isPalindrome(num)
2.count=0开始计数 如果是素数且是回文数 count++ num++
否则 num++
3.当count%10==0 换行
*/
{
public static void main(String[] args){
int count=0;
int num=2;
while(count!=100){
if(isPrime(num)&&weNeed(num)){
System.out.print(num+" ");
count++;
if(count%10==0){
System.out.println();
}
}
num++;
}
}
public static boolean isPrime(int num){ //判断是否是素数
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
public static int isPalindrome(int num){ //做数字的反转
int sum=0;
while(num!=0){
sum=sum*10+(num%10);
num/=10;
}
return sum;
}
public static boolean weNeed(int num){//判断反转过的数字是否与原值相等
return num==isPalindrome(num);
}
}