Java三大特性:封装、继承、多态
方法可以封装
方法优点:重复使用,减少代码冗余,逻辑清晰
一、定义方法
1、完整定义格式
先定义后调用方法
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
/*代码格式
修饰符 返回值类型 方法名(参数类型 参数名,……){
功能代码
return 返回值;
}
*/
int sum=add(5,7);
System.out.println(sum);
}
//求和方法
public static int add(int a,int b){
int sum=a+b;
return sum;
}
}
2、其他定义格式
无返回值void时,不需要return
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
hello();
}
public static void hello(){
System.out.println("无参数返回值的方法");
}
}
二、调用方法
注意:
1、方法平级,无先后关系;方法不能嵌套,不能在方法里定义方法
2、void不需要return,有返回值需要return
3、return语句后不能有代码
4、方法不调用不执行,传递的参数要和方法要求的匹配
5、有返回值的方法可以定义一个变量接收返回值,也可以不接收直接调用或者输出;无返回值的只能直接调用。
案例1:计算前n项和
package com.laogao.practice;
import java.util.Scanner;
public class JavaPractice {
public static void main(String[] args) {
int n;
Scanner scanner=new Scanner(System.in);
System.out.println("你想计算前几项和:");
n=scanner.nextInt();
int sum=sum(n);
System.out.println("前"+n+"项和="+sum);
}
public static int sum(int n){
int numsum=0;
for (int i = 0; i <= n; i++) {
numsum+=i;
}
return numsum;
}
}
案例2:判断奇偶
package com.laogao.practice;
import java.util.Scanner;
public class JavaPractice {
public static void main(String[] args) {
int n;
Scanner scanner=new Scanner(System.in);
System.out.println("你想判断奇偶的数值:");
n=scanner.nextInt();
ifodd(n);
}
public static void ifodd(int n){
if(n%2==0){
System.out.println(n+"是偶数");
}else {
System.out.println(n+"是奇数");
}
}
}
案例3:最值
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
int[] n={1,5,8,6,2,5};
maxnum(n);
}
public static void maxnum(int[] n){
int maxnum=n[0];
for (int i = 1; i < n.length; i++) {
if(maxnum<n[i]){
maxnum=n[i];
}
}
System.out.println("maxnum="+maxnum);
}
}
三、方法内存图,运行原理
方法区(存放方法字节码)、栈内存(运行防范,用哪个方法,就放到栈里,最先放入main方法)-->就像是子弹上膛
四、方法参数传递(面试热点)
1、基本类型的参数传递
形参和实参,实参就是方法中功能代码定义的变量,形参是定义方法时用来接收参数值的。
在调用方法时,将实参的值赋值给了形参,对形参的修改操作,不会影响实参。
2、引用类型的参数传递
引用类型变量中存储的是变量的地址。所以对引用型形参变量的修改,实际上的实参也会变,因为两者指向同一个存储地址。
案例1:打印数组内容
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
int[] n={1,5,8,6,2,5};
printn(n);
}
public static void printn(int[] n){
if (n!=null&&n.length>0) {//为了防止int[] arr=null,以及int[] arr={}
System.out.print("[");
for (int i = 0; i < n.length; i++) {
//System.out.println(n[i]);
System.out.print(i==n.length-1?n[i]:n[i]+", ");//三元表达式
}
System.out.print("]");
}
else {
System.out.println("数组格式有误!");
}
}
}
案例2:查询索引
package com.laogao.practice;
import java.util.Scanner;
public class JavaPractice {
public static void main(String[] args) {
int[] n={1,5,8,6,2,5};
int num;
System.out.println("想检索的数值:");
Scanner scanner=new Scanner(System.in);
num=scanner.nextInt();
int i=findsy(n,num);
System.out.println(i);
}
public static int findsy(int[] n,int num){
if (n!=null&&n.length>0) {
for (int i = 0; i < n.length; i++) {
if (num==n[i]){
return i;//返回遇到的第一个元素索引
}
}
return -1;//没找到
}
else {
System.out.println("数组格式有误!");
return -1;
}
}
}
案例3:比较两个数组是否一样
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
int[] n={1,5,8,6,2,5};
int[] m={1,5,8,7,2};
boolean res=comparearr(n,m);
System.out.println(res);
}
public static boolean comparearr(int[] n,int[] m){
if (n.length==m.length){
for (int i = 0; i < n.length; i++) {
if(n[i]!=m[i]){
return false;
}
}
return true;
}
else {
return false;
}
}
}
五、方法其他形式、技术
1、方法重载
方法名(区分大小写)相同,形参(个数、类型、顺序)列表不同--->识别重载(面试)
调用时会根据参数,调用不同的方法
好处:可读性,同一类型的功能,通过形参展示功能的差异性
package com.laogao.practice;
public class JavaPractice {
public static void main(String[] args) {
//进货
shop();
shop("西红柿");
shop("西瓜",5);
}
public static void shop(){
//System.out.println("进了1箱苹果");
shop("苹果");
}
public static void shop(String str){
//System.out.println("进了1箱"+str);
shop(str,1);
}
public static void shop(String str,int num){
System.out.println("进了"+num+"箱"+str);
}
}
2、单独使用return关键字
可以立即跳出并结束该方法的执行