Java编程那点事.docx

上传人:b****5 文档编号:8168869 上传时间:2023-01-29 格式:DOCX 页数:102 大小:85.92KB
下载 相关 举报
Java编程那点事.docx_第1页
第1页 / 共102页
Java编程那点事.docx_第2页
第2页 / 共102页
Java编程那点事.docx_第3页
第3页 / 共102页
Java编程那点事.docx_第4页
第4页 / 共102页
Java编程那点事.docx_第5页
第5页 / 共102页
点击查看更多>>
下载资源
资源描述

Java编程那点事.docx

《Java编程那点事.docx》由会员分享,可在线阅读,更多相关《Java编程那点事.docx(102页珍藏版)》请在冰豆网上搜索。

Java编程那点事.docx

Java编程那点事

Java编程那些事儿1——序言

序言

从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比而言,参加培训工作的时间要长一些。

由于工作的特点,遇到了各种各样的学生,在学习编程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一下总结,把自己的经验和大家进行分享。

当然由于一些知识也只是个人见解,也希望大家积极指正,帮助编程的初学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从事开发工作。

编写一本书,总要有个名字吧,姑且把书名叫做《Java编程那些事儿》吧,主要是用通俗的语言,解释清楚以下几个内容:

1、程序设计是什么?

2、Java语言相关基础语法及应用

3、如何建立基础的程序逻辑

以及其它编程和Java语言的相关问题,本书的编写打算以在线连载的形式进行,估计编写的周期会比较长,希望能为软件开发行业尽一点自己的微薄之力吧。

陈跃峰

2008-4-2

cqucyf@

 

Java编程那些事儿2——程序设计是什么?

作者:

陈跃峰

出自:

程序设计,俗称编程,是一个比较专业的概念。

初学者,甚至一部分开发人员,都不能很简单的解释这个概念,所以使初学者觉得程序设计是一件很有科技含量,或者是很高深的学科,其实这些都是误解。

那么程序设计到底是什么呢?

程序,其实就是把需要做的事情用程序语言描述出来。

类似如作家,就是把自己头脑中的创意用文字描述出来。

所以学习程序,主要就是三个问题:

做什么、怎么做和如何描述,具体如下:

1.做什么

做什么就是程序需要实现的功能。

2.怎么做

怎么做就是如何实现程序的功能,在编程中,称为逻辑,其实就是实现的步骤。

3.如何描述

就是把怎么做用程序语言的格式描述出来。

所以,对于有经验的程序设计人员来说,学习新的程序设计语言的速度会比较快,就是因为第1和第2个问题基本解决了,只需要学习第3个问题即可了。

对于“做什么”的问题,可能初学者觉得会比较简单,其实在大型项目开发,例如ERP,企业都不能很详细的说明需要实现具体的功能,这就需要有专门的人员去发掘具体的功能,这个用程序的术语叫做需求分析。

举个例子吧,例如某个人要找个女朋友,如果你大概去问他,他会说,找个中等的就可以了,但是这个还不是具体的需求,你可能需要问一下,要求女朋友的年龄是多少,身高是多少等等具体的问题。

所以说,搞清楚“做什么”也不是简单的事情,需要专门的人员从事该工作。

对于“怎么做”的问题,是初学者,甚至很有经验的开发人员都头疼的事情,这个称作程序逻辑。

因为实际的功能描述和程序设计语言之间不能直接转换,就像作家需要组织自己的思路和语言一样,程序设计人员也需要进行转换,而且现实世界和程序世界之间存在一定的差异,所以对于初学者来说,这是一个非常痛苦的过程,也是开始学习时最大的障碍。

由于计算机自身的特点,“怎么做”的问题其实就是数据和操作的问题,某个顶级大师曾经说过:

“程序=数据结构+算法”,把这个问题描述的简单准确。

那么“怎么做”的问题,就变成了持有那些数据,以及如何操作这些数据的问题。

先简单的介绍这么多,大家仔细体会吧。

对于“如何描述”的问题,是学习程序最容易,也是最枯燥的问题。

