在上一章文章中,读者已经了解了如何搭建Java 开发环境及Java 程序的开发过程。从本篇文章开始讲解Java 的基本语言。这些基本语言的语法和其他一些编程语言相比有些是类似的,但还有很多不同之处,读者最好花一定的时间来了解这些最基本的语法。

第一部分  基础语言要素

一个 Java 程序是由很多部分组成,其中任何一个单词都有它存在的意义。这些单词就是a构成一个Java 程序的基本语言要素。本节就来讲解这些基本语言要素,包括标识符、关键字、分隔符和注释等。

一、标识符

标识符是程序员为自己定义的类、方法或者变量等起的名称,在 Java 语言中规定标识符由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。不能使用Java 语言中的关键字。例如HelloWorld、Hello_World、$HelloWorld 都是合法的标识符。

但是如下几种就不是合法的标识符。

  • 555HelloWorld(以数字开头)。
  • ¥HelloWorld(具有非法字符¥)。

在 Java 中标识符是严格区分大小写的,Hello 和HELLO 是完全不同的标识符。

正确的标识符不一定是一个好的标识符。在一个大型的程序中,经常要定义上百个标识符,如果没有好的标识符命名习惯,就很可能造成混乱。所以标识符的命名要表达含义,例如定义一个学生类,就使用Student 来进行命名,而不要为了省事定义为SD。除此之外,还应有一些根据不同标识符定义的习惯。

  • 包名:使用小写字母。
  • 类名和接口名:通常定义为由具有含义的单词组成,所有单词的首字母大写。
  • 方法名:通常也是由具有含义的单词组成,第一个单词首字母小写,其他单词的首字母都大写。
  • 变量名:成员变量和方法相同,局部变量全部使用小写。
  • 常量名:全部使用大写,最好使用下划线分隔单词。

二、关键字

1.访问修饰符关键字

  • public:所修饰的类、方法和变量是公共的,其他类可以访问该关键字修饰的类、方法或者变量。
  • protected:用于修饰方法和变量。这些方法和变量可以被同一个包中的类或者子类进行访问。
  • private:同样修饰方法和变量。方法和变量只能由所在类进行访问。

2.类、方法和变量修饰符关键字

  • class:告诉系统后面的单词是一个类名,从而定义一个类。
  • interface:告诉系统后面的单词是一个接口名,从而定义一个接口。
  • implements:让类实现接口。
  • extends:用于继承。
  • abstract:抽象修饰符。
  • static:静态修饰符。
  • new:实例化对象。

还有几种并不常见的类、方法和变量修饰符,例如native、strictfp、synchronized、transient和volatile 等。

3.流程控制关键字

流程控制语句包括if-else 语句、switch-case-default 语句、for 语句、do-while 语句、break语句、continue 语句和ruturn 语句,这都是流程控制关键字。还有一个关键字应该也包括在流程控制关键字中,那就是instanceof 关键字,用于判断对象是否是类或者接口的实例。

4.异常处理关键字

异常处理的基本结构是try-catch-finally,这三个单词都是关键字,异常处理中还包括throw 和throws 这两个关键字。assert 关键字用于断言操作中,也算是异常处理关键字。

5.包控制关键字

包控制关键字只有两个,分别是import 和package。inport 关键字用于将包或者类导入到程序中;pachage 关键字用于定义包,并将类定义到这个包中。

6.数据类型关键字

Java 语言中有8 种基本数据类型,每一种基本数据类型都需要一个关键字来定义,除布尔型(boolean)、字符型(char)、字节型(byte)外,还有数值型。数值型又分为short、int、long、flort 和double。

7.特殊类型和方法关键字

super 关键字用于引用父类,this 关键字用于应用当前类对象。void 关键字用于定义一般方法,该方法没有任何返回值。在HelloWorld 程序中的main 方法前就有该关键字。

8.没有使用的关键字

在关键字家族中有两个另类,那就是const 和goto。在前面已经知道关键字是系统使用的单词,但是对于这两个另类虽然是关键字,但是系统并没有使用他们。这是初学者应特别注意的地方,在一些考试或者公司面试中经常会问到这个问题。最后说一个显而易见,但是很多人注意不到的问题,那就是所有的关键字都是小写的,如果采用了大写,那就肯定不是关键字。

