单片机与物联网技术应用实战教程
上QQ阅读APP看书,第一时间看更新

6.1 Java语言概述

6.1.1 Java语言特点

Java语言的主要特点有完全面向对象、可靠性、安全性、可移植性和多线程等,这些特点使得Java语言深受编程爱好者的喜爱。下面将对这些主要特点进行简单的介绍。

(1)完全面向对象

面向对象设计程序实际上是一种程序的设计技术,是Java语言中最基本的编程思路。对于Java而言,现实世界中的任何实物都可以看成对象,对象与对象之间通过消息来相互作用。而现实世界中的任何实物都可以归结于某一类的事物,对应到计算机程序上来讲,类就是对象的模型。类包含变量和函数,变量被称为属性,也叫成员变量,函数被称为方法。属性和方法统称为类的成员。总的来说,Java语言程序思路为程序=对象+消息,映射到计算机上就相当于一个Java的程序是多个类的集合。

(2)可靠性和安全性

Java语言中存在严密的语法规则,编译和运行过程中一旦出现错误,将会检查错误;Java语言有着自动回收的机制,防止内存丢失等问题;Java语言不支持指针,不会对内存进行非法访问。

(3)可移植性

相对于C语言和C++来讲,Java语言在Windows下编写的程序,不需要任何的修改就可以在Linux等平台下运行,具有良好的可移植性。Java语言可以借助Java虚拟机JVM(JavaVirtual Machine)完成跨平台运行,只要在不同的平台上安装对应的JVM,就可以运行Java程序。

(4)多线程

区别于多进程,Java的多线程编译使Java成为程序员喜爱的服务器端开发语言的主要原因之一。多进程是指操作系统能同时运行多个任务;多线程是指同一程序中可以有多个顺序流在执行。比起多进程,Java的多线程可以更好地对CPU进行利用,使得Java需要更少的管理费用。而对于传统的单线程环境,多线程可以帮助提高CPU的利用率,例如,本地系统资源的读取速度比CPU慢很多,尽管CPU有很多空闲时间,而程序必须等待每一个这样的任务完成后才能执行下一步。因此,Java的多线程使用起来也是非常的方便。

6.1.2 Java语言的基本语法

对于学习Java的人来说,基本语法的学习是必不可少的,也是学习一门新语言的重中之重。本章将介绍编程语言最基础的部分:Java数据类型、Java运算符、Java流程控制语句、Java数组,这是所有Java编程人员都应该掌握的知识。本章将通过大量的程序和代码,来讲述如何操作这些数据和运算符。熟练掌握本章节,将对后续Java的开发起着非常重要的作用,并且对以后学习其他编程语言,有很大的帮助。

(1)Java数据类型

众所周知,Java是一种强类型的语言,在对变量进行声明的时候必须要指明数据类型,且不同变量的值会占据不同的内存空间。

Java中共有8种基本数据类型,这些基本数据类型与C语言相似,分为4种整型:字节型byte、短整型short、整型int和长整型long;两种浮点型:单精度浮点型float、双精度浮点型double;1种字符型char;1种布尔型boolean。见表6-1。

6-1 Java基本数据类型(1byte=8bit)

978-7-111-59182-5-Part01-246.jpg

Java的数据类型大体上和C语言并没有多大的区别,有C语言基础的读者对这些数据类型也并不陌生。但是与C语言不同的是Java中还存在布尔型boolean,它在Java编程中同样很容易用到。下面将详细讲述布尔型boolean。

在C语言中,如果判断条件成立,会返回1,否则返回0。例如:

978-7-111-59182-5-Part01-247.jpg

运行结果:

1000>10=true

1000<10=false

1000>10是对的

通过C语言和Java的对比,相信大家都已经清楚布尔型了。实际上,true等同于1,false等同于0,只不过换个名称,并单独成为了一种数据类型即布尔型。

(2)Java运算符

Java的运算符基本与C语言相同,详细介绍参见第5章,这里只简单介绍几种常用的运算符。这些常用的运算符大致分为算术运算符、关系运算符、位操作运算符和条件运算符。

1)算术运算符,见表6-2。

6-2 算术运算符

978-7-111-59182-5-Part01-248.jpg

2)关系运算符:关系运算符的结果为一个布尔值,见表6-3。

6-3 关系运算符说明

978-7-111-59182-5-Part01-249.jpg