其实就是学“透”一套格式,并且深刻理解语言的特点。

学程序语言,就像学汉语差不多,需要学习字怎么写,学习语法结构等,只是不需要像汉语这样学那么多年,但是学好一个语言还是要耐得住寂寞。

语法的学习需要细致,只有深刻领悟了语法的格式才能够熟练使用该语言。

前面介绍的是程序的概念,那么为什么叫程序设计,其实这个设计和现实中的设计一样。

例如你自己盖个小棚子,只需要简单的规划即可,也就是编程中的小程序,而如果需要建造一栋大楼,肯定需要进行设计吧,程序也是这样。

所以把编程叫做程序设计了。

 

Java编程那些事儿3——你适合学习程序设计吗?

作者:

陈跃峰

出自:

程序设计是一个技术活,所以不是适合所有的人。

现在很多人听说程序设计人员待遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你。

其实对于一个人来说,适合你的才是最好的。

就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞的,所以学习的效果就是差强人意了。

其实程序设计最需要基础扎实了,现在的程序设计学习很偏重程序设计语言的学习,或者直白点说,程序设计课程基本上可以说是在学习程序设计语言,在上一个内容中已经讲解了程序设计是什么的问题,程序设计语言只是程序设计中最后的环节,也是比较简单的环节,只学会程序语言,离实际工作的距离还很遥远,而更多的程序基础其实是在语言之外的东西。

就像会写汉字,熟悉汉语语法的人一定能够成为作家吗?

程序设计的基础不外乎以下几个方面:

1、一定的英文阅读能力

因为程序设计接触的很多文档都是以英文的形式提供的,一个阅读英文很困难的人,可以学会程序设计,但是不会有很深的造诣。

就像一个看不懂字典的人,能学好汉语吗?

2、较强的数学基础

计算机最核心的功能就是计算,各种程序逻辑都会被转成一定格式的运算,运算需要什么知识呢,肯定是数学了。

就像一个数学很差的人能做好会计吗?

在程序设计中,需要深刻理解数学,用数学来解决你遇到的各种实际问题,类似于做数学应用题吧。

这个基础学要长期的积累。

3、较强的逻辑思维能力

逻辑思维可能每个程序设计人员都很需要,那么逻辑思维是什么呢?

其实就是把一个事情分解成一系列的步骤在有限的时间内做完,这个也是程序设计过程中最灵活的地方。

例如你要完成“去罗马”这件事情,那么逻辑有多少种呢?

借用一句俗话“条条大道通罗马”来解释这个问题吧,所以程序设计是典型的脑力劳动。

可能有些人觉得程序设计就是体力活,这也不错,为什么呢,还是借助一个例子来说明吧,买油翁的故事大家都知道吧,如果你反复做一件相同的事情,可能这个事情对外人来说是脑力劳动,对于不断重复做的人来说,也就只是“唯手熟尔”的体力活罢了。

可能很多初学者对于逻辑思维还不是很清楚,那么举一个比较老套的例子吧,例如实现“把一个大象放到冰箱里”这个事情,逻辑是怎样呢?

步骤如下:

a、打开冰箱

b、把大象推到冰箱里

c、关上冰箱的门

当然这只是一个很简单的逻辑。

在实际的程序设计中还需要严谨的逻辑思维,保证程序可以正常运行。

那么逻辑严谨又是什么呢?

还以上面的例子为例,严谨的逻辑思维应该做如下事情:

a、冰箱打不开怎么办?

b、大象不进冰箱怎么办?

c、关不上冰箱门怎么办?

就像一个运动员来说,良好的体质是基础,同样,对于程序员来说,良好的基础可能帮助你达到更高的高度。

当然基础不可能每个人都具备,但是数学基础和逻辑思维能力是必须的。

那你的数学基础如何呢,出个简单的数学题目测试一下你的数学基础吧。

已知一组从1开始的数字,第一行从左到右依次是1到10,第二行从左到右依次是11到20,按照每行10个的顺序依次类推,则任意整数n(n>0)位于该组数字的第几行第几列呢?

