摘要: 栈 上节我们介绍了函数的基本概念,在最后我们提到了一个系统异常java.lang.StackOverflowError,栈溢出错误,要理解这个错误,我们需要理解函数调用的实现机制。本节就从概念模型的角度谈谈它的基本原理。 我们之前谈过程序执行的基本原理:CPU有一个指令指示器,指向下一条要执行的指令 阅读全文
posted @ 2017-01-06 08:48 黄金时代1.0 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 函数 前面几节我们介绍了数据的基本类型、基本操作和流程控制,使用这些已经可以写不少程序了。 但是如果需要经常做某一个操作,则类似的代码需要重复写很多遍,比如在一个数组中查找某个数,第一次查找一个数,第二次可能查找另一个数,每查一个数,类似的代码都需要重写一遍,很罗嗦。另外,有一些复杂的操作,可能分为 阅读全文
posted @ 2017-01-06 08:47 黄金时代1.0 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 循环 上节我们介绍了流程控制中的条件执行,根据具体条件不同执行不同操作。本节我们介绍流程控制中的循环,所谓循环就是多次重复执行某些类似的操作,这个操作一般不是完全一样的操作,而是类似的操作。都有哪些操作呢?这个例子太多了。 展示照片,我们查看手机上的照片,背后的程序需要将照片一张张展示给我们。 播放 阅读全文
posted @ 2017-01-06 08:46 黄金时代1.0 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本。 本节讨论在Java中进行字符处理的基础 - char,Java中还有Character, String, StringBuffer, Stri 阅读全文
posted @ 2017-01-06 08:45 黄金时代1.0 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 条件执行 前面几节我们介绍了如何定义数据和进行基本运算,为了对数据有透彻的理解,我们介绍了各种类型数据的二进制表示。 现在,让我们回顾程序本身,只进行基本操作是不够的,为了进行有现实意义的操作,我们需要对操作的过程进行流程控制。流程控制中最基本的就是条件执行,也就 是说,某些操作只能在某些条件满足的 阅读全文
posted @ 2017-01-06 08:45 黄金时代1.0 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 乱码 上节说到乱码出现的主要原因,即在进行编码转换的时候,如果将原来的编码识别错了,并进行了转换,就会发生乱码,而且这时候无论怎么切换查看编码的方式,都是不行的。 我们来看一个这种错误转换后的乱码,还是用上节的例子,二进制是(16进制表示):C3 80 C3 8F C3 82 C3 AD,无论按哪种 阅读全文
posted @ 2017-01-06 08:44 黄金时代1.0 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 我们在处理文件、浏览网页、编写程序时,时不时会碰到乱码的情况。乱码几乎总是令人心烦,让人困惑。希望通过本节和下节文章,你可以自信从容地面对乱码,恢复乱码。 谈乱码,我们就要谈数据的二进制表示,我们已经在前两节谈过整数和小数的二进制表示,接下了我们将讨论字符和文本的二进制表示。 由于内容比较多,我们将 阅读全文
posted @ 2017-01-06 08:43 黄金时代1.0 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 违反直觉的事实 计算机之所以叫"计算"机就是因为发明它主要是用来计算的,"计算"当然是它的特长,在大家的印象中,计算一定是非常准确的。但实际上,即使在一些非常基本的小数运算中,计算的结果也是不精确的。 比如: 这个结果看上去,不言而喻,应该是0.01,但实际上,屏幕输出却是0.010000001,后 阅读全文
posted @ 2017-01-05 11:02 黄金时代1.0 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 上节我们提到正整数相乘的结果居然出现了负数,要理解这个行为,我们需要看下整数在计算机内部的二进制表示。 十进制 要理解整数的二进制,我们先来看下熟悉的十进制。十进制是如此的熟悉,我们可能已忽略了它的含义。比如123,我们不假思索就知道它的值是多少。 但其实123表示的1*(10^2) + 2*(10 阅读全文
posted @ 2017-01-05 11:01 黄金时代1.0 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 运算 第一节我们谈了通过变量定义数据,上节我们介绍了给数据赋值,有了初始值之后,可以对数据进行运算。计算机之所以称为"计算"机,是因为发明它的主要目的就是运算。运算有不同的类型,不同的数据类型支持的运算也不一样,本文介绍Java中基本类型数据的主要运算。 算术运算:主要是日常的加减乘除 比较运算:主 阅读全文
posted @ 2017-01-05 11:00 黄金时代1.0 阅读(272) 评论(0) 推荐(0) 编辑