JAVA基础语法——方法
本文参考内容: 牛客网,此内容仅为本人的学习知识总结。
方法
2.1 方法
概念:也可以叫函数。可以独立完成任务的代码块。可以提高变成的效率,也可以提高程序的可读性,便于后期的维护。
知识点:
语法:修饰符 返回值类型 方法名(参数列表){方法体}
调用:方法名(参数列表)
注意:若没有返回值,则声明类型用void
实列:
package nowcoder2.part02;
/*方法*/
public class MethodDemo1 {
public static void main(String[] args) {
sayHello();
printName("perth");
int randomNum = randomInt();
System.out.println("My lucky number is " + randomNum + " .");
long p = power(2,10);
System.out.println("2^10="+p);
}
//1.
public static void sayHello(){
System.out.println("Hello!");
}
//2.
public static void printName(String name){
System.out.println("My name is "+name+" .");
}
//3.
public static int randomInt(){
return (int) (Math.random() * 100);
}
//4.
public static long power(int x,int y){
return (long) Math.pow(x,y);
}
}
运行结果:
也可以将以上所有的几个方法写成一个方法调用:
package nowcoder2.part02;
/*方法*/
public class MethodDemo1 {
public static void main(String[] args) {
// sayHello();
// printName("perth");
// int randomNum = randomInt();
// System.out.println("My lucky number is " + randomNum + " .");
// long p = power(2,10);
// System.out.println("2^10="+p);
introduce("perth");
}
//1.
public static void sayHello(){
System.out.println("Hello!");
}
//2.
public static void printName(String name){
System.out.println("My name is "+name+" .");
}
//3.
public static int randomInt(){
return (int) (Math.random() * 100);
}
//4.
public static long power(int x,int y){
return (long) Math.pow(x,y);
}
//5.
public static void introduce(String name){
if (name == null || name.equals(" ")){
return;
}
sayHello();
printName(name);
System.out.println("My lucky number is " + randomInt() + ".");
}
}
运行结果:
方法参数
2.2 方法参数
通过一个例子说明:
发现调换两个整数类型的数失败,但调换数组里的元素成功
注:内存中分配空间 引用类型与基本类型的区别
package nowcoder2.part02;
import java.util.Arrays;
/*
* 方法参数
* */
public class MethodDemo2 {
public static void main(String[] args) {
int a=1;
int b=2;
changeNum(a,b);
System.out.println("a="+a+"" +" ,b="+b);
}
//交换两个数
public static void changeNum(int m ,int n){
int t = m;
m = n;
n = t;
System.out.println("m="+m+" ,n="+n);
}
}
此处可以看见a,b并未交换成功。
package nowcoder2.part02;
import java.util.Arrays;
/*
* 方法参数
* */
public class MethodDemo2 {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
changeArr(array);
System.out.println("array= " + Arrays.toString(array));
}
//交换数组中的两个元素
public static void changeArr(int[] arr){
if (arr==null||arr.length<2){
return;
}
int x = arr[0];
arr[0]=arr[arr.length-1];
arr[arr.length-1] = x;
}
}
此处可以发现数组的前后两个元素成功交换;
原理:
可变参数
2.3 可变参数
概念:在定义方法时,声明的数量不确定的参数。 本质是一个数组
声明:修饰符 返回值类型 方法名(类型 参数1,类型…参数N)(最后一个即为可变参数)
注意:只能有一个且访参数列表末尾。
实列:
package nowcoder2.part02;
/*
* 可变参数
* */
public class MethodDemo3 {
public static void main(String[] args) {
System.out.println(sum());
System.out.println(sum(1));
System.out.println(sum(1,2));
System.out.println(sum(1,2,3));
System.out.println(sum(new int[]{1,2,3,4,5}));
}
//求和
public static int sum(int...nums){
int s=0;
for (int num : nums){
s+=num;
}
return s;
}
}
运行结果:
方法重载
2.4 方法重载
概念:在一个类中,定义多个名称相同,参数列表不同的方法,叫做方法重载;
查看:Ctrl+N->输入->structure->a-z
打开后发现代码繁多,可以通过首字母提示查看,
实列:
package nowcoder2.part02;
/*
* 方法重载
* */
public class MethodDemo4 {
public static void main(String[] args) {
System.out.println(sum(1,2,3,4));
System.out.println(sum(5.0,6.7,9.3));
System.out.println(sum(5,6,9.3));
}
//求和:同意方法名,但参数类型不同
//int
public static int sum(int...nums){
System.out.println("sum for int");
int s=0;
for (int num:nums){
s=+num;
}
return s;
}
//double
public static double sum(double...nums){
System.out.println("sum for double");
double s=0;
for (double num:nums){
s+=num;
}
return s;
}
}
方法递归
2.5 方法递归
概念:一个方法调用它本身,被称为方法递归; 递归是一种隐式的循环,他会重复执行某段代码,却无序循环控制。
作用:为某些编程问题提供了最简单的解决方案
注意:一些递归算法会快速消耗大量的CPU及内存资源,慎用慎用!!!
实列1:
package nowcoder2.part02;
/*
* 方法递归
* */
public class MethodDemo5 {
public static void main(String[] args) {
System.out.println(factorial(5));
}
//阶乘 n!=n*(n-1)!
public static long factorial(int n){
if (n==1){
return 1;
}
System.out.println(n);
return n * factorial(n-1);
}
}
运行结果:
实列2:
package nowcoder2.part02;
/*
* 方法递归
* */
public class MethodDemo5 {
public static void main(String[] args) {
System.out.println(fibonaci(5));
}
//斐波那切数列
//1,1,2,3,5,8,13,21,34,...
//f(1)=1,f(2)=1,f(x)=f(x-1)+f(x-2)
public static long fibonaci(int n){
if (n==1||n==2){
return 1;
}
return fibonaci(n-1) + fibonaci(n-2);
}
}