没想到吧,我竟然会一连发两篇博客~( ̄▽ ̄~)
曾经咸鱼的我已经一去不复返了(๑•̀ㅂ•́)و✧
1、理论
1.1、方法的位置
1.方法必须位于类中;
2.方法中不可以再定义方法;
3.一个类可以有多个方法。
1.2、方法的定义
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……){
执行语句;
……
return 返回值;
}
修饰符:决定方法的访问控制权限;
返回值:将计算结果返回给调用者。
1.3、方法的调用
方法只有在调用后才被执行,不然不会执行(简直比我还咸鱼);
常用方式:对象名.方法名();
(ps:若方法被static修饰,则用类名.方法名()调用)
1.4、可变参数
1.可变参数只能出现在参数列表的最后;
2.**…**位于变量类型和变量名之间(前后有无空格都可以);
3.调用可变参数的方法时,编译器会为可变参数隐含创建一个数组。
// 可变参数
public static void getSum2(int...arr) {
int length = arr.length;
System.out.println(length);
for (int m:arr) {
System.out.println(m);
}
}
1.5、方法的重载
同一个类中,可以有一个以上的方法使用相同的方法名称,但是这些方法的参数必须不同(参数个数或类型不同)。
public class Test03 {
public static void main(String[] args) {
add(1, 2);
add(1, 2, 2);
add(1,2.0);
}
// 函数的重载
// 判断重载只和方法的参数有关
public static void add(int a, int b) {
System.out.println(a + b);
}
public static void add(int a, int b, int c) {
System.out.println(a + b + c);
}
public static void add(int a,double b) {
System.out.println(a+b);
}
}
2、重点在上面的理论,下面是一些练手的
2.1、不用在意
public class Test01 {
// main 是默认的主函数 主方法
public static void main(String[] args) {
Test01.printName();
System.out.println("main");
// 调用方法-->类名.方法名()
Test01.printName();
Test01.getSum();
}
// 在控制台打印名字
public static void printName() {
System.out.println("小灰灰");
}
public static void getSum() {
int a = 4;
int b = 6;
int c = a + b;
System.out.println(c);
}
}
public class Test02 {
public static void main(String[] args) {
Test02.printName();
System.out.println("-----");
getSum();// 在同一个类下调用时可以把类名省略
}
public static void printName() {
System.out.println("小灰灰");
Test02.getSum();// 方法之间可以互相调用(main方法除外)
}
public static void getSum() {
int a = 4;
int b = 6;
int c = a + b;
System.out.println(c);
// printName();
// 互相调用导致程序报错
}
}
public class Test04 {
public static void main(String[] args) {
// 方法(无参)
Test04.add1();
// 方法(有参)
Test04.add2(3, 4);
}
public static void add1() {
int a = 6;
int b = 9;
int c = a + b;
System.out.println(c);
}
public static void add2(int a, int b) {
System.out.println("a=" + a);
System.out.println("b=" + b);
int c = a + b;
System.out.println("c=" + c);
}
}
public class Test05 {
public static void main(String[] args) {
Test05.rec(4, 9);// 实参-->实际的参数
Test05.area(4.2);
Test05.printInfo("小灰灰", 17);
}
// 求长方形面积
// a和b是形式参数(形参),无关紧要,可以修改
public static void rec(int a, int b) {
int area = a * b;
System.out.println(area);
}
public static void area(double r) {
double area = r * r * 3.14;
System.out.println(area);
}
public static void printInfo(String name, int age) {
System.out.println("私の名前は " + name + " です");
System.out.println("私の年齢は " + age + " 歳です");
}
}
2.2、练习题
public class Work01 {
public static void main(String[] args) {
// 1
double area=Work01.area(4.2);
System.out.println("圆的面积:"+area);
// 2
Work01.strStudy();
// 3
String string="我并不知道想说什么";
wantWords(string);
// 4
studentInfo("小灰灰", 17);
// 5
Work01.squareArea(4.2);
}
// 1、请你设计一个函数用于求圆的面积
public static double area(double r) {
double area=r*r*3.14;
return area;
}
// 2、请您设计一个函数用于在控制台打印5遍好好学习,天天向上
public static void strStudy() {
for (int i = 0; i < 5; i++) {
System.out.println("好好学习,天天向上+"+(i+1));
}
}
// 3、请您设计一个函数用于在控制台打印5遍我想说的话
public static void wantWords(String string) {
for (int i = 0; i < 5; i++) {
System.out.println(string+"+"+(i+1));
}
}
// 4、请您设计一个函数同时打印学生的名字和年纪大小
public static void studentInfo(String name,int age) {
System.out.println("姓名:"+name+" 年龄:"+age);
}
// 5、请您设计一个函数求正方形的面积
public static void squareArea(double a) {
double area=a*a;
System.out.println("正方形面积:"+area);
}
}
public class Work02 {
public static void main(String[] args) {
// 6
isoscelesTriangle(7);
// 7
sum1(100, 200);
// 8
sum2(0, 100);
// 9
int[] array= {1,2,3,4};
printArray(array);
reverseArray(array);
printArray(array);
}
// 6、请您设计一个函数打印如下类似图案(选做)
public static void isoscelesTriangle(int layer) {
for(int i=1;i<=layer;i++) {
for(int j=1;j<=layer-i;j++) {
System.out.print(" ");
}
for(int k=1;k<=(2*i-1);k++) {
System.out.print("*");
}
System.out.println();
}
}
// 7、请您设计一个函数用于求某个区间数据的总和(例如:100-200)
public static void sum1(int min, int max) {
int sum = 0;
for (int i = min; i <= max; i++) {
sum = sum + i;
}
System.out.println(sum);
}
// 8、请您设计一个函数用于求某个区间数据的奇数的总和
// 或者偶数的总和(选做)
public static void sum2(int min, int max) {
int sumOdd = 0;
int sumEven = 0;
for (int i = min; i <= max; i++) {
if (i % 2 == 0) {
sumEven += i;
} else {
sumOdd += i;
}
}
System.out.println("偶数和:" + sumEven);
System.out.println("奇数和:" + sumOdd);
}
// 9、请您设计一个函数用于逆序打印int类型数组
public static int[] reverseArray(int[] array) {
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = temp;
}
return array;
}
public static void printArray(int[] array) {
System.out.print("{");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
if (i != array.length - 1) {
System.out.print(",");
}
}
System.out.println("}");
}
}
public class Work03 {
public static void main(String[] args) {
// 10
String[] array= {"I","love","you"};
words(array);
System.out.println();
// 11
operations(4, 2);
// 12
String string="abcdgh";
strLength(string);
}
// 10、请您设计一个函数用于将3个英语单词连接成一句话
public static void words(String[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
// 11、请您设计一个函数用于求两个数的四则运算(选做)
public static void operations(int a,int b) {
int plus=a+b;
int reduce=a-b;
int ride=a*b;
System.out.println(a+"+"+b+"="+plus);
System.out.println(a+"-"+b+"="+reduce);
System.out.println(a+"*"+b+"="+ride);
if(b==0) {
System.out.println("除数不能为0");
}else {
int except=a/b;
System.out.println(a+"/"+b+"="+except);
}
}
// 12、请您设计一个函数用于计算字符串的长度
public static void strLength(String string) {
System.out.println("字符串长度为:"+string.length());
}
}
public class Work04 {
public static void main(String[] args) {
// 13
threeFigures(287);
// 14
int result=80;
String grade=grade(result);
System.out.println(grade);
// 15
float[] array= {1.2F,2.3F,3.2F,2.1F};
float difference=difference(array);
System.out.println(difference);
}
// 13、请您设计一个函数分别求三位数的个位、十位,百位
// 例如:287 在控制台打印:287的百位是2,十位是8,个位是7
public static void threeFigures(int threeFigures) {
int single=threeFigures%10;
int ten=(threeFigures/10)%10;
int hundred=threeFigures/100;
System.out.println(threeFigures+"的百位是"+hundred+",十位是"+ten+",个位是"+single);
}
// 14、请您设计一个函数为学生成绩评定等级
// 0-60 及格 60-70良好 70-80佳好 80-100优秀
public static String grade(int result) {
String grade = "";
if (result >= 0 && result <= 100) {
if (result < 60) {
grade = "及格";
} else if (result >= 60 && result < 70) {
grade = "良好";
} else if (result >= 70 && result < 80) {
grade = "佳好";
} else {
grade = "优秀";
}
} else {
return "输入成绩有误";
}
return grade;
}
// 15、请您设计一个函数找出float类型数组中的最大值与最小值的差值
public static float difference(float[] array) {
float min=array[0];
float max=array[0];
for (int i = 1; i < array.length; i++) {
if(min>array[i]) {
min=array[i];
}
if(max<array[i]) {
max=array[i];
}
}
float difference=max-min;
return difference;
}
}
3、方法小结
1.方法要先声明再使用;
2.方法不调用不执行;
3.方法调用一次执行一次;
4.方法里不能再定义方法,即不能嵌套;
5.方法在定义参数是要使用逗号隔开;
6.方法有返回值的情况下(即返回值类型不是void),一定要用retuen带回一个值;
7.函数的结果应该返回给调用者,由调用者处理;
8.return语句的执行将终止函数的执行,即表示函数执行完毕。
最后的最后,大家来猜猜本咸…本人下一篇博客又要到什么时候才写呢(ˉ▽ ̄~)