所以,如何你觉得以上的内容你欠缺很多,可能你就不适合做程序设计这个职业,趁早选择其他的职业吧,这样对你的发展会更有利。

如果你觉得以上的内容你大部分都符合,那么你可以尝试学习一下后续的内容——《如何学好程序设计》。

希望大家积极讨论,不足之处请大家积极指正。

 

Java编程那些事儿4——如何学好程序设计?

作者:

陈跃峰

出自:

俗话说“兴趣是最好的老师”,但是只靠兴趣是远远不够的,还需要付出艰辛的努力。

程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平也不敢恭维,也达不到实用的程度。

那么如何学好程序设计呢?

或者更现实一点,如何在短时间内成为一个程序员呢?

在接触的学生中,很多人会问:

学习程序设计有捷径吗?

一般我都不直接回答,而是这样反问他们:

大家都看过武侠小说吧,那么练武有没有捷径呢?

可能一部分学生会说没有,而另一些同学会说,练武有捷径的啊,比如什么“辟邪剑谱”、“葵花宝典”之类的,但是走这些捷径需要付出很大的代价,但是的确可以快速炼成绝世武功。

可惜的是,学习程序设计连这些付出很大代价的秘籍都没有。

但是在实际的学习中,就像练武一样,如果有位前辈对你进行指点或引导,的确可以提高你学习的速度,但是你还是要付出艰辛的努力。

在介绍如何学好程序设计以前,首先要搞明白,学习程序设计需要学什么,其实不外乎以下内容:

l程序设计语言

语言是程序最终表达的方式,必须熟练。

l开发工具

开发工具相当于练武的武器,拿个趁手的武器可以发挥你的潜能

l开发技术

开发技术就是实现好的功能,可以直接拿来用的结构,类似于武功秘籍,但是一定要熟练到可以灵活使用啊。

l逻辑思维

如何实现程序的要求功能。

l设计模式

设计模式就是设计的技巧,类似于写作文时的倒序、插叙什么的。

其实学好程序的方法很简单——“勤学苦练”。

多读代码,多写代码,是学好程序的基本方式。

需要把各种东西熟练到可以灵活使用的程度,由于学习的时间一般都比较紧,不能像汉语那样炼成习惯成自然的方式,所以在开始学习的初期伴随着大量的记忆,在记忆的基础上进行使用,仔细记忆并体会每个细节,把合适的内容用在合适的地方。

当然,学习最好的开始是模仿,但是由于程序很灵活,所以一定要在模仿的基础上理解,理解了以后进行创新,把东西理解了以后,这些内容就变成了自己的,即使忘记了,也很容易的捡起来,而不要囫囵吞枣式的学习,那样无法做到灵活的解决问题。

当学会了程序设计以后,就可以成为大师级的人物,像武侠小说里的那些大侠一样,做到“意由心生”、“无招胜有招”了,祝福每个初学者以及从事开发的人员,能够早日进入到该境界。

PS:

关于英文阅读能力的锻炼,坚持读1-2本英文原版书籍(网上很容易下到很多原版电子书),就可以获得比较大的提升。

 

Java编程那些事儿5——程序设计介绍小结

作者:

陈跃峰

出自:

前面简单的介绍了程序设计的相关知识,程序设计也就是用程序语言表达你自己的思维,所以重要的不是语言,而是你的思维,这个是现在程序设计教学中最大的误区,本书中将以语言和思维并重的方式来介绍Java语言,并培养你的逻辑思维。

程序设计的道路不是一帆风顺的,其中布满艰辛,所以如果你打算学习程序设计,那么要做好长期吃苦的准备,俗话说:

“板凳要做十年冷”,要有这样的耐心和恒心才能把程序设计学会、学好。

当然如果基础不好,那么还想学习程序设计课程的话,将需要付出比一般人更多的努力才可以基本赶上一般人的水平,用句不恰当的话“出来混迟早要还的“,前面欠下的基础知识现在就是还的时候了。

