假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法。
方法就是完成特定功能的代码块。
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
格式说明:
(1): 修饰符 比较多,后面文章会有详细介绍,目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数,这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者
// 输入n,求1-n之间所有偶数的和
package org.wetmo.demo1;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个数n:");
int n = sc.nextInt();
int sum=add(n);
System.out.println("1-"+n+"之间所有偶数和为"+sum);
}
public static int add(int a){
int sum1=0;
for(int i=1;i<=a;i++){
if(i%2==0){
sum1=sum1+i;
}
}
return sum1;
}
}
/*输入行数,输出如下图像
*
**
***
...
*/
package org.wetmo.demo1;
import java.util.Scanner;
public class MyDemo6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入行数:n");
int n = sc.nextInt();
show(n);
}
public static void show(int a){
for(int i=0;i
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同。
package org.wetmo.demo1;
public class MyDemo7 {
public static void main(String[] args) {
add(1,1);
add(1,2.2);
add(1,1,1);
}
public static int add(int a,int b){
return a+b;
}
public static double add(int a,double b){
return a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
}
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型(后面讲解)。
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
//根据如下代码写出输出结果并画出内存图
package org.wetmo.demo1;
public class MyDemo8 {
public static void main(String[] args) {
int[] arr=new int[3];
arr[0]=11;
arr[1]=12;
arr[2]=13;
int[] arr1 = new int[3];
arr1[0]=20;
arr1[1]=30;
arr1[2]=40;
int[] arr3=arr;
arr[0]=100;
arr3[0]=1000;
arr3[1]=2000;
arr3[2]=3000;
System.out.println(arr[0]);//1000
System.out.println(arr[1]);//2000
System.out.println(arr[2]);//3000
System.out.println(arr3[0]);//1000
System.out.println(arr3[1]);//2000
System.out.println(arr3[2]);//3000
}
}
过程:编译MyDemo8.java,产生编译文件,运行MyDemo8.class调用主方法main(),在栈内存中定义一个int类型的数组,数组名,在堆内存中创建一个长度为3的内存空间(默认值为0),将此内存空间的地址给数组名,数组名通过这个地址访问到这个内存空间,然后赋值。
//将数组中的元素对调,然后输出
package org.wetmo.demo1;
public class MyDemo9 {
public static void main(String[] args) {
int[] arr ={112,34,57,1,90,123,23};
show(arr);
}
public static void show(int a[]){
for(int i=0;i
//将下列数组从小到大排序并输出
arr ={112,34,57,1,90,123,23,67};
package org.wetmo.demo1;
public class MyDemo9 {
public static void main(String[] args) {
int[] arr ={112,34,57,1,90,123,23,67};
show(arr);
}
public static void show(int a[]){
for(int i=0;i=a[j+1]) {
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
//此题采用的是冒泡排序,关于其他数组排序方式后面文章会有介绍