杨仔的学习日记 D14

开篇碎碎念:

 海口今天的天气简直破天荒的热,34°,出门就被太阳晒得睁不开眼睛,身体也被热浪包围,幸好下午没课可以在寝室里吹空调敲代码学Java,想点杯咖啡结果被商家取消了,绝绝子,算了还是喝开水吧,最近肠胃也不是很好。最近新买了一个显示器敲代码学习的效率简直飞起,再也不用一个屏幕开几个页面眼睛都看花啦,修图也是嘎嘎香,码字效率也飞起!!

正题:

今天摸鱼没学太多,写了两篇python二级考试题,看了Java的方法重载和递归算法

python二级错题:

 数据组织的维度:

一维数据:

由对等关系的有序或无序数据构成,采用线性方式组织

对应列表、数组和集合等概念

二维数据:

由多个一维数据构成,是一维数据的组合形式

表格是典型的二维数据,对应数据中的矩阵

多维数据:

由一维或二维数据在新维度上扩展而成

高维数据:

仅利用最基本的二元关系展示数据间的复杂程度

例如:键值对,字典

文件打开: open和with open

区别:with语句访问完文件后不需要将其关闭,直接使用open()方法时需要用close()方法关闭文件

文件读取:

  • read([size])方法:从文件当前位置起读取size个字节,若无参数size或者为负数,则表示读取至文件结束为止,它范围为字符串对象.
  • readline()方法:从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
  • readlines()方法:读取整个文件所有行,保存在一个列表(list)变量中,该列表可以由Python的for  in 结果进行处理,每行作为一个元素,但读取大文件会比较占内存。

文件的写入

 

append()函数在列表最后添加一个元素

JAVA学习

方法重载机制 : 功能相似的我们可以用方法重载来完成

public class fa{
	public static void main(String[] args){
		int x = sumint(10,20);
		System.out.println(x);
		long y = sumlong(10L,20L);
		System.out.println(y);
		double z = sumdouble(10.2,20.0);
		System.out.println(z);
	}
	public static int sumint(int a,int b){
		return a+b;
	}
	public static long sumlong(long a,long b){
		return a+b;
	}
	public static double sumdouble(double a,double b){
		return a+b;
	}

}
*/

//使用方法重载
//代码简介整齐 功能相似可以使方法名相同
public class fa{
	public static void main(String[] args){
		
		System.out.println(sum(10,20));
		
		System.out.println(sum(10.2,22.2));
		
		System.out.println(sum(10L,80L));
	}
	public static int sum(int a,int b){
		return a+b;
	}
	public static long sum(long a,long b){
		return a+b;
	}
	public static double sum(double a,double b){
		return a+b;
	}

}

什么时候考虑使用方法重载?

在同一个类中如果功能1和功能2的功能相似

那么可以考虑将他们的方法名一至,既美观又便于记忆。

如果两个功能不相似那么使用方法重载就会很麻烦。

使用方法重载条件

1.在同一个类中

2.方法名相同

3.参数列表不同(个数、排序、类型不同)

//参数个数不同
public class fa{
	public static void main(String[] args){
		m1();
		m1(100);
	}
	public static void m1(){
		System.out.println("m1无参数的执行");
	}
	public static void m1(int a){
		System.out.println("m2有一个int");
	}
}

排列顺序不一样也可以

递归

方法递归

方法自己调用自己;当递归时程序没有结束条件,一定会发生栈内存溢出错误stackoverrflowError

所以递归一定要有结束条件

假设结束条件是对的,是合法的,递归有时候也会出现栈内存溢出错误,因为可能递归的太深,栈内存不够了,因为一直在压栈;不建议在实际开发中轻易选择递归,用for循环更好,占用内存少;但在极少数情况下不用递归,程序执行不了。

/* for循环求和
import java.util.*;
public class ruguo{
	public static void main(String[] args){
		
		System.out.print("请输入一个整数:");
		Scanner s = new Scanner(System.in);
		int a = s.nextInt();
		int he = 0;
		for (int i=1; i <= a; i++ ){
			he += i;
			
		}
		System.out.println(he);
	}
}
*/

//递归求和
public class di{
	public static void main(String[] args){
		int a = sum(1000);
		System.out.println(a);
	}
	public static int sum(int n){
		if(n == 1){
			return 1;
		}
		return n + sum(n-1);
		
	}
}

使用递归方法时的栈内存变换图像

递归求阶乘
public class di{
	public static void main(String[] args){
		int a = sum(5);
		System.out.println(a);
	}
	public static int sum(int n){
		if(n == 1){
			return 1;
		}
		return n*sum(n-1);
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值