1.概念
是将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码集。
注意:
①方法必须先创建才能用,该过程叫方法定义;
②方法创建后不可直接运行,需要手动使用,该过程叫方法调用。
2.定义格式
public static void 方法名 () {
//方法体
}
//例如,定义一个判断数字是偶数还是奇数的方法,并调用
public class demo01 {
public static boolean isOuNumber (int number){//说明:boolean是带返回值
if (number %2 == 0){
return true;
}
return false;
}
public static void main(String[] args) {
boolean result = isOuNumber(81);
System.out.println(result?"偶数":"奇数");
}
3.调用格式
方法名(); //如 getMax();
4.常见错误:
(1)不可在main方法中定义方法。
(2)注意定义和调用的方法名一致,因为java区分大小写。
6.小知识
栈:先进后出,后进先出。类似于弹夹,先进的在栈底部。
7.带参数的方法
public class demo02 {
//在此处定义
public static void getMax(int a,int b){//说明:void是不带返回值
int max = a>b?a:b;
System.out.println("最大值为:" + max);
}
public static void main(String[] args) {
getMax(5,9); //在此处调用,可随意修改要比较的2个数字
}
}
8.形参与实参
(1)形参:方法定义中的参数。如:int a;
(2)实参:指方法调用中的参数。如:6,a。
9.定义方法的注意事项
(1)方法不能嵌套,即方法中不能再定义方法。
(2)void表示无返回值,return可省略也可不省,但后面不加数据。(否则会报错)
10.方法调用中的三元运算符
public static void main(String[] args){
//将方法的结果传给result。
boolean result = isNumber(3);
System.out.println(result?"偶数":"奇数");
}
11.方法重载
(1)概念:指同一个类中定义的多个同名方法之间的关系。
(2)条件:①多个方法在同一个类中;②多个方法有相同的方法名;③多个方法的参数类型(或数量)不同。(以上条件需同时满足)
(3)注意:
①方法重载不看参数的变量名称的,下面这种不叫方法重载。
public static int sum(int a,int b){
return a+b;
}
//仅改变变量名称,会报错
public static int sum(int c,int d){
return c+d;
}
②方法重载与方法的返回值类型无关,下面这种也不叫方法重载。
public static int sum(int a,int b){
return a+b;
}
//仅将第一行的返回值int改成double,会报错
public static double sum(int a,int b){
return a+b;
}
12.方法参数的传递
(1)基本数据类型(byte/short/int/long/double/float/char/boolean)的参数,形参的改变,不会影响实参的值。请看下面的例子。因为只操作了栈,没有改变堆中内存地址对应的值。
public class demo5 {
public static void change(int num){
num = 20;//形参(在方法定义中的参数)
}
public static void main(String[] args) {
int num = 10;//实参(在方法调用中的参数)
System.out.println("方法调用前num:"+num);
change(num);
System.out.println("方法调用后num:"+num);//请思考此时的num输出后是多少呢?答案:10.
}
}
(2)引用类型(类、数组、接口等)的参数,形参的改变,会影响实参的值。请看下面“数组”的例子。因为不仅操作了栈,还改变了堆中内存地址对应的值。
public class demo6 {
public static void main(String[] args) {
int[] arr = {20,30,40};
System.out.println("调用方法前:"+arr[0]);//结果为20.
change(arr);
System.out.println("调用方法后:"+arr[0]);//结果为100.
}
public static void change(int[] arr){
arr[0] = 100;
}
}
13.方法的案例
(1)使用方法遍历数组。
public class demo7 {
public static void arrBL(int[] arr){
if(arr == null){
return; //空数组就不报错
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
if(i<arr.length-1){
System.out.print(",");
}
}
}
public static void main(String[] args) {
int[] arr = {22,33,44,55,66,77};
int[] arr1 = null;//空数组
arrBL(arr);
arrBL(arr1);
}
}
(2)查找数组的最大值。
public class demo8 {
public static int getMax(int[] arr){
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
}
return max;
}
public static void main(String[] args) {
int[] arr = {2,33,168,1999,88,5999};
int result = getMax(arr);
System.out.println("查找的最大值为:"+ result);
}
}
14.debug调试
(1)概念:debug是程序调试工具,用于查看程序的执行流程,进而调试程序。(bug就是程序发生了错误)
(2)操作流程:
①打断点,鼠标在需要开始的那行前面单击。
②idea快捷键:F8 一步一步调试,F9 直接跳转到下一个断点,F7 直接调试进入方法里面,可查看细节。
(3)例子,debug调试求偶数和。
public class demo14 {
//求10以内的偶数和
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 11; i++) {
if (i%2==0){
sum += i;
}
}
System.out.println("总和为:"+sum);
}
}
15.案例1——逢七过
题目:和朋友聚会时,玩一个游戏:逢七过,规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的位数时,都要说过。(数字在100之内,不含100)
public class test01 {
public static void main(String[] args) {
/**需求分析:数据在1-100之间,用for循环
* 1.根据规则,用if语句判断数据:要么个位是7,要么十位是7,要么能被7整除
* 2.解析:
* 个位:17/10--7,
* 十位:71/10=7,7%10=7,这里不能用 71/10=7,7%7=0,因为 1/10=0,0%7=0结果也一样,
* 实际上 1的十位并不是7,对该条件进行了干扰。
* 整除:14/7=2--0.
* 3.在控制台输出
*/
for (int x = 1; x < 101; x++) {
if(x%10==7 || x/10%10==7 || x%7==0){
System.out.println("当前数字为:"+ x +",直接过!");
}
else {
continue;
}
}
}
}
16.案例2——数组求和
题目:有一个数组,元素是{71,27,33,22,100,87,77,57}。求出该数组中满足要求的元素之和。要求是:元素个位和十位不为7,且是偶数。
//方法一:
public static void main(String[] args) {
int[] arrg ={71,27,33,22,100,87,77,57};
int sum = 0;
for (int x =0;x<arrg.length;x++){
if (arrg[x]%10==7 || arrg[x]/10%10==7 || arrg[x]%2!=0){
continue;
}
else {
sum += arrg[x];
System.out.println("符合规定的数字为:" +arrg[x] +" ");
}
}
System.out.println("结果为:"+sum);
}
//方法二:
public static void main(String[] args) {
int[] arrg ={71,27,33,22,100,87,77,57};
int sum = 0;
for (int x=0;x<arrg.length;x++){
if (arrg[x]%10!=7&&arrg[x]/10%10!=7&&arrg[x]%2==0){
sum += arrg[x];
System.out.println("满足条件的数字为:" + arrg[x]);
}
}
System.out.println("结果为:" + sum);
}
17.案例3——数组比较
题目:定义一个方法,比较两个int数组的数字是否相同。
public class test03 {
public static void main(String[] args) {
int[] arr1 = {11,22,33,44,55};
int[] arr2 = {11,22,33,44,15};
boolean result = compare(arr1,arr2);
System.out.println("两个数组相等么?" + result);
}
public static boolean compare(int[] arr1, int[] arr2){
//数组长度是否相等
if (arr1.length != arr2.length){
return false;
}
//数组内容是否相同
for (int i = 0; i < arr1.length; i++) {
if (arr1[i]!=arr2[i]){
return false;
}
}
//上面条件都不符合,返回true
return true;
}
}
18.案例4——数组查找
题目:已知一个数组 arr = {29,68,33,44,10}; 键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出索引值,如果没有查到,则输出-1.
public class test05 {
public static void main(String[] args) {
int[] arr = {29,68,33,44,10};
Scanner scan = new Scanner(System.in);
System.out.println("请输入需要判断的数字:");
int userData = scan.nextInt();
int result = getIndex(arr,userData);
System.out.println(result==-1?"数组中没有该数字":"数组中有该数字,其索引值为:"+ result);
}
public static int getIndex(int[]arr, int userData){
for (int i = 0; i < arr.length; i++) {
if (arr[i]==userData){
return i;
}
}
return -1;
}
}
19.案例5——评委打分
题目:编程竞赛中,有6个评委为选手打分,分数为0-100的整数。选手的最后得分为:去掉一个最高分和一个最低分后,4个评委打分的平均值,请用代码实现。(不考虑小数)
public class test07 {
/**
* 编程竞赛中,有6个评委为选手打分,分数为0-100的整数。选手的最后得分为:
* 去掉一个最高分和一个最低分后,4个评委打分的平均值,请用代码实现。(不考虑小数)
* 思路解析:
* 1.定义一个长度为6的数组。
* 2.键盘录入的分数存入数组中。
* 3.分别写一个获取最高分、最低分、评委分数总和的方法。
* 4.计算平均分
* 5.输出平均分。
*/
public static void main(String[] args) {
int[] arr = new int[6]; //动态数组,可随时更改数组长度
for (int i = 0; i < arr.length; i++) {
Scanner sco = new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"位评委的分数:");
arr[i] = sco.nextInt();
}
int max1 = getMax(arr);
int min1 = getMin(arr);
int sum1 = getSum(arr);
int ave = (sum1-max1-min1)/(arr.length-2);
System.out.println("最小值为:"+min1);
System.out.println("最大值为:"+max1);
System.out.println("平均分为:"+ave);
}
//获取最大值的方法
public static int getMax(int[] arr){
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
}
return max;
}
//获取最小值的方法
public static int getMin(int[] arr){
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]<min){
min = arr[i];
}
}
return min;
}
//获取总分的方法
public static int getSum(int[] arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
}
20.案例6——反转数组
(1)概念:将正序的数组元素,进行逆序排列。
(2)代码如下:
public static void main(String[] args) {
//先定义一个数组
int[] arr = {33,44,55,66,77,88};
//下面这行“start<end”其实也可以写成“start<=end”,反正处于中间位置没有影响。
for (int start=0,end =arr.length-1;start<end;start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
System.out.print("反转后的数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
if (i<arr.length-1){
System.out.print(",");
}
}
}
暂无评论内容