Java传教:java大法好!!!

计算机软件基本概念

软件的概念

大家都知道,计算机分为硬件和软件,其实看得见摸得着的算硬件,比如硬盘、主板什么的,摸不着的就算软件了。
按照专业点的说法,软件就是一组指令序列,那么如何理解他呢?举个基本的例子,比如大家到学校报名,学校会给你一个单子,一般上面会写,首先到哪里缴费、然后领证件,体检什么的,反正至少也有那么10多条,如果把每条操作都看成指令的话,这个就是软件的本质。
或者按照冯·诺伊曼的计算机体系,计算机就是接受输入,进行处理,反馈结果,其实软件也是这样,提供界面接受用户的输入,根据逻辑进行处理,把结果反馈给用户,无论是普通的软件还是游戏都是这样。

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

众所周知,现在的计算机都是以二进制存储和运算数据的,那么为什么是二进制而不是常见的十进制呢?
原因很简单,因为现在的计算机是电子计算机,内部只有两个状态,所以就依据这两个状态创建了一种新的进制形式——二进制。这样极大的简化了电子计算机的结构,可以用电流的有无、光线的有无以及磁性的有无等状态来实现数学上的二进制。数学上用0和1来分别代表这两个状态罢了。
当然,随着科学的发展,以后计算机不再是电子计算机了,那么二进制也可能就消失了。

计算机存储单位

既然计算机是电子计算机了,那么存储的最小单位就是一个二进制位,英语是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格式化以后就大概只有: (160 X 1000 X1000 X1000) / 1024/1024/1024 = 149GB

文章来源:http://blog.csdn.net/Mailbomb/archive/2008/04/07/2257453.aspx

进制的概念

因为不可能为每个数值都创造一个符号,所以需要用基本数字组合出复合的数值,这样就有了进制的概念。
其实所有进制都是人为的创造,都是用来计数方便的。现在最常用的进制是十进制,当然其它的进制也在使用中。例如“半斤八两”这个成语,就反映了古代一斤等于十六两的概念,也就是十六进制计数方式。
计算机编程中常用的进制有二进制、八进制、十进制和十六进制,十进制还是最主要的表达形式。在编程中,大家书写的数值默认为十进制。
对于进制,有两个最基本的概念:基数和运算规则。

基数

基数指一种进制中组成的基本数字,也就是不能再拆分的数字。例如十进制是0-9,二进制是0和1,八进制是0-7,十六进制是0-9,A-F(大小写均可)。或者可以简单的这样记忆,假设是n进制的话,基数就是[0,n-1]的数字,基数的个数和进制值相同,十进制有十个基数,依次类推。

运算规则

运算规则就是进位或借位规则,这个类似于一般计算机书籍中位权的概念,例如对于十进制来说,该规则是“满十进一,借一当十”,也就是低位的数字满十了向高位进一,从高位借到的一,相当于低位上的十。其它的进制也是这样,对于二进制来说,就是“满二进一,借一当二”,八进制和十六进制也是这样。
在数学上表示一个数字是几进制,通常使用如下格式:[数值]进制数,例如[10]2 表示二进制数值10。

二进制

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

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

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

二进制的运算速度高

二进制的运算速度比十进制高的多。例如求2的n次方,通过移位实现的效率比数学方法高效。

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

以二进制的形式存储数值,一个是比较节约资源,可以使用二进制的位来存储信息,例如常见的硬件控制信息,都是二进制的形式进行提供的。 如前所述,二进制包含0和1两个基数,运算规则是“满二进一,借一当二”,下面简单的介绍一下二进制的计数方式。
例如十进制的0-9用二进制进行表达,则依次是:
0,1,10,11,100,101,110,111,1000,1001
说明:数值之间使用逗号进行间隔。

计算机内部的数据表达

计算机内部数据表达的总原则就是:把一切内容数值化、数字化。这个也是编程时处理数据的基本方式,对于编程理解的越深入,则将越认同该原则。 其实计算机也只能这样,因为计算机内部只能存储0和1两个数字,所以必须把指令、数据、图片、文本等各种各样的内容数字化成0和1进行存储、传输和显示。

整数的表达

整数有正负之分,但是计算机内部只能存储0和1,则计算机内部将符号数字化,用二进制码的最高位代表符号位,规定该位为0代表正,1代表负。这就是符号数字化的规定。
前面介绍过整数在计算机内部都是以二进制的形式保存的。但是为了计算方便,以及简化CPU的结构,所以在存储和运算时都采用补码的形式。 前面介绍的那些直接计算出来的二进制形式,都称作整数的原码。规定正数的原码、反码和补码都是自身。
而对于负数,仔细研究一下其组成格式。以8位机为例,也就是一个数字占计算机中的8位,也就是一个字节,用最高位存储符号位,其它的位存储数值。例如-8的原码是10001000,最高位的1代表负数,后续的7位代表数值。
负数的反码是指符号位不变,其他的位取反,也就是0变1,1变0,则-8的反码是11110111。
负数的补码是指在反码的数值位上加1,运算后得到的结果,只计算数值位,不改变符号位。则-8的补码是11111000,该次运算中,低位向高位进行了进位。
规律:补码的补码等于负数的原码。
也就是对负数的补码再求补,则得到的负数的原码。
熟悉整数的表达,对于后续理解数据的区间以及进行强制转换以后得到的数值很有帮助,也是进行位运算的基础。
备注:小数,编程语言中称浮点数,的存储形式和整数不同。

