java学习第六天

1.方法

1.1定义有返回值的方法

语法:

public static 数据类型 方法名(参数列表){
  //业务逻辑
  return 定义的该种数据类型的值;
}
  • 定义了方法的返回数据类型,那么该方式必须使用reurn关键字,返回一个该类型的是数据

  • 在调用该方法时,可以定义一个该类型的变量接收返回值

    package com.qfedu;
    
    public class Demo01 {
    	public static void main(String[] args) {
    //		int sum=add(1, 5);
    //		System.out.println(sum);
    //		
    //		int s2=sum(100);
    //		System.out.println(s2);
    		
    		int max=max(12, 23);
    		System.out.println("最大值是:"+max);
    		
    		int s3=sum1(100);
    		System.out.println("偶数和是"+s3);
    	}
    	
    	//定义一个方法,参数两个整数,打印两个整数的和
    	
    	public static int add(int a,int b) {
    		int sum = a+b;
    		
    		return sum;
    	}
    	
    	//定义一个方法,参数时n,返回1+。。。+n的和
    	public static int sum(int n) {
    		int sum=0;
    		for (int i = 1; i <=n; i++) {
    			sum+=i;
    		}
    		return sum;
    	}
    	
    	/*
    	 * 1.两个参数,返回最大值
    	 * 2.参数为一个整数,获取1-n之间的偶数和
    	 */
    	
    	public static int max(int a, int b) {
    		if (a>b) {
    			return a;
    		}else {
    			return b;
    		}
    	}
    	
    	public static int sum1(int num) {
    		int sum=0;
    		for (int i = 1; i <=num; i++) {
    			if (i%2==0) {
    				sum +=i;
    			}
    		}
    		return sum;
    	}
    }
    

1.1.1 return关键字
  • 如果方法定义void,表示该方法没有返回值
    • 返回类型为void,也可以定义return关键字,后面不可以定义任何类型的值
  • 如果一个方法执行了return关键字,那么该方法就运行结束
package com.qfedu;

public class Demo02 {
	public static void main(String[] args) {
		
	}
	
	/*
	 * 如果方法定义void,表示该方法没有返回值
	 * 返回类型为void,也可以定义return关键字,后面不可以定义任何类型的值
	 * 如果一个方法执行了return关键字,那么该方法就运行结束
	 */
	public static void test01() {
		
		return;
	}
	private static int max(int a, int b) {
		if (a>b) {
			return a;
		}
		
		return b;
	}
}

1.2递归

  • 方法之间可以相互调用
  • 如果自己调用自己,则成为递归(其实就是循环)
    • 如果是递归,一定有程序的出口,也就是i熬出循环(结束方法)
package com.qfedu;

public class Demo04 {
	public static void main(String[] args) {
		int sum = sum(10);
		System.out.println(sum);
		
		long factorial = factorial(10);
		System.out.println(factorial);
		
		long evenNumberSum = evenNumberSum(10);
		System.out.println(evenNumberSum);
		
		int oddNumberSum = oddNumberSum(5);
		System.out.println(oddNumberSum);
	}
	//计算1+2+3+。。。。+n
	public static int sum(int n) {
		if (n ==1) {
			return 1;
		}
		return sum(n-1)+n;
	}
	
	//计算1*2*3.。。。*n
	public static long factorial(int n) {
		if (n==1) {
			return 1;
		}
		return factorial(n-1)*n;
	}
	
	//使用递归计算1-n之间的偶数和
	/*
	 * evenNumberSum(10) = evenNumberSum(8)+10
	 * evenNumberSum(8) = evenNumberSum(6)+8
	 * evenNumberSum(6) = evenNumberSum(4)+6
	 * evenNumberSum(5) = evenNumberSum(5-3)+4
	 */
	public static long evenNumberSum(int n) {
		if (n%2==0) {
			if (n==2) {
				return 2;
			}
			return evenNumberSum(n-2)+n;
		}
		n--;
		return evenNumberSum(n-2)+n;		
	}
	
	/*
	 * 递归计算1-n的奇数和
	 * oddNumberSum(9)=oddNumberSum(7)+9
	 * oddNumberSum(7)=oddNumberSum(5)+7
	 * 
	 */
	
	public static int oddNumberSum(int n) {
		if (n%2!=0) {
			if (n==1) {
				return 1;
			}
			return oddNumberSum(n-2)+n;
		}
		n--;
		return oddNumberSum(n-2)+n;
		
	}
	
	
}

1.2.1

斐波那契数列

package com.qfedu;

public class Demo05 {
	public static void main(String[] args) {
		long fibonacci = fibonacci(5);
		System.out.println(fibonacci);
			
		long sumFib = sumFib(7);
		System.out.println(sumFib);
	}
	//斐波那契数列
	public static long fibonacci(int n) {
		if (n==1) {
			return 0;
		}
		if (n==2) {
			return 1;
		}
		return fibonacci(n-2)+fibonacci(n-1);
	}
	
	public static long sumFib(int n) {
		if (n==1) {
			return 0;
		}else if(n==2) {
			return 1;
		}
		return fibonacci(n)+sumFib(n-1);
	}
}

2.数组

1.数组的本质

一组连续的存储空间

  • 数组有长度
  • 有数据类型,每份内存只能保存什么类型的数据
  • 可以统一操作每份内存空间中的值

2.数组的创建

语法:

数据类型[] 变量名 = new 数据类型[长度]
package com.qfedu;

public class Demo06 {
	public static void main(String[] args) {
		//定义我们班所有的同学成绩
		
		/*
		 * int[] 表示一种数据类型,表示的是数组
		 * new int[3] 表示在堆内存中分配一个内存空间,会将这个空间分成三份
		 * 所有的引用类型,都保存在堆内存中
		 */
		int[] arr =new int[3];
		String[] arr2=new String[5];
		
		boolean[] arr3=new boolean[10];
		char[] arr4 =new char[5];
		
	}
}

3.数组的操作

对数组的操作,无非就是存值和取值,以及数组的遍历

  • 赋值

    数组名称[下标] =;
    
  • 取值

    数据类型 变量名称 = 数组名称[下标];
    
  • 遍历

    char[] arr1=new char[3];
    arr1[0]='你';
    arr1[1]='-';
    arr1[2]='好';
    for (int i =0; i <arr1.length; i++) {
      System.out.print(arr1[i]);
    }
    

4.数组的默认值

  • 基本类型
    • 整数 0
    • 小数 0.0
    • 布尔 false
    • 字符 空格
  • 引用类型
    • 字符串 null
      • null
        • null是一个值
        • 但是null表示是没有值
        • null值可以赋值给所有的引用类型

5.数组的扩容

数组的长度一旦确定了,下标也就确定,不能再改变

package com.qfedu;

public class Demo09 {
	public static void main(String[] args) {
		/*
		 * 数组的扩容
		 */
		
		int[] arr=new int[2];
		arr[0]=2;
		arr[1]=4;
		
		//此时,根据业务需求,确实需要往这个数组中添加一个新的值5
		//1.创建一个目标长度数组
		int[] newArr=new int[4];
		//2.把原数组的值,按照坐标保存再新数组中
		newArr[0] = arr[0];
		newArr[1] = arr[1];
		
		//3.把目标数组重新赋值给原数组变量
		arr=newArr;
		arr[2] = 5;
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值