关于工作,也简单的说一下,软件开发行业需要各种层次的人才,其实水平只要达到可以独立工作,也就能找到一份工作,但是要想找到一个不错的工作,而且以后还有良好的发展,需要的就是扎实的基础以及长期的努力。

后续讲解语言部分打算分成以下几大块来进行说明:

1、计算机基础

计算机软件的基本概念、进制的相关知识、计算机内部的数据表达方式等。

2、Java语言的简介。

注:

我也不能免俗。

3、Java开发环境的安装和配置。

介绍JDK、Eclipse的安装、配置以及使用。

4、Java相关语法和程序逻辑。

以通俗的语言来介绍语法,深刻理解语法的作用和用途。

可能还会进行一些变更,本人保留最终的解释权,呵呵。

 

Java编程那些事儿6——计算机软件基本概念

作者:

陈跃峰

出自:

第一章计算机基础

本部分主要介绍计算机相关的知识,重点介绍和软件编程相关的基础知识。

其实对于编程来说,计算机的基础是越多越深就越好,但是受时间和精力的限制,每个人了解的其实还是很有限,下面就主要编程中常用的基础知识,遗漏的地方请大家积极指正和补充。

计算机本质的结构就是将所有的内容数据化,其实软件编程也采用的是同样的逻辑,把各种需要保存的状态数字化。

1.1计算机软件基本概念

l软件的概念

大家都知道,计算机分为硬件和软件,其实看得见摸得着的算硬件,比如硬盘、主板什么的,摸不着的就算软件了。

按照专业点的说法,软件就是一组指令序列,那么如何理解他呢?

举个基本的例子,比如大家到学校报名,学校会给你一个单子,一般上面会写,首先到哪里缴费、然后领证件,体检什么的,反正至少也有那么10多条,如果把每条操作都看成指令的话,这个就是软件的本质。

或者按照冯·诺伊曼的计算机体系,计算机就是接受输入,进行处理,反馈结果,其实软件也是这样,提供界面接受用户的输入,根据逻辑进行处理,把结果反馈给用户,无论是普通的软件还是游戏都是这样。

l计算机为什么是二进制的?

众所周知,现在的计算机都是以二进制存储和运算数据的,那么为什么是二进制而不是常见的十进制呢?

原因很简单,因为现在的计算机是电子计算机,内部只有两个状态,所以就依据这两个状态创建了一种新的进制形式——二进制。

这样极大的简化了电子计算机的结构,可以用电流的有无、光线的有无以及磁性的有无等状态来实现数学上的二进制。

数学上用0和1来分别代表这两个状态罢了。

当然,随着科学的发展,以后计算机不再是电子计算机了,那么二进制也可能就消失了。

l计算机存储单位

既然计算机是电子计算机了,那么存储的最小单位就是一个二进制位,英语是bit,简写成b。

一位只有2个值,0或者1。

由于位的单位太小,所以就设计了另外一个概念——字节,英语是byte,简写成B。

规定1个字节是8位,即1B=8b。

比如大家接触的8位机、16位机等等,就是指CPU一次处理的最小的数据单位。

再大点的单位就依次是KB、MB、GB和TB了,他们之间的进制都是2的10次方,也就是1024,也就是1KB=1024B,1MB=1024KB。

这里简单的说一个实际问题,大家买硬盘的时候,比如160GB,这里厂商使用的进制是1000,而不是1024,所以160个GB格式化以后就大概只有:

(160X1000X1000X1000)/1024/1024/1024=149GB

 

Java编程那些事儿7——进制的概念

作者:

陈跃峰

出自:

1.2进制的概念

因为不可能为每个数值都创造一个符号,所以需要用基本数字组合出复合的数值,这样就有了进制的概念。

其实所有进制都是人为的创造,都是用来计数方便的。

现在最常用的进制是十进制,当然其它的进制也在使用中。

例如“半斤八两”这个成语,就反映了古代一斤等于十六两的概念,也就是十六进制计数方式。

计算机编程中常用的进制有二进制、八进制、十进制和十六进制,十进制还是最主要的表达形式。

