Java基础3.0
一.方法
1.方法的定义:
定义方法的语法:修饰符 返回值类型 方法名(参数列表){ 方法体 }
示例.定义一个方法:
public static int max(int num1, int num2){
int result;
if(num1>num2)
result = num1;
else
result = num2;
return result;
}
示例.调用一个方法:
int z = max(x,y);
示例.测试数字max的方法:
public class TestMax{
public static void main(String[] args){
int i = 5;
int j = 2;
int k = max(i,j);
System.out.println("The maximum of " + i + "and" + j + "is" +k);
}
public static int max(int num1, int num2){
int result;
if(num1>num2)
result = num1;
else
result = num2;
return result;
}
}
值传的分析:
2.方法的作用:
- 方法可以用于定义重复使用的代码以及组织
- 方法可以简化编码。
3.void方法与返回值方法
比较两种代码
代码一
public class TestVoidMethod{
public static void main(String[] args){
System.out.print("The grade is");
printGrade(78.5);
System.out print("The grade is");
printGrade(59.5);
}
public static void printGrade(double score){ //不同点
if(score>=90.0){
System.out.println('A');
}
else if (score>=80.0){
System.out.println('B')
}
else if (score>=70.0){
System.out.println('C')
}
else if (score>=60.0){
System.out.println('D')
}
else {
System.out,println('F');
}
}
}
代码二
public class TestReturnGradeMethod{
public static void main(String[] args){
System.out.print("The grade is " + getGrade(78.5));
System.out.print("\nThe grade is " + getGrade(59.5));
}
public static char getGrade(double score){ //不同点
if(score>=90.0){
return 'A';
}
else if (score>=80.0){
return 'B';
}
else if (score>=70.0){
return 'C';
}
else if (score>=60.0){
return 'D';
}
else {
return 'F';
}
}
}
}
不同点:
- 代码一中的
printGrade()
是一个void方法,它不包含返回值,所以对void方法的调用必须是一条语句,因此必须在main里让printGrade()
作为一条语句调用,如printGrade(78.5);
- 代码二中所定义的
getGrade()
返回的是一个数字,我们可以在在任何出现的地方被调用,如:System.out.print("The grade is " + getGrade(78.5));
- 注意:return语句对于void方法不是必需的,但是它可以用于终止方法并返回到方法的调用者。语法为:
return;
4.按值传参
- 按值传参其实是通过传值的方式将实参的值传给形参。
示例.交换数值
public class TestPassValue{
public static void main(String[] args){
int num1 = 1;
int num = 2;
System.out.println("Before invoking the swap method ,num1 is " + num1 + "and num2 is " + num2);
swap(num1,num2);
System.out.println("Before runing the swap method , num is" + num1 + "and num2 is " + num2);
}
public static void swap(int n1, int n2){\
System.out.println("\tInside the swap method");
System.out.println("\t\tBefore swapping, n1 is" + n1 + "and n2 is" + n2);
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("\t\tAfter swapping,n1 is " + n1 + "and n2 is " + n2);
}
}
- 在调用swap方法前,num1为1而num2为2.在调用swap方法后仍为1和2 ,这是因为他们的实际的值(即实参)没有因为swap方法而进行调用,num1和num2只是将自己的值传递给n1和n2,但是n1和n2有独立与num1和num2的存储空间,所以,n1和n2的改变并不会影响num1和num2的内容。
5.示例学习.生成随机字符
示例.显示175个随机的小写字母
public class TestRandomCharacter{
public static void main(String[] args){
final int NUMBER_OFCHARS = 175;
final int CHARS_PER_LINE = 25;
for (int i = 0; i < NUMBER_OF_CHARS; i++){
char ch = RandomCharacter.getRandomLowerCaseLetter();
if ((i + 1) % CHARS_PER_LINE ==0)
System.out.println(ch);
else
System.out.print(ch);
}
}
public class RandomCharacter{
public static char getRandomCharacter(char ch1, char ch2){
return (char)(ch1 + Math.random()*(ch2-ch1+1));
}
public static char getRandomLowerCaseLetter(){
return getRandomCharacter('a', 'z');
}
public static char getRandomUpperCaseLetter(){
return getRandomCharacter('A', 'Z');
}
public static char getRandomDigitCharacter(){
return getRandomCharacter('0', '9');
}
public static char getRandomCharacter(){
return getRandomCharacter('\u0000','\uFFFF');
}
}
}