三、注释

注释添加在代码中,是给程序员看的,当系统运行程序,读取注释时会越过不执行。随着技术的发展,现在具有百万行代码的程序已经很常见了,在这样一个大型的代码中,如果没有注释,可想而知对于后面的修改和维护会产生多大的麻烦。在Java 语言中提供了完善的注释机制,具有三种注释方式,分别是单行注释(//)、多行注释(/* */)和文档注释(/** */)。具有良好的注释习惯是一个优秀程序员不可缺少的职业素质。在本书中将主要采用单行注释来对开发的程序进行注释。这有可能并不符合某些公司的开发规范,这里主要是为了讲解知识。读者工作中可以根据自己的开发需要,学习相关的开发规范。

第二部分  基础数据类型

Java 是一门强数据类型语言,Java 程序中定义的所有数据都有一个固定的数据类型。Java中的数据类型基本可以分为两类:基本数据类型(也称原始数据类型)和复合数据类型。在本节中主要讲解基本数据类型,学习数据类型的重点是了解每一种数据类型的取值范围。

一、常量和变量

在正式学习 Java 中的基本数据类型前,先来学习一下数据类型的载体常量和变量。从名称上就可以看出常量和变量的不同,常量表示不能改变的数值,而变量表示能够改变的数值。

二、整数类型

在Java 中用户存放整数的数据类型称为整数类型。整数类型根据占用的内存空间位数不同可以分为4 种,分别是byte(字节型)、short(短整型)、int(整型)和long(长整型),定义数据时默认为int 类型。内存空间位数决定了数据类型的取值范围,表2-1 中给出了整数类型的位数和取值范围的关系。

在 Java 中可以通过3 种方法来表示整数,分别是十进制、八进制和十六进制。其中十进制都已经非常熟悉了。八进制是使用0~7 来进行表示的,在Java 中,使用八进制表示整数必须在该数的前面放置一个“0”。除了十进制和八进制外,整数的表示方法还有十六进制。表示十六进制数值除了0~9 外,还使用a~f 分别表示从10 到15 的数值。表示十六进制时,字母是不区分大小写的,也就是a 表示10,A 也表示10。十六进制同八进制一样,也有一个特殊的表示方式,那就是以“0X”或者“0x”开头。看下面这个使用十六进制表示整数的程序。

三、浮点类型

浮点类型和整数类型一样,也是用来表示数值。整数类型是表示整数,而浮点类型表示的是小数,在Java中不称作小数,而称之为浮点数。浮点类型就是表述Java中的浮点数。Java中的浮点类型分为两种,分别是单精度浮点类型和双精度浮点类型。表2-2给出了两种浮点类型的取值范围。

Java 中默认的浮点类型也是双精度浮点类型。当使用单精度浮点类型时,必须在数值后面跟上F 或者f,这和long 类型是一样的。在双精度浮点类型中,也可以使用D 或者d 为后缀,但是它不是必须的,因为双精度浮点类型是默认形式。

四、字符类型

在开发中,经常要定义一些字符,例如“P”,这时候就要用到字符类型。在Java中,字符类型就是用于储存字符的数据类型。在Java中,有时会使用Unicode码来表示字符。在Unicode码中定义了至今人类语言的所有字符集,Unicode码是通过“\uxxxx”来表示的,x表示的十六进制数值。Unicode编码字符是用16位无符号整数表示的,即有2*16个可能值,也就是0~65535。

Java在运行结果的显示中,会有一些内容不能显示,例如回车、换行等效果。在Java 中为了解决这个问题,定义了转义字符。转义字符通常使用“\”开头,在表2-3 中列出了Java 中的部分转义字符。

 五、布尔类型

在C语言或者其他一些编程语言中,使用数字来表示true和false。在Java中,true和false的待遇明显提高了,为这两个值单独定义了一种数据类型,那就是布尔类型。布尔类型是用于判断逻辑值真假的数据类型。所有的关系运算的返回类型都是布尔类型。布尔类型也大量应用在控制语句中。运算符和控制语句将在后面的介绍中进行讲解。

参考文献:《JAVA从入门到精通》

JAVA入门之基础语言的更多相关文章

  1. Java入门教程二(语言基础)

    常量与变量 常量值又称为字面常量,它是通过数据直接表示 常量 实型常量值 Java 的实型常量值主要有如下两种形式 十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34.-98.0 科学记 ...

  2. Java入门与基础算法班 - 课程大纲

    第1章 零基础转CS,如何准备? · 转专业找CS工作怎么办? · 零基础如何在最短时间内拿到offer? · 如何写好简历? · IT技术面试内容有哪些? · JAVA语言怎么入门? 第2章 数组与 ...

  3. Java入门之基础程序设计

    1.Java语言特点了解 1. java语言:   有些语言提供了可移植性.垃圾收集等机制,但是没有提供一个大型的库.如果想要有酷炫的绘图功能.网络连接功能或者数据库存取功能,就必须动手编写代码.Ja ...

  4. Java入门:基础算法之二进制转换为十进制

    Java有两种方法可以将二进制数转换为十进制数: 1)使用Integer类的Integer.parseInt()方法. 2)自己编写转换逻辑. 方法1:使用Integer.parseInt()实现二进 ...

  5. Java入门:基础算法之获取用户输入

    本部分演示如何获取用户输入.我们使用Scanner类来得到用户输入.下面的实例代码中演示了如何获取用户输入的字符串.整数和float数据.主要用到了以下方法: 1)public String next ...

  6. Java入门:基础算法之从字符串中找到重复的字符

    本程序演示从一个字符串中找出重复的字符,并显示重复字符的个数. import java.util.HashMap; import java.util.Map; import java.util.Set ...

  7. Java入门:基础算法之产生随机数

    本程序演示使用Random类的呢想tInt()方法产生随机数. /* Program: 随机数发生器 * Written by: 理工云课堂 * Input: None * Output: 0 到20 ...

  8. Java入门:基础算法之线性搜索

    本程序使用线性搜索算法从n个数中查找一个数. /* Program: 线性搜索示例 * @author: 理工云课堂 * Input: 元素个数,每个元素值,待查找数据的值 * Output:待查找数 ...

  9. Java入门:基础算法之检查奇偶性

    本程序检查一个数是奇数还是偶数. import java.util.Scanner; class CheckEvenOdd { public static void main(String args[ ...

随机推荐

  1. vscode 常用配置

    { "workbench.iconTheme": "vscode-icons", "editor.tabSize": 2, "ed ...

  2. ES6那些事半功倍的新特性(一)

    数组方面 Array.from(xxx):把json格式字符串转换成数组: Array.of(x,x,x):负责把一堆文本或者变量转换成数组 find( ):该方法为实例方法,就是以Array对象开头 ...

  3. 解决Tomcat出现内存溢出的问题

    Tomcat服务器出现java.lang.OutOfMemoryError:Java heap space异常 1.可能是程序错误,比如:程序陷入死循环 2.堆内存太小 一般情况下,java创建的对象 ...

  4. ubuntu系统

    Ubuntu 18.04 NVIDIA驱动安装总结:(需要和自己电脑上的显卡配套) https://blog.csdn.net/tjuyanming/article/details/80862290 ...

  5. Hibernate中一级缓存概念以及flush与clear的区别

    Hibernate采用缓存机制提高数据查询效率.缓存分为一级缓存和二级缓存,一级缓存在Session中存在,二级缓存需要手动配置. 在一级缓存中,如果数据保存到数据库中后,而session又没有关闭的 ...

  6. MySQL7:性能优化

    性能优化 优化MySQL数据库是数据库管理员和数据库开发人员的必备技能.MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库的整体性能:一方面需要合理的结构设计和参数调整,以提高用户操作响应的 ...

  7. JVM内存问题定位

    一.查看机器资源使用状态: 使用top命令,内存占用较高的那个PID对应的进程一般就是JVM了 二.查看Swap状态: 使用free -m 命令,一般内存占用过高会导致swap占用也偏高,看看swap ...

  8. mongodb常用的查询命令例子

    取 time 字段的最大值: db.getCollection('CallLog').find().sort({"time":-1}).limit(1) 最小值只需要把 –1 改成 ...

  9. hdu 1226

    超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  10. 郭霖 - MVVM开源项目学习

    https://blog.csdn.net/guolin_blog/article/details/87900605 https://medium.com/androiddevelopers/view ...