在编程中,大家书写的数值默认为十进制。

对于进制,有两个最基本的概念:

基数和运算规则。

l基数

基数指一种进制中组成的基本数字,也就是不能再拆分的数字。

例如十进制是0-9,二进制是0和1,八进制是0-7,十六进制是0-9,A-F(大小写均可)。

或者可以简单的这样记忆,假设是n进制的话,基数就是[0,n-1]的数字,基数的个数和进制值相同,十进制有十个基数,依次类推。

l运算规则

运算规则就是进位或借位规则,这个类似于一般计算机书籍中位权的概念,例如对于十进制来说,该规则是“满十进一,借一当十”,也就是低位的数字满十了向高位进一,从高位借到的一,相当于低位上的十。

其它的进制也是这样,对于二进制来说,就是“满二进一,借一当二”,八进制和十六进制也是这样。

在数学上表示一个数字是几进制,通常使用如下格式:

[数值]进制数,例如[10]2表示二进制数值10。

1.2.1二进制

二进制是计算机内部数据表示的形式,所以学习计算机编程必须熟悉二进制。

熟悉二进制有以下几个用途:

l更容易理解计算机的数据存储方式

计算机内部的很多转换,例如数据类型之间的强转,都可以用二进制解释最终的结果的值。

l二进制的运算速度高

二进制的运算速度比十进制高的多。

例如求2的n次方,通过移位实现的效率比数学方法高效。

l使用二进制数值进行数据存储

以二进制的形式存储数值,一个是比较节约资源,可以使用二进制的位来存储信息,例如常见的硬件控制信息,都是二进制的形式进行提供的。

如前所述,二进制包含0和1两个基数,运算规则是“满二进一,借一当二”,下面简单的介绍一下二进制的计数方式。

例如十进制的0-9用二进制进行表达,则依次是:

0,1,10,11,100,101,110,111,1000,1001

说明:

数值之间使用逗号进行间隔。

下面是二进制的一些基本运算结果:

l加法运算

0+0=0

0+1=1

1+0=1

1+1=10

l减法

0–0=0

0–1=-1

1–0=1

1–1=0

l乘法

0×0=0

0×1=0

1×0=0

1×1=1

l除法

0/0无意义

0/1=0

1/0无意义

1/1=1

以下是一些符合的表达式:

110+111=1101

这些基本的运算结构在实际开发中一般不会直接用到,但是通过这些内容可以加深对于二进制概念的理解。

1.2.2二进制和十进制之间的转换

由于计算机内部的数据是以二进制进行表达的,而十进制又是日常生活中最常用的进制,所以它们之间经常需要进行转换。

下面介绍一下转换的方式。

1.2.2.1十进制转换为二进制

十进制整数转换为二进制有三种方法,分别是除二取余、计算器转换和经验法。

十进制小数的转换方法最后做简单的介绍。

1.除二取余法

除二取余法是转换时的最基本方法,也是最通用的方法。

规则为:

使用十进制和2去除,取每次得到的商和余数,用商继续和2相除,直到商为零为止,第一次得到的余数作为二进制的低位,最后一次得到的余数作为二进制的高位,由余数组成的数字就是转换后二进制的值。

例如十进制的13转换为二进制的计算步骤如下:

商余数

13/2=61

6/2=30

3/2=11

1/2=01

则计算的最终结果就是1101。

2.计算器转换

Windows操作系统中的计算器也可以很方便的实现进制之间的转换。

在程序菜单中附件子菜单中打开计算器,从打开的计算器的查看菜单中,选择“科学型”,输入你要转换的十进制的数字,例如13,然后界面上数字显示框西侧的“二进制“,则转换后的数值就直接显示在计算器中。

3.经验法

对于二进制熟悉以后,那么计算十进制对应的数字可以通过一些基本的数学变换来实现,在使用经验法以前,必须熟记2的0-10次方对应的十进制的值,依次是:

1,2,4,8,16,32,64,128,256,512,1024

