1. 大括号、段及主体

将类名称定出之后,就可以开始编写类的内容。左大括号“{”为类的主体开始标记,而整个类的主体至右大括号“}”结束。每个命令语句结束时,都必须以分号“;”做结尾。当某个命令的语句不止一行时,必须以一对大括号“{}”将这些语句包括起来,形成一个程序段(segment)或是块(block)。

下面以一个简单的程序为例来说明什么是段与主体(body)。



在上面的程序中,可以看到main() 方法的主体以左右大括号{}包围起来;for循环中的语句不止一行,所以使用左右大括号{}将属于for循环的段内容包围起来;类TestJava3_2的内容又被第3行与第12行的左右大括号{}包围,这个块属于public类TestJava3_2所有。此外,应注意到每个语句结束时,都是以分号“;”作为结尾。

2. 程序运行的起始点 —— main() 方法

Java程序是由一个或一个以上的类组合而成,程序起始的主体也是被包含在类之中。这个起始的地方称为main(),用左右大括号将属于main()段的内容包围起来,称之为“方法”(method)。

main()方法为程序的主方法,如同中国的古话“家有千口,主事一人”。类似的,在一个Java程序中,不论它有千万行,执行的入口只能有一个,而这个执行的入口就是main()方法,它有且仅有一个。通常看到的main() 方法如下面的语句片段所示。


main() 方法之前必须加上publicstatic void 这3个标识符。public代表main()公有的方法;static表示main()是个静态方法,可以不依赖对象而存在,也就是说,在没有创建类的对象情况下,仍然可以执行;void英文本意为空的,这里表示main()方法没有返回值。main后面括号()中的参数String args[]表示运行该程序时所需要的参数,这是固定的用法

我们在学习Java中经常遇到“方法”这个概念,而在学习C语言或者C++中,又会遇到“函数”概念,语言都是相通的,那二者又有什么区别和联系呢?

⑴ “函数”是一段实现某种“功能”的代码,函数的操作是对输入数据的处理。函数的英文“function”恰恰有“功能”的含义,可以达到“见名知意”。通过函数的名称来实施函数调用。它能将一些数据(也就是参数)传递进去进行处理,然后返回一些数据(即函数的返回值),也可以没有返回值。所有传递给函数的数据都是显式传递的。而方法的参数传递通常是隐式的,它可以直接操作类内部的数据

⑵ “方法”也是一段完成某项功能的代码,也通过名字来进行调用,但它依赖于某个特定的对象,例如,我们可以说“调用对象X的Y方法”,而不能“调用Y方法”。简单来讲, 方法和对象相关;而函数和对象无关。因为Java是一门完全面向对象编程的语言,所以在Java里只有方法。

3、认识标识符

Java中的包(package)、类、方法、参数和变量的名称,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)等组成,但这些名称的标识符不能以数字开头,也不能是Java中保留的关键字。
下面是合法的标识符。

比如,下面的4个标识符是非法的。

非法的原因分别是:class是Java的保留关键字;6num23的首字母为数字;abc@sina中不能包含@等特殊字符;x+y不能包含运算符。此外,读者应该注意,在Java中,标识符是区分大小写的,也就是说,A123和a123是两个完全不同的标识符。

注意标识符的命名规则属于强制性的,不然编译时会报错。一些刚接触编程语言的人可能会觉得记住上面的规则很麻烦,所以在这里提醒一下,标识符最好永远用字母开头,而且尽量不要包含其他的符号。规则是必须遵守的,而规范是约定俗成的,鼓励大家都遵守的。

4、认识关键字

和其他语言一样,Java中也有许多关键字(Keywords,也叫保留字),如public、static、int等,这些关键字不能当做标识符使用。下表列出了Java中的关键字。在程序开发中一旦使用了这些关键字做标识符,编译器在编译时就会报错,而对智能的编辑器(如Eclipse等)会在编写代码时自动提示这些语法错误

注意
虽然goto、const在Java中并没有任何意义,却也是保留的关键字,与其他的关键字一样,在程序里不能用来作为自定义的标识符,true、false、null等看起来像关键词,实际上在Java中,它们仅仅是普通的字符串。Java中的所有关键字均由小写字母构成。

5、认识注释