3)位操作运算符,见表6-4。

6-4 位操作运算符说明

978-7-111-59182-5-Part01-250.jpg

4)条件运算符:Java中有一个三目运算符的条件运算符。

Java中的条件运算符,书写格式如下:

表达式:关系表达式?表达式1:表达式2条件运算符用来进行逻辑判断,若关系表达式成立,则输出值为表达式1的值;否则为表达式2的值。例如:

978-7-111-59182-5-Part01-251.jpg

978-7-111-59182-5-Part01-252.jpg

输出结果为:

10

(3)Java流程控制语句

Java中的流程控制语句与C语言大体相同,同样具有if…else、while、do…while、for、switch,等等,这里不作重点介绍,仅举例说明。

例1:输出九九乘法表:

978-7-111-59182-5-Part01-253.jpg

运行结果:

978-7-111-59182-5-Part01-254.jpg

例2:用dowhile循环输出从0到9。

978-7-111-59182-5-Part01-255.jpg

978-7-111-59182-5-Part01-256.jpg

运行结果:

0123456789

值得注意的是,println()输出内容后换行,print()不换行。

6.1.3 Java数组

数组对于处理具有相同类型的数据起着非常重要的作用。本节将介绍Java中常用的一维数组。

1.一维数组的声明

在使用一维数组时,首先要对其进行声明。

形式一:inta[]

形式二:int[]a

基本类型数组的声明有两种形式,且这两种形式并没有多大区别,效果也是一样,读者可以根据自身的编程习惯进行选择。值得注意的是,Java中的数组声明与C语言的有一定的不同,Java在定义数组时并不会为数组元素分配内存,因此a后面的中括号[]里面并不需要指定数组元素的个数。另外,如果我们需要给数组元素分配一定的内存资源时,可以使用运算符new,格式如下:

inta=newint[3];

表示为一个整型数组分配3个int型整数所占据的内存空间。

2.一维数组的初始化

静态初始化是指在声明数组的同时进行赋值。例如:

int intArray[]={0,1,2,3};

String stringArray[]={"abc","def","ghi"}

动态初始化是指在声明数组后再进行赋值。例如:

978-7-111-59182-5-Part01-257.jpg

978-7-111-59182-5-Part01-258.jpg

3.一维数组的使用方法

在Java中,一维数组的使用方法与C语言中相差不大,仅举例说明:

写一段代码,要求输入任意2个整数,输出它们的和。

978-7-111-59182-5-Part01-259.jpg

运行结果:

请输入2个整数,以空格为分隔:525

所有数组元素的和为:30

在这个例子当中,值得注意的是在编写程序的过程中,如果要引用数组的长度,一般是使用变量“length”,在程序中一般是使用下列格式:数组名.length,从本例子中的第五行中“intlen=intArray.length”可以看出。

6.1.4 面向对象的定义

Java作为一种独立的编程语言,具有自己的定义方式。在Java中,面向对象的定义可视作类的定义,具体格式如下:

978-7-111-59182-5-Part01-260.jpg

下面举例介绍:

可以将类抽象成现实世界中的学生,具有学号、姓名、性别、地址和年龄等属性。在定义这个类的时候,语法public class student{ }是必不可少的,表示已经定义了一个关于学生的类。

在这个类中,应该包含属性和方法,属性即学生的学号、姓名、性别、地址和年龄。这时,可以

写出程序的大致结构如下:

//定义现实世界中的学生类型

978-7-111-59182-5-Part01-261.jpg

以上就是简单的关于学生的类定义的框架,在关于属性方面的定义,要注意数据类型。对于方法的定义,实际上是通过函数来实现的。例如:

978-7-111-59182-5-Part01-262.jpg

通过这些简单的例子,相信大家对类的定义有了一定的了解。通常在一个类中,可以包含以下类型变量:

局部变量:在方法或者语句块中定义的变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

成员变量:成员变量是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。

类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。static也是修饰符的一种。

另外,构造方法没有返回值,而普通方法必须有返回值。

978-7-111-59182-5-Part01-263.jpg

运行结果:

我是一名学生

这时,应该知道如何来访问成员变量和方法。

978-7-111-59182-5-Part01-264.jpg

978-7-111-59182-5-Part01-265.jpg

运行结果:

我是一名学生

我名字叫小明,我10岁了

我要回家了

我饿了

这样,一个类的定义就成功的完成了。