则转换一些特殊的数字时可以极大的提高转换速度,例如数字65,则可以这样转换:

65=64+1

64对应的二进制形式为1000000

1对应的二进制形式为1

则65的二进制形式为1000001

这个只适合转换一些特殊的数字,适应性没有除二取余法广泛。

十进制小数的转换采用的一般方法是乘二取整法,规则为:

对于小数部分先乘二,然后获得运算结果的整数部分,然后将结果中的小数部分再次乘二,直到小数部分为零为止,则把第一次得到的整数部分作为二进制小数的高位,后续的整数部分作为地位就是转换后得到的二进制小数。

需要说明的是,有些十进制小数无法准确的用二进制进行表达,所以转换时符合一定的精度即可,这也是为什么计算机的浮点数运算不准确的原因。

例如0.25转换为二进制小数的步骤如下:

整数部分

0.25×2=0.50

0.5×2=1.01

则0.25转换为二进制小数为0.01

如果一个十进制数字既有整数部分,也有小数部分,则分开进行转换即可。

1.2.2.2二进制转换为十进制

二进制转换为十进制采用的方法是:

数字乘位权相加法。

下面先以十进制为例来说明该方法,例如十进制数字345的值,5的位权是1,4的位权是10,3的位权是100,则有如下表达式成立:

345=5×1+4×10+3×100,这就是数字乘位权相加法的原理。

其实对于十进制整数的位权很有规则,从右向左第n位的位权是十的(n-1)方,例如个位是10(1-1),十位是10(2-1),依次类推。

那么二进制整数的位权规律和这个一致,也就是从右向左第n位的位权是二的(n-1)方。

例如二进制整数1011转换为十进制的表达式为:

[1011]2=1×20+1×21+0×22+1×23=1+2+0+8=11

而对于二进制的小数,也是采用一样的方法,只是二进制小数的位权规则为,小数点后第一位小数的位权是2的-1次方,第二位是2的-2次方,依次类推。

例如二进制小数0.1101转换为十进制小数的表达式为

[0.1101]2=1×2-1+1×2-2+0×2-3+1×2-4=0.5+0.25+0+0.0625=0.8125

同理,如果二进制包含整数和小数部分,则分开进行转换即可。

1.2.3二进制和八进制、十六进制之间的转换

虽然二进制是计算机内部的数据表达形式,但是由于二进制基数太少,则导致数字比较长,为了简化数字的书写,就创建了八进制和十六进制。

八进制和十六进制就是对二进制的简化,所以二进制到八进制和十六进制的转换非常简单。

二进制整数转换为八进制的方法是“三位一并“,也就是从右侧开始,每3位二进制数字转换为八进制的一位,依次类推,因为二进制的三位数字可以表达的区间是000-111,刚好和0-7重合。

例如:

二进制的10111转换为8进制为:

最后三位111转换为7,前面的数字10转换为2,则转换后得到的八进制数字为27。

二进制整数转换为十六进制的方法是“四位一并“,例如10111转换为十六进制是0111转换为7,1转换为1,则转换后得到的十六进制数字是17。

二进制小数转换为八进制的方法也是“三位一并“,只是转换时从小数的高位开始,也就是小数的左侧开始。

例如0.10111转换为八进制是101转换为5,110转换为6,则转换得到的八进制小数为0.56。

需要特别注意的是,小数最后如果不足三位,一定要在后续补零以后再进行转换。

二进制小数转换为十六进制的方法也是“四位一并”,只是转换时从小数的高位开始。

例如二进制小数0.10111转换为十六进制小数为,1011转换为b,1000转换为8,则转换后得到的十六进制是0.b8。

如果二进制数包含整数和小数部分,则分开进行转换。

 

Java编程那些事儿8——计算机内部的数据表达

作者:

陈跃峰

出自:

1.3计算机内部的数据表达

计算机内部数据表达的总原则就是:

把一切内容数值化、数字化。

这个也是编程时处理数据的基本方式,对于编程理解的越深入,则将越认同该原则。

其实计算机也只能这样

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1