Java基础知识(方法)

mac2024-07-15  51

1、方法的定义及格式 概念:方法的定义由方法名称、参数、返回值类型以及方法体组成。 语法格式:

修饰符 返回值类型 方法名(参数列表){ ... 方法体 ... return 返回值; }

方法头及方法体: 分类:

无参无返回值方法 无参有返回值方法 有参无返回值方法 有参有返回值方法

注意事项: 定义方法和声明变量有细微的差别,定义指被定义的条目是什么,而声明通常是指为被声明的条目分配内存来存储数据。 2、调用方法 分类:单独调用,赋值调用,语句调用 说明:当程序调用一个方法时,程序控制就转移到被调用的方法。当执行完return语句或执行到表示方法结束的右括号时,被调用的方法将程序控制返还给调用者 注意事项: 对带返回值的方法而言,return语句是 必须的。 每当调用一个方法时,系统会创建一个活动记录(也称活动框架),用户保存方法中的参数和变量。活动记录置于一个内存区域中,称为调用堆栈(call stack)。调用堆栈也称为执行堆栈、运行时堆栈,或者一个机器堆栈,常简称为“堆栈”。当一个方法调用另一个方法时,调用者的活动记录保持不动,一个新的活动记录被创建用于被调用的新方法。T一个方法结束返回到调用者时,其相应的活动记录也被释放。 3、重载方法 引入: 两个数相加,需要一个函数名字getSum,三个数相加需要一个函数名字getSum2,那么有100个数相加,是不是需要getSum100了?那是不是在调用函数时还需要去记住哪个函数名对应多少个参数?这显然是不可能的,所以使用重载这个功能就可以解决问题。 概念: 在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可,这时就形成了重载。重载与返回值类型无关。

void show(int a,float b,char c){}

下面哪些函数和给定函数重载了:

(1)int show(int x,float y,char z)//没有重载,这个函数不允许和给定函数存在于同一个类中。因为会产生调用的不确定性。 (2)void show(float b,int a,char c)//重载了,参数类型不同。 (3)void show(int c,float a,char b)//没有重载,和给定函数一样。不允许存在。 (4)void show(int a,int b,int c)//重载了,因为类型不同。 (5)double show()//重载了,因为个数不同。

4、经典例题 (1)编写一个程序,提示用户输入一个社保号码,它的格式是DDD-DD-DDDD,其中D是一个数字。你的程序应该判断输入是否合法。

import java.util.Scanner; class Class21{ public static void main(String[] args){ /* for(int i=0;i<10;i++) System.out.println(i); */ Scanner scanner=new Scanner(System.in); System.out.print("Enter a SSN:"); String ssn=scanner.nextLine(); if(ssn.length()!=11){ System.out.println("非法!"); return; } for(int i=0;i<ssn.length();i++){ char c=ssn.charAt(i); if(i==3||i==6){ if(c!='-'){ System.out.println("非法!"); return; } }else{ if(c<'0'||c>'9'){ System.out.println("非法!"); return; } } } System.out.println("合法!"); } }

解题思路:对这11个字符进行遍历,第4个和第7个是-,字符必须是11个,除了第4个和第7个字符,其他的必须是0-9的整数。 (2)一些网站对于密码具有一些规则。编写一个方法,检测字符串是否是一个有效密码。假定密码规则如下: 密码必须至少8位字符。 密码仅能包含字母和数字。 密码必须包含至少两个数字。 编写一个程序,提示用户输入一个密码,如果符号规则,则显示Valid Password,否则显示Invalid Passward。

import java.util.*; class Class27{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("请输入一个密码:"); String pwd=scanner.nextLine(); if(isValid(pwd)){ System.out.println("合法!"); }else{ System.out.println("不合法!"); } } public static boolean isValid(String pwd){ return isRight1(pwd)&&isRight2(pwd)&&isRight3(pwd); } public static boolean isRight1(String pwd){ return pwd.length()>=8; } public static boolean isRight2(String pwd){ for(int i=0;i<pwd.length();i++){ char c=pwd.charAt(i); if(isDight(c)&&isLetter(c)){ return false; } } return true; } public static boolean isRight3(String pwd){ int dightCount=0; for(int i=0;i<pwd.length();i++){ char c=pwd.charAt(i); if(isDight(c)){ dightCount++; } } return dightCount>=2; } public static boolean isDight(char c){ return c>'0'&&c<'9'; } public static boolean isLetter(char c){ return (c>'a'&&c<'z')||(c>'A'&&c<'Z'); } }

(3)求100以内的回文素数,一个数字既是回文数字又是素数。

class Demo15{ public static void main(String[] args){ int count=0; int num=2; while(count!=100){ if(isWeNeed(num)){ System.out.print(num+" "); count++; if(count%10==0){ System.out.println(); } } num++; } } public static boolean isWeNeed(int num){ return isSuShu(num)&&isPalindrome(num); } public static boolean isSuShu(int num){ for(int i=2;i<=num/2;i++){ if(num%i==0){ return false; } } return true; } public static boolean isPalindrome(int num){ return num==reverse(num); } public static int reverse(int num){ int sum=0; while(num!=0){ sum=sum*10+num%10; num/=10; } return sum; } }
最新回复(0)