黑黄皮JAVA语言程序设计与数据结构(基础篇)-01

开讲第六章方法了,这一章是为了让算法更加规范好读。这里记录一下我的学习笔记,不只有方法的内容。

欢迎提出意见和更改建议只是简单告诉我哪里错的话请态度亲和,但如果有更改意见,那就超级热烈欢迎),如果有什么不明白的也请评论区告诉我,我们一起探讨。听着歌单敲下的文字,有的歌曲比较“激进(?)”,所以有的文字比较放肆,请带着欢乐的情感来看吧。

我准备分两部分记我的笔记:

一、封装/化简函数

像有函数要实现三段加法:从2加到12,从5加到15,从9加到19,这时候可以用

for(i = 1; i <= 11; i++){
    int sum = 0;
    sum += i;
}

System.out.print("sum is " + sum);

但是代码里面有三段这样的代码,有重复性,我可以写一个sum函数把这种思想封装起来,当我们的成百上千的函数文件都有这个思想的时候,用封装函数可以减少工作量,修改的时候也简单,直接改变头文件的sum函数就好。

package book02;

public class exercise01 {

	public static int sum(int a, int b) {
		int sum = 0;
		
		for(int i = a ; i <= b ; i++) {
			sum += i;
		}
		
		return sum;
	}
	public static void main(String[] args) {
		System.out.println("Sum from 1 to 11 is " + sum(1,11));
		System.out.println("Sum from 19 to 101 is " + sum(19,101));
		System.out.println("Sum from 50 to 110 is " + sum(50,110));
	}
}

二、数值传递

由几道课后例题来讲解:

第一就是把定义的max函数里面的max改了,改成2,但是void类型就说明了这个函数只是个操作,你想返回值,所以加上了return,这个是不行的,就算返回了max,也不改变main里面的max,他俩一个是实际参数,一个是形式参数,只是碰巧同名了,电脑给他俩分配的内存空间都是不一样的,在这个函数里面,哪一个变了都不会影响另一个(当然了,我这么说也是提醒这个函数不会,有的函数形参和实参是有交集的)。

第二个关键是要帮助我们理清一个概念,void只是一个操作过程。接着看while循环的过程,先是过一遍method函数,之后是i++,这中间编译器是这么运行的,到method了,执行method并输出,之后再返回i++,i符合while条件,那就继续。仔细想一下我对这个代码的感受,这里用二维空间和三维空间分别记录一下。在二维空间里面是种画圈的感觉,while和method交集是很少的,就像文氏图相交了那么一点;在三维空间里面,可以想想这样的项链:一条线+一个小饰品,这条线就是while循环,method是小饰品,本质上是两个东西,只是在那个时空里面组合并被我们使用了。第三第四也是这样,比一和三复杂,但是思想是一样的,有不理解的欢迎评论区留言。

三、甜点

1.这本书的开头有这样一句话:新手不必知道为什么Java语言开头要写这个public static。课堂上老师讲了一点:Java是面相对象的语言,public(公有方法)static(静态/类方向),他们都是修饰符,在Eclipse IDE里面,只有输入了public,编译器才会执行你的代码(目前我的理解是这样的 ,回来再看这篇文章时,不正确再改)。再进一步讲这两个概念,联网的时候敲一个Math.,你会发现输入那个“.”之后会弹出一个列表,全是Math类的各种封装函数,这些就是我说的公共方法,是所有人都可以用的,像我做过的unity3D新手视频里面,讲师有时候点“.”就不会有方法弹出,这种是私人方法,自己定义的,但就算是全部都是私人方法,最前面的public还是不能丢,不然编译器不会执行你的代码;static是静态/类的意思,像Math,这个就是静态方法,具体解释啥的忘了,还是回来再来看的时候在搞搞。嘻嘻。

2.重载方法:这里放个图片,介绍一下待会要用的概念吧。

方法名相同,参数列表不同。例如,

哎呀..不会写哈,这里大概说一下吧,看到k1 =  int sum(int ,int),k2 = double  sum(double ,double),没必要重新定义一个函数来计算k2,k1和k2的不同就是参数不同,那用相同的....等等,我有想法了,参数不同,那我这个代码岂不是添加一下参数就好嘛??

奇奇怪怪的,没报错,就是有警告,说i,j,k1,k2没用,这个好解决,把i,j删除,之后再加上输出System.out.print(“k1 is ” + k1 + “k2 is ” + k2);,算是成了吧,重载函数就是定义同名函数,之后用哪个就让编译器选,要是int就第一个,是double是第二个。

3.听到一个名词叫计算思维。跟数学思维不一样,计算思维是说要拆解大问题,把它变成小问题。这就要求看到一个问题的时候,自顶向下的设计整个问题的整体轮廓,细化成不同的任务块。接着自底向上开始实现。

4.值传递:A = B;他们地址不一样,改变A,B不一定变。指针传递:两个指针指向同一片内存,内容的值变了,指针A和指针B也就变了。

5.

写这个好快乐啊,哎呀,今天还是1024程序员节

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值