字符的表达

字符指计算机内部单个的符号,如标点符号、英文字母和汉字等等。因为这些字符种类各异,计算机无法直接表达,那么就采用了计算机编程中也常用的方式,对每个字符进行编号,例如规定a字符编号为97,b字符编号为98等等。
由于需要编号的字符很多,就专门规定了一系列字符和编号的对应规则,那么这些对应表就被称作字符集,常见的字符集有ASCII、GB2312、BIG5等。
在计算机内部存储、运算和传输时,都只需要使用该编号即可。
字符集比较完美的解决了字符的存储和传输的问题。
所以字符在程序内部可以参与运算,其实参与运算的就是这个字符的编号,字符集规律是很多字符变换逻辑实现的基础。

java简介

Java语言现在是编程领域主流的开发语言之一,在这里就简单的介绍一下和Java语言相关的一些知识。

Java语言历史

1991年,美国的SUN(太阳微系统)公司为了在消费类电子设备(现在称作智能家电)方面进行前沿研究,建立了以James Gosling领导的Green小组进行软件方面的研究,该小组一开始选择当时已经很成熟的C++语言进行设计和开发,但是却发现执行C++程序需要很多的设备内存,这样将增加硬件的成本,不利于市场竞争,所以该小组在C++语言的基础上,创建了一种新的语言,由于该小组的领导很喜欢自己办公室窗外的一棵橡树,所以把该语言的名字叫做Oak,中文意思是橡树,这就是Java语言的前身。
但是这个科研小组的成果最终没有转变成SUN公司的产品,也没有为SUN公司带来什么收益,像很多企业的科研项目一样,Oak面临夭折的危险。
但是天无绝人之路,当上帝关上门的时候,同时会为你打开一扇窗户,由于Oak专门为内存有限的消费类电子设备进行设计,使其执行环境以及程序体积都很小,所以在1994年Internet的大潮中,找到了自己的位置。为了证明Java语言的强大的开发能力,Sun公司还专门使用Java语言开发了一个专门的浏览器软件——HotJava。
随着互联网的发展,以及Oak语言和浏览器的融合,产生了一种称作Applet技术,当然,现在该技术已经被Flash击败,Applet是一种将小程序嵌入到网页中进行执行的技术,是互联网从静态网页过渡成动态网页,也使SUN公司的该研发小组获得了新生。
1995年3月,SUN公司正式向外界发布Java语言,Java语言正式诞生。 Java语言大事记:
 1995年3月,SUN公司发布Java,Java语言诞生
 1996年1月,JDK1.0发布
 1997年2月,JDK1.1发布
 1998年12月,JDK1.2发布,这是Java语言的里程碑,Java也被首次划分为J2SEJ2EEJ2ME三个开发技术。不久SUN公司将Java改称Java 2,Java语言也开始被国内开发者学习和使用。
 2000年5月,JDK1.3发布
 2002年2月,JDK1.4发布
 2004年10月,JDK1.5发布,同时SUN公司将JDK1.5改名为J2SE5.0
 2006年6月,JDK1.6发布,也称Java SE6.0,同时Java的各版本去掉2的称号,J2EE改称Java EE,J2SE改称Java SE,J2ME改称Java ME。

Java程序开发过程

众所周知,程序分解释程序和编译程序,解释程序就是运行环境一句一句的读取源代码,然后执行,类似于新闻发布会中的翻译,演讲者讲一句,就翻译一句,另外一种是编译程序,就是将源代码一次翻译成计算机操作系统可以直接执行的机器指令的文件,例如Windows中的exe文件,以后只需要执行编译以后生成的文件即可。
而Java语言是一种特殊的语言,它采用的形式为先编译,再解释的执行方式。也就是先把Java语言的源代码编译成中间代码class文件,然后在运行时根据class文件的内容解释执行。所以严格意义上说,Java语言是一种半编译半解释的语言。
则一般Java程序的开发步骤如下:
1、编写源代码
2、编译源代码,如果有语法错误,则返回步骤1。
3、执行编译以后的class文件,如果有逻辑错误(功能错误),则返回步骤1
4、生成部署文件

建立开发环境

“工欲善其事,必先利其器”。
进行程序开发,首先要安装开发相关的软件,并且熟悉这些工具软件的基本使用。本章介绍一下两类开发工具的使用:

基础开发工具

基础开发工具是进行程序设计的基础,包含开发中需要的一些基本功能,例如编译、运行等,是其它开发工具的基础。
Java语言的基本开发工具是SUN公司免费提供的JDK。
实际开发中,为了方便和程序开发的效率,一般不直接使用基础开发工具,所以对于很多基础开发工具,只需要掌握其基本的使用即可。

