• UID648
  • 登录2018-03-11
  • 粉丝9
  • 发帖69
  • 科研点数0点
优异服役勋章
二级银心勋章
论坛之星服役勋章
GloomyGhost 发布于2017-10-08 13:55
2/661

Java传教:java大法好!!!

楼层直达

图片:u=2487251504,59751499&fm=58.jpg

计算机软件基本概念

软件的概念

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

按照专业点的说法,软件就是一组指令序列,那么如何理解他呢?举个基本的例子,比如大家到学校报名,学校会给你一个单子,一般上面会写,首先到哪里缴费、然后领证件,体检什么的,反正至少也有那么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

进制的概念

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

其实所有进制都是人为的创造,都是用来计数方便的。现在最常用的进制是十进制,当然其它的进制也在使用中。例如“半斤八两”这个成语,就反映了古代一斤等于十六两的概念,也就是十六进制计数方式。

计算机编程中常用的进制有二进制、八进制、十进制和十六进制,十进制还是最主要的表达形式。在编程中,大家书写的数值默认为十进制。

对于进制,有两个最基本的概念:基数和运算规则。

基数

基数指一种进制中组成的基本数字,也就是不能再拆分的数字。例如十进制是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文件,如果有一系列提示,则代表有语法错误,可以仔细检查代码书写是否有错,以及文件名或者路径是否有错。

    注意:源文件全名区分大小写。

    编译正确以后,则得到FuckWorld.java对应的可执行文件FuckWorld.class文件。

    说明:javac命令的参数说明,可以在命令提示符窗口中直接输入javac,按回车键查看。

Java基础语法

学习一个程序语言,首先需要学习该语言的格式,这个格式就是语言的语法。语法,对于初学者来说,是学习程序最枯燥的地方,因为语法部分需要记忆的内容太多,而且需要理解很多的知识。

而对于曾经接触过其他程序设计语言的人来说,学习语法的速度特别快,主要是因为语法部分涉及的很多概念已经理解,而且大部分语言的语法格式比较类似。

本章就来详细介绍一下Java语言的基础语法,希望能够通过本章的学习掌握Java语言的语法格式。

如何学好Java语法

对于初学者来说,学习Java语法是一个长期、艰苦的过程,所以要做好吃苦的准备,而且语法的学习会随着对于语言理解的加深,而体会到更多设计的巧妙。

语法格式只是学习程序时最基础的知识,在实际的开发中,需要根据程序的需要,使用恰当的格式去实现程序逻辑,所以语法一定要熟练。

学习语法主要有三种学习方式:

l在理解的基础上记忆

这个是最理想的学习语法的方式,通过这样学习语法会觉得很轻松,而且对于语法的使用也把握的很准确。

对于这种方式,需要在学习的初期深刻理解语法的功能,体会语法适用的场合,记忆语法的实现格式。

但是在实际的学习中,由于初学者未接触过开发,很多的概念无法深刻理解,所以很多人还无法实现使用该方式来进行学习。

l在记忆的基础上理解

使用这种方式,首先需要记忆住该语法格式,然后在记忆以及后续的练习中逐步体会语法的用途,这也是大部分初学者学习语法的方式。

通过这种方式学习语法,也可以在一定的锻炼以后成为合格的程序员。

l在未理解的基础上记忆

这种方式是学习语法是最笨拙的方式,也是很多很努力学习,但是无法理解语法格式的学生。

使用这种方式其实没有真正理解语法的格式,而只是生硬的去进行记忆,很多时候还无法灵活的去运用这些格式,所以学习的效果也打了一定的折扣。

学习语法时,主要需要学习和理解以下这些内容:

l语法的格式

这个必须进行记忆,熟记以后可以提高写代码的速度。

l语法概念

理解相关的语法概念,例如变量、方法、数组等等

l语法的用途

语法的适用领域。

l大量练习

通过大量的练习深刻体会语法的使用。

关于语法的学习就介绍这么多,下面就进入设计巧妙的Java语法世界开始正式的学习了。

代码框架

“罗马不是一天建成的”,所以想只学习几天的语法或者一两周的语法就能很熟练的编程,是不实际的想法。说个极端的例子,你的英语学了多少年了,能很流利的与人交流和书写文章吗?当然,就程序语法来说,比英语简单多了。

在开始学习Java时,不可能把所有的语法都一下子介绍清楚,但是如果需要把程序正确的运行起来,那么还必须不少的语法知识,为了在学习的初期可以让自己编写的代码编译通过,并且能够执行,所以特提供一个简单的代码框架,方便大家初期的练习。

代码框架的结构如下:

public class 文件名{

public static void main(String[] args){

你的代码

}

}

使用该代码框架时,只需要把“文件名”的位置换成自己的文件名,并且在“你的代码”的位置写自己的代码即可,使用示例:

public class Fuck{

public static void main(String[] args){

System.out.println(“Fuck world!”);

}

}

则在该示例代码中,“文件名”被替换成了Fuck,“你的代码”被替换成了System.out.println(“Fuck world!”);,在后续的示例中,给出的代码片段,除非特别说明,都是应该写在“你的代码”位置的代码,后面就不专门声明了。

关键字

关键字(keyword),也称保留字(reserved word),是指程序代码中规定用途的单词。也就是说,只要在程序代码内部出现该单词,编译程序就认为是某种固定的用途。

关键字列表及中文解释如下,格式为:关键字(中文解释):

abstract(抽象的)continue(继续)for(当…的时候)new(新建)   switch(转换)

assert(断言)   default(默认)  if(如果)    package(打包) synchronized(同步)

       boolean(布尔) do(做)     goto(跳转到)  private(私有的) this(这个)

      break(中断)  double(双精度) implements(实现) protected(受保护的) throw(抛出,动词)

      byte(字节)  else(否则)   import(引入)   public(公共的)throws(抛出,介词)

      case(情形)   enum(枚举)  instanceof(是…的实例) return(返回) transient(瞬时的)

      catch(捕获)  extends(继承) int(整数)    short(短整数)  try(尝试)

      char(字符)   final(最终的)  interface(接口)  static(静态的)  void(空的)

      class(类)   finally(最终地)  long(长整数)   strictfp(精确浮点) volatile(易变的)

      const(常量)  float(单精度浮点) native(本地的) super(超级的)  while(当…的时候)

说明:其中goto和const的用途被保留,在语法中未使用到这两个关键字。

在实际学习时,必须牢记关键字的意义以及拼写。

[GloomyGhost于2017-10-12 01:38编辑了帖子]
<b>DO YOURSELF</b>
  • UID366
  • 登录2018-05-01
  • 粉丝12
  • 发帖73
  • 科研点数1点
优异服役勋章
二级银心勋章
论坛之星服役勋章
qwsxmkoi 发布于2017-10-09 00:01
沙发F
PY大法好
  • UID648
  • 登录2018-03-11
  • 粉丝9
  • 发帖69
  • 科研点数0点
优异服役勋章
二级银心勋章
论坛之星服役勋章
GloomyGhost 发布于2017-10-09 23:16
板凳F
qwsxmkoi:PY大法好回到原帖
py等我再出个帖子
<b>DO YOURSELF</b>
您需要登录后才可以回帖
发表回复

杩斿洖椤堕儴