注释在源代码中的地位非常重要,虽然注释在编译时被编译器自动过滤掉,但为程序添加注释可以解释程序的某些语句的作用和功能,提高程序的可读性。特别当编写大型程序时,多人团队合作,A程序员写的程序B程序员可能很难看懂,而注释能起到非常重要的沟通作用。
Java里的注释根据不同的用途分为以下3种类型。⑴ 单行注释。⑵ 多行注释。⑶ 文档注释。单行注释,就是在注释内容的前面加双斜线(//),Java编译器会忽略这部分信息。如下所示。

多行注释,就是在注释内容的前面以单斜线加一个星形标记(/)开头,并在注释内容末尾以一个星形标记加单斜线(/)结束。当注释内容超过一行时,一般可使用这种方法,如下所示。

文档注释,是以单斜线加两个星形标记(/**)开头,并以一个星形标记加单斜线(/)结束。用这种方法注释的内容会被解释成程序的正式文档,并能包含进如javadoc之类的工具生成的文档里,用以说明该程序的层次结构及其方法。范例3-1中的第1-11行对源代码的注释属于类别(3),通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。本质上注释类别(3)是(2)的一个特例,(3)中的第2个星号可看作注释的一部分。由于文档注释比较费篇幅,在后面的范例中,我们不再给出此类注释,读者可在随书配备的光盘中看到注释更为全面的源代码。

6、认识变量

在Java程序设计中,变量(Variable)在程序语言中扮演着最基本的角色,它是存储数据的载体。计算机中的变量是实际存在的数据。变量的数值可以被读取和修改,它是一切计算的基础。

与变量相对应的就是常量(Constant),顾名思义,常量是固定不变的量,其一旦被定义并赋初值后,它的值就不能再被改变。

Java变量使用和其他高级计算机语言一样:先声明,后使用。即必须实现声明它想要保存数据的类型。

1. 变量的声明
声明一个变量的基本方式为:

另外,在定义变量的同时,给予该变量初始化,建议使用这种声明变量的风格。


举例来说,想在程序中声明一个可存放整型的变量,这个变量的名称为num。在程序中即可写出如下所示的语句。

int为Java的关键字,代表基本数据类型——整型(Integer)。若要同时声明多个整型的变量,可以像上面的语句一样分别声明它们,也可以把它们都写在同一个语句中,每个变量之间以逗号分开。下面的变量声明的方式都是合法的。

虽然上面两种定义多个变量的语句都是合法的,但对它们添加注释不甚方便,特别是对后一种同一行有多个语句,由于可读性不好,建议不要采纳此种编程风格。

2. 变量名称

可以依据个人的喜好来决定变量的名称,但这些变量的名称不能使用Java的关键字。通常会以变量所代表的意义来取名。当然也可以使用a、b、c等简单的英文字母代表变量,但是当程序很大时,需要的变量数量会很多,这些简单名称所代表的意义就比较容易忘记,必然会增加阅读及调试程序的困难度。变量的命名之美在于:在符合变量命名规则的前提下,尽量对变量做到“见名知意”,如:用num表示数字,用length 表示高度等。

3. 变量的设置

给所声明的变量赋予一个属于它的值,用赋值运算符(=)来实现。具体可使用如下所示的3种方法进行设置。

⑴ 在声明变量时设置。

举例来说,在程序中声明一个整数的变量num,并直接把这个变量赋值为2 ,可以在程序中写出如下的语句。

⑵ 声明后再设置。

一般来说也可以在声明后再给变量赋值。举例来说,在程序中声明整型变量num1、num2及字符变量ch,并且给它们分别赋值,在程序中即可写出下面的语句。

⑶ 在程序的任何位置声明并设置。

以声明一个整数的变量num为例,可以等到要使用这个变量时再给它赋值。

认识数据类型

除了整数类型之外,Java还提供有多种数据类型。Java的变量类型可以是整型(int)、长整型(long)、短整型(short)、浮点型(float)、双精度浮点型(double),或者字符型(char)和字符串型(String)等。下面对Java中的基本数据类型给予简要介绍

整型是取值为不含小数的数据类型,包括byte类型、short类型、int类型及long类型,默认情况下为int类型,可用八进制、十进制及十六进制来表示。另一种存储实数的类型是浮点型数据,主要包括float型(单精度浮点型,占4个字节)和double型(双精度浮点型,占8个字节)。用来表示含有小数点的数据,必须声明为浮点型。在默认情况下,浮点数是double型的。如果需要将某个包括小数点的实数声明为单精度,则需要在该数值后加字母‘F’(或小写字母‘f’)。

下面的语句是主要数据类型的定义说明。


定义数据类型时,要注意两点。

⑴ 在定义变量后,对变量赋值时,赋值大小不能超过所定义变量的表示范围。例如,在本例第3行是错误的,给age2赋值129,已超出了byte类型(一个字节)所能表示的最大范围(-128~127)。这好比某人在宾馆定了一个单人间(声明byte类型变量),等入住的时候,说自己太胖了,要住双人间,这时宾馆服务员(编译器)是不会答应的。解决的办法很简单,需要重新在一开始就定双人间(重新声明age2为short类型)。

⑵ 在定义变量后,对变量赋值时,运算符(=)左右两边的类型要一致。例如,在本例第5行是错误的,因为在默认情况下,包含小数点的数(12.5)是双精度double类型的,而“=”左边定义的变量price是单精度float类型的,二者类型不匹配!这好比一个原本定了双人间的顾客,非要去住单人间,刻板的宾馆服务员(编译器)一般也是不答应的,因为单人间可能放不下双人间客人的那么多行李,丢了谁负责呢?如果住双人间的顾客非要去住单人间,那需要双人间的顾客显式声明,我确保我的行李在单人间可以放得下,或即使丢失点行李,我也是可以承受的(即强制类型转换)。下面的两个语句都是合法的。

认识运算符和表达式

计算机的英文为Computer,顾名思义,它存在的目的就是用来做计算(Compute)的。而要运算就要使用各种运算符。最简单的算术运算符是加(“+”)、减(“-”、)、乘(“*”)、除(“/”)、取余(“%”)等。

表达式则是由操作数与运算符所组成,操作数可以是常量、变量,甚至可以是方法。下面的语句说明了这些概念的使用。

在这个语句中,1+2 为表达式,操作符为“+”,计算结果为 3,通过“=”赋值给整型变量result对于表达式,由于操作符是有优先级的,所以即使有计算相同的操作数和相同的操作符,其结果也是有可能不一样的,例如:

在上述的表达式中,由于除法操作符“/”的优先级比加法操作符“+”高,所以c的值为b除以100后的值再加上a之和,这可能不是程序员的本意,如果希望是a+b之和一起除以100,那么就需要加上括号()来消除这种模糊性,如下所示:

7、认识类

Java程序是由类(class)所组成。类的概念在以后会详细讲解,读者只要记住,类是一种用户自定义的类型就可以了,所有的Java程序都是由类组成的。下面的程序片段即为定义类的典型范例。

程序定义了一个新的public类Test,这个类的原始程序的文件名称应取名为Test.java。类Test的范围由一对大括号所包含。public是Java的关键字,指的是对于该类的访问方式为公有。

需要注意的是:由于Java程序是由类所组成,因此在一个完整的Java程序里,至少需要有一个类。我们曾提到,在Java程序的文件名不能随意命名,必须和public类名称一样(大小写也必须保存一致)。因此,在一个独立的源码程序里,只能有一个public类,却可以有许多non-public(非公有)类。若是在一个Java程序中没有一个类是public,那么对该Java程序的文件名就可以随意命名了。

Java提供了一系列的访问控制符来设置基于类(class)、变量(variable)、方法(method)及构造方法(constructor)等不同等级的访问权限。Java的访问权限主要有4类:默认模式(default)、private(私有)、public(公有)和protected(保护)。

8、输入与输出

在Java中,流(Stream)是一个重要的但初学者很容易困惑的概念。输入/输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出功能,如从键盘上读取数据,向屏幕或文件输出数据等。通过输入和输出操作可以从外界接收信息,或者把信息传递给外界。Java把这些输入与输出操作用流的模式来实现,通过统一的接口来表示,从而使程序设计更为简单。

流(stream)的概念最早源于UNIX操作系统中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现进程或程序间的通信,或读写外围设备、外部文件之间的信息交互等。一个流必须有起源端和目的端,它们可以是计算机内存的某部分区域,也可以是某个磁盘文件,甚至可以是Internet上的某个URL。

为了便于理解,可以将Java中流想象成一种“数据流通的管道”,文件和程序之间一旦有了数据请求,二者之间就会建立某种形式的连接,从而形成了一个数据流。

就如在真正的管道中,可以传输不同形态的东西,既可以是水,也可以是天然气。类似的, Java中的数据流也有不同的形式,既可以是基于二进制的字节流,也可以是基于某种编码方式(如Unicode、UTF-8等)的字符流。

流的方向是重要的,根据流的方向,流可大致分为两类:输入流和输出流。当程序需要读取数据时,就会开启一个通向数据源的管道,程序可从该管道中提取数据,这种模式下的流称之为输入流。类似地,如果程序想要输出数据,也会建立一个通往输出目的地管道,一旦建立后,程序就可以经由此管道输出数据,这种模式的流称之为输出流。关于数据流,它们的输入、输出关系可用下图来说明。

作为程序输入数据源,其对象可以是键盘,也可以是某个文件或磁盘。作为程序输出数据源,其对象可以是显示器,也可以是某个文件或磁盘。为了方便一些频繁的设备交互,Java语言系统预定了3个可以直接使用的流对象,它们分别是:

⑴ System.in(标准输入),通常代表键盘输入。
⑵ System.out(标准输出):通常输出到终端显示器。
⑶ System.err(标准错误输出):通常将错误信息输出到终端显示器。

System.in是个标准的输入流(InputStream )对象,它主要是用来连接控制台程序和键盘的输入。目前System.in并不经常用到,这是因为Java命令行应用程序主要是通过命令行参数或配置文件来传递数据的,对于图形用户界面(GUI)程序,则主要是用图形界面来接纳用户的键盘输入。

System.out是打印输出流(PrintStream)对象,主要向控制台输出数据,这个对象经常会被面向控制台的程序使用到,它也常被程序员用作程序调试输出的工具。

System.err也是打印输出流(PrintStream)对象,除了其主要用于错误输出之外,它和System.out没有太大区别。有些应用程序(如Java程序员常用的Eclipse)用System.err以红色字体来输出错误信息。它可以看作一个专门用于输出错误信息的System.out。

数据的输入、输出属于I/O操作部分,Java把处理输入/输出相关的类放在java.io包中,这个包不属于java.lang包,没有被默认加载,所以如果需要使用与I/O相关的类和对象时,需要把java.io显式的导入(import)到相应的程序中。下面用范例3-3来说明标准输入和输出的使用。

9、简单的输入、输出流使用范例




程序第2行,如果要完全使用Java输入、输出流类模块,就必须导入相应的包库(java.io.*)支持。java.io.中的字母“i”表示input(输入),字母“o”表示output(输出),“”是代表任何含义的通配符,它表示输入/输出(io)下所有模块。在Java中,“.”表示对象与组件之间的所有关系,为了方便起见,读者可以直接用中文“的”来代替之。譬如:

我们可以直接读成“导入java“的”io包库下“的”所有模块”。

程序的第9行表示创建标准输入流对象stdin ,来接收键盘System.in的输入。

程序的第11行表示以缓冲流模式来接收stdin。缓冲机制主要是为了处理应用程序和外设(输入/输出)之间速度不匹配的问题。

程序的第15和19行,使用的是标准输出对象System.out,这在前面的范例中频繁使用。

程序第20行用System.err对象输出程序的错误信息。

其实程序20行的功能完全可以用被注释掉的第19行代替,二者均可输出程序的错误信息,二者在此处可通用,所不同的是,使用System.err代码的可读性更好一点,其中err表示error(错误)。System.err可以理解为专用于输出错误信息的System.out特例。

程序的13行到22行,使用了Java的try-catch错误捕捉处理机制。正如“天有不测之风云”一样,在Java程序设计过程中,程序员虽已尽量考虑全面以避免各种错误,但从软件工程角度来看,在程序运行过程中还是不可避免的发生各种不可预测的异常情况,程序越大,此类情况越是明显。对此,一个良好的程序需要有一定的容错机制,即不能因为程序成员的某个潜在的设计缺陷或用户可能的操作失误(如输入信息出错),而导致整个程序崩溃。因此,需要添加相应的代码来处理程序中异常(Exception)错误。try-catch机制对于程序的健壮性(Robust)非常重要。

Java—最常用的编程元素—常量与变量

认识Java程序的框架相关推荐

  1. Java 程序员必备的 15 个框架,前 3 个地位无可动摇!

    2019独角兽企业重金招聘Python工程师标准>>> Java 程序员方向太多,且不说移动开发.大数据.区块链.人工智能这些,大部分 Java 程序员都是 Java Web/后端开 ...

  2. 一份MyBaits框架PDF文档,阿里架构师直言,Java程序员快收藏吧

    mybatis技术相信各位都不陌生, 在我们目前最常见的三大框架中,其中就有mybatis, 也可以说,几乎所有的Java程序员, 都必须掌握mybatis框架,这一份文档,讲从0开始讲解,带着你由浅 ...

  3. Java程序员必备的10个大数据框架

    当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂.根据外媒的一项调查报告,小千列出了Java程序员在过去12个月内一直使 ...

  4. Java程序员通用的几个框架分享

    Java程序员历来就被认为是薪资高的职业,但并不是所有的Java程序员都能如愿拿到较高的薪资.任何一个行业,都有低端饱和.高端紧缺的现象,所以想要成为薪资高的Java程序员就一定要掌握过硬技术.下面, ...

  5. Java Web学习总结(32)——Java程序员最亲睐的Web框架

    这一次,我们要讨论的是web框架. 只有少数几种语言像Java一样提供了各种各样的web框架,上面的统计图就是一个证据.下面是其他开发者所使用web框架列表: spring MVC/Spring Bo ...

  6. JAVA 程序员需要用到 10 个测试框架和库

    关于 Java 程序员今年应该学习什么,例如编程语言,库和框架等,如果只能学习或提高其中一项,那必然是自动化测试技能. 测试是专业程序员区别于业余程序员的一项指标,作为专业程序员,并非必须采用 TDD ...

  7. JAVA程序员的堕落:只知框架不懂底层原理

    我曾在多个场合撰文说过,现在培训出来的企业Java开发兵团只知道使用某种框架,但完全不知道这些框架的底层原理.今天早上,在依次对三个职位的应聘者面试中,我又再次见到了这种情形. 我们的顾问公司收到了一 ...

  8. Java应用程序安全框架

    <从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...

  9. java 数学公式解析框架有哪些_java程序员该如何进阶?这份java中高级核心知识全面解析请收好...

    <Java中高级核心知识全面解析>是整理收录GitHub50K+Star以上的高质量学习文档,前前后后花了近半个月的时间,终于整理而成.包含了Java基础.网络.Linux.数据结构与算法 ...

最新文章

  1. Visual Studio 2005 Web Deployment Projects版本不同引发的问题
  2. IntelliJ IDEA 2021.2 正式发布了!
  3. rank--求矩阵的秩
  4. SICStus Prolog 3.10.0正式版下载
  5. [2014NoDEA]An Osgood type regularity criterion for the liquid crystal flows
  6. 设计模式系列之单例模式(java)
  7. HDU 1248 寒冰王座(完全背包问题另类解法)
  8. 2 文件处理、权限管理、搜索
  9. 最小权顶点覆盖问题分析
  10. Windows 7硬件驱动搜索更加智能、精确
  11. java 圆括号,Java圆括号翻转字符串
  12. unity 动画 音频播放
  13. 初见,Devexpress
  14. 玩出来的33岁亿万富翁-畅游CEO王滔
  15. HyperMesh入门笔记
  16. 计算机组成原理和微机原理实验报告,《计算机组成原理》实验指导.doc
  17. postman传图片
  18. Pinyin4j导读
  19. 人工智能 机器学习实验总结
  20. iPad mini7:库克终于舍得堆料了?

热门文章

  1. python筛选股票5日线以上_[python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅...
  2. 【研讨会现场】广州天嵌科技受邀参加2014年TI9月深圳研讨会
  3. Python的异步编程介绍(MD)
  4. python判断以什么开头_Python中用startswith()函数判断字符串开头的教程
  5. 贵州省发票认证系统服务器地址,贵州省增值税发票综合服务平台登录入口:https://fpdk.guizhou.chinatax.gov.cn...
  6. Codeforces Round #807 (Div. 2)补题
  7. 河工计院ACM2022寒假培训题单以及超详细题解
  8. 上帝之眼——GIS技术的决定性作用
  9. php base64互转pdf 将base64解析成pdf
  10. Cookie加密10