集成开发环境(IDE)

集成开发环境是指将程序设计需要的很多功能,例如代码编辑、代码调试、程序部署等等一系列功能都整合到一个程序内部,方便程序开发,并提高实际的开发效率,简化了程序设计中的很多操作。
Java语言的集成开发环境很多,常见的有IntelliJ IDEA、IntelliJ IDEA、IntelliJ IDEA等等。
由于实际开发中,基本都是使用集成开发环境进行开发,所以在学习中必须熟练掌握该类工具的使用。
一般集成开发环境的使用都很类似,在学习时只要熟练掌握了其中一个的使用,其它的工具学习起来也很简单。

JDK开发环境

JDK(Java Developer’s Kit),Java开发者工具包,也称J2SDK(Java 2 Software Development Kit),是SUN公司提供的基础Java语言开发工具,该工具软件包含Java语言的编译工具、运行工具以及执行程序的环境(即JRE)。
JDK现在是一个开源、免费的工具。
JDK是其它Java开发工具的基础,也就是说,在安装其它开发工具以前,必须首先安装JDK。
对于初学者来说,使用该开发工具进行学习,可以在学习的初期把精力放在Java语言语法的学习上,体会更多底层的知识,对于以后的程序开发很有帮助。
但是JDK未提供Java源代码的编写环境,这个是SUN提供的很多基础开发工具的通病,所以实际的代码编写还需要在其它的文本编辑器中进行。其实大部分程序设计语言的源代码都是一个文本文件,只是存储成了不同的后缀名罢了。
常见的适合Java的文本编辑器有很多,例如JCreator、Editplus、UltraEdit等。

JDK的获得

如果需要获得最新版本的JDK,可以到官方网站上进行下载.

第一个FuckWorld程序

一般初学一门语言的人都是千篇一律的helloworld,所以我写个不同的东西
下面是一个Java语言的FuckWorld程序:

public class FuckWorld
{
 public static void main(String[] args)
  {
  System.out.println("Fuck The world!");
 }
}

在编辑代码时,注意以下问题:

  • 源代码中的字母区分大小写

  • 标点符号均为半角字符,即英文输入模式下的标点符号

  • 缩进只是为了美观,在实际编译时,会删除代码中每行开始和每行结束的所有空格

### 如何保存代码 Java语言的源文件,后缀名必须是java,不区分大小写,通常都作成小写。

对于源代码的文件名,如果源代码中声明时使用public,格式如下:

public class FuckWorld

则源代码的名称必须和class后面的单词相同,也就是必须为FuckWorld,这个名称区分大小写。也就是文件的全名必须为FuckWorld.java。

如果源代码声明时未使用public,格式如下:

class FuckWorld

则对于源代码的名称没有要求,但是后缀名还必须是java。

通常情况下,一个源代码只有一个声明,而且把这个声明作成public的。
在实际保存时,对于源代码的保存路径没有具体的要求,也就是可以保存到任意路径下,为了后续的说明方便,把该代码保存在d:\java\chapter2文件夹中,后续的说明和该路径保持一致。
保存以后,在对应路径下就将有该文件,具体现实的图标和计算机中安装的软件有关,但是这个图标不影响实际的使用。
则在记事本中保存代码的操作步骤如下:
1. 选择记事本的“文件”>“保存”

  1. 选择d:\java\chapter2路径
    3. 保存类型设置为“所有文件”
    4. 文件名为“FuckWorld.java”
  2. 选择“保存”按钮保存即可。
    ### 如何编译代码
    源文件保存好以后,就可以使用JDK中的编译工具来编译程序了。
    如前所述,编译是将程序的源代码转换成该程序的可执行文件。Java语言的可执行文件是后缀名为class的文件,称作类文件或字节码文件。
    编译时使用JDK中bin目录下的javac.exe文件来实现。
    在命令行下编译程序的步骤如下:
    l 打开命令提示符窗口
    选择“开始”>“程序”>“附件”>“命令提示符”。
    也可以选择“开始”>“运行”,则输入框中输入“cmd”命令打开该窗口。
    l 切换到源代码保存目录。
    在命令行中输入d:,按回车键切换到d盘
    然后输入cd java\chapter2切换到源代码的保存路径。
    则命令提示符中的提示是:“D:\java\chapter2>”。
    l 输入编译命令。
    命令格式为: javac 源文件全名
    例如:javac FuckWorld.java
    按回车键执行该命令,如果没有任何提示,则代表编译成功,在源代码所在目录下生成FuckWorld.class文件,如果有一系列提示,则代表有语法错误,可以仔细检查代码书写是否有错,以及文件名或者路径是否有错。
    注意:源文件全名区分大小写。
    编译正确以后,则得到HelloWorld.java对应的可执行文件FuckWorld.class文件。
    说明:javac命令的参数说明,可以在命令提示符窗口中直接输入javac,按回车键查看。