方法
方法的含义
定义: 方法就是用来完成解决某件事情或实现某个功能的办法。
方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。方法,一般都有一个返回值,用来作为事情的处理结果。
方法的定义
其格式为:
/*方法的定义如下修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){执行语句………return 返回值;}*/
示例:
//例如:定义一个方法public static void methodName(int k,int g){//publics static 修饰符//void 返回值类型//methodName 方法名//int k 参数列表,与局部变量的声明方式一样 //执行语句 return k+b}
修饰符: 方法的修饰符比较多,有对访问权限进行限定的 。目前默认为public static
返回值类型:用于限定方法返回值的数据类型 ,可以是基本数据类型也可以是引用数据类型
方法名:就是方法的名字,遵照Java的变量(标识符)的语法规则和规范。
参数类型: 用于限定调用方法时传入参数的数据类型 。可以是基本数据类型也可以是引用数据类型。
可以由参数也可以么有参数。
若是有多个参数,中间用,分隔。
方法定义的时候,这个参数都成为形式参数;相当是局部变量,只声明不赋值。
在方法定义的时候,若是声明了参数类型类型,则调用此方法的时候必须赋值(传入参数)。
执行语句:是解决问题的代码。
return:
一是提前结束方法
二是返回最终的结果,返回的结果的数据类型要与返回值数据类型相一致。
方法的调用
有返回值的调用
方法名(实参):执行方法中的代码,共有三种方法可以供调用:
实参:方法调用的时候,传入的参数,其数据类型要与方法定义的时候的形式参数相一致。
直接调用:方法名(实参)
- 有返回值的方法不建议使用此方法;
- 一般使用在没有返回值的方法中
赋值调用
赋值调用:数据类型 变量名=方法名(实参);
- 一般使用在有返回值类型的方法中
输出调用:System.out.println(方法名(实参));
代码如下:
public class TestMethodDemo01{ public static void main(String[] args){ getPI();//直接调用,不建议 double d=getPI();//赋值调用 System.out.println(getPI());//输出调用 } public static double getPI(){ return 3.1415926; } public static double test(char a,int n){ for(i=1;i<=n;i++){ System.out.print() } }
没有返回值的调用
就是返回值类型为void;
/*修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){执行语句………return 返回值;}*///例如:定义一个方法public static void methodName(int k,int g){//publics static 修饰符//void 返回值类型,该类型为没有返回值类型//methodName 方法名//int k 参数列表,与局部变量的声明方式一样 //执行语句 return k+b}
参数
参数可分为形式参数和实际参数
形式参数(形参):定义方法时候,方法名后面()中的参数。相当于局部变量的声明。
实际参数(实参):调用放到是时候,方法名后面()中的参数。相当于给局部变量赋值。
实际参数和形式参数其数据类型、顺序都要一致。
方法签名:(方法名+参数列表):标识方法的唯一
方法的兼容类型
形参和实参: 形参的类型>=实参的类型 返回值的数据类型<=方法返的回值类型<=接收返回值的变量类型:
接收返回值的变量类型:就是接收返回值 的数据类型
方法返回值类型:就是方法就是符号后面的 返回值类型
返回值的数据类型:就是return后面的数据的数据类型
return的使用
- 在有返回值类型中,使用return
- 提前结束该方法
- 返回最终结果
- 在没有返回值类型中
- 可以不使用return,建议使用该方便
- 可以使用return,作用提前结束该方法。
出现不可达语句的集中情况的分析
不可达语句:
- 一定会执行到的return后面的语句;
- 因为提前结束该方法导致无法执行后面的代码
- break后
- 因为提前结束该循环导致无法执行后面的代码
- 死循环后面
- 因为前面的代码用于无法执行完毕,导致无法执行后面的代码。
- continue后面
- 因为提前结束本次循环,导致无法执行后面的代码
- while(false){语句}
- 系统认为判断条件为false的时候,不会执行该语句。
- 可以采用赋值给变量,利用变量欺瞒系统。
代码如下:
System.out.println();{//蒙蔽编译器boolean flag=true; while(flag){//若是条件直接为false,则系统报错。 System.out.println("循环体"); } System.out.println("循环后面的代码");}
使用方法的好处
- 隐藏方法实现的细节,可以提高安全性
- 简化代码,可以多次复用代码。
方法的重载
定义:重载就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数。
个人理解:就是在同一个类中,只按照函数名相同,参数列表不同来区分是否是重载。
重载的无关因素
跟修饰符、返回值以及参数列表中相同类型中的参数名称无关。
//与public static 修饰符无关 //与void 返回值类型无关//与int a中的a 参数列表中的 参数名称无关public static void getSum(int a,int b){ System.out.println("求2个数的和int,int"); System.out.println(a+b); }
重载的有关因素
与参数列表中的数据类型、顺序以及个数有关
public class OverloadDemo04 { //主方法 public static void main(String[] args){ getSum(1.0,2); } //求2个数的和 public static void getSum(int a,int b){//a与b交换位置,仍是同一个的方法,构成不了重载 System.out.println("求2个数的和int,int"); System.out.println(a+b); } public static void getSum(int b,double a){//参数列表数据类型不一致,构成重载 System.out.println("求2个数的和int,double"); System.out.println(a+b); } public static void getSum(double a,int b){//参数列表属性不一样,构成重载 System.out.println("求2个数的和double,int"); System.out.println(a+b); } //求2个数的和 public static void getSum(int a,int b,int c){//参数个数不一致,构成重载 System.out.println("求3个数的和int,int,int"); System.out.println(a+b+c); }}
数组
数组的含义
数组的含义:数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。
数组与变量的区别
变量只能存入一个数据,而数据可以存入多个数据并且是有序排列的。
数组的声明方式(三种)
动态初始化(一种)
- 第一种声明方式(动态初始化)//先声明并开辟数组空间。
- 数据类型[] 数组名;
- 类型数据 数组名[];
- 数据类型:基本数据类型或引用数据类型。
- 数组名:就是标识符,完全遵照Java中的规则和规范。
- 在同一个数组中,只能存放同一种类型的数据, 数据类型可以是任何相同的数据类型 。
备注:若是声明是int变量,只能存储int变量的数组。
静态初始化(两种)
- 第二种声明方式//声明数组的同时并赋值
- 数据类型[] 数据名=new 数据类型{};
- 第三种声明方式//声明数组的同时并赋值
- 数据类型[] 数据名={};
示例:
public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test1 = new String[6]; test1[0] = "数组0"; test1[1] = "数组1"; //第二种 例: String[] test3 = new String[]{"数组0","数组1","数组2","...."}; //第三种 例: String[] test2 = {"数组0","数组1","数组2","...."}; }}
数组的使用
数组的索引:根据数组的索引可以精确的定位到数组中的每一个的位置,对这个位置上是数据进行增加、删除、修改、查询。
数组的索引默认从0开始,数组的长度可使用数组.length-1得到
数组的遍历(两种方式)
普通for循环
语法格式如下:
for(初始化条件;判断条件;迭代因子){ 执行语句;}
增强for循环|for each
语法格式如下
//for..each|增强for 获取值for(数据类型 变量名: 数组名){ 变量->数组中从前到后的每一个空间的数据值}
原文地址:https://www.cnblogs.com/wuzhaoming/p/11707726.html