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)
Java的数据类型大体上和C语言并没有多大的区别,有C语言基础的读者对这些数据类型也并不陌生。但是与C语言不同的是Java中还存在布尔型boolean,它在Java编程中同样很容易用到。下面将详细讲述布尔型boolean。
在C语言中,如果判断条件成立,会返回1,否则返回0。例如:
运行结果:
1000>10=true
1000<10=false
1000>10是对的
通过C语言和Java的对比,相信大家都已经清楚布尔型了。实际上,true等同于1,false等同于0,只不过换个名称,并单独成为了一种数据类型即布尔型。
(2)Java运算符
Java的运算符基本与C语言相同,详细介绍参见第5章,这里只简单介绍几种常用的运算符。这些常用的运算符大致分为算术运算符、关系运算符、位操作运算符和条件运算符。
1)算术运算符,见表6-2。
表6-2 算术运算符
2)关系运算符:关系运算符的结果为一个布尔值,见表6-3。
表6-3 关系运算符说明
3)位操作运算符,见表6-4。
表6-4 位操作运算符说明
4)条件运算符:Java中有一个三目运算符的条件运算符。
Java中的条件运算符,书写格式如下:
表达式:关系表达式?表达式1:表达式2条件运算符用来进行逻辑判断,若关系表达式成立,则输出值为表达式1的值;否则为表达式2的值。例如:
输出结果为:
10
(3)Java流程控制语句
Java中的流程控制语句与C语言大体相同,同样具有if…else、while、do…while、for、switch,等等,这里不作重点介绍,仅举例说明。
例1:输出九九乘法表:
运行结果:
例2:用dowhile循环输出从0到9。
运行结果:
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"}
动态初始化是指在声明数组后再进行赋值。例如:
3.一维数组的使用方法
在Java中,一维数组的使用方法与C语言中相差不大,仅举例说明:
写一段代码,要求输入任意2个整数,输出它们的和。
运行结果:
请输入2个整数,以空格为分隔:525
所有数组元素的和为:30
在这个例子当中,值得注意的是在编写程序的过程中,如果要引用数组的长度,一般是使用变量“length”,在程序中一般是使用下列格式:数组名.length,从本例子中的第五行中“intlen=intArray.length”可以看出。
6.1.4 面向对象的定义
Java作为一种独立的编程语言,具有自己的定义方式。在Java中,面向对象的定义可视作类的定义,具体格式如下:
下面举例介绍:
可以将类抽象成现实世界中的学生,具有学号、姓名、性别、地址和年龄等属性。在定义这个类的时候,语法public class student{ }是必不可少的,表示已经定义了一个关于学生的类。
在这个类中,应该包含属性和方法,属性即学生的学号、姓名、性别、地址和年龄。这时,可以
写出程序的大致结构如下:
//定义现实世界中的学生类型
以上就是简单的关于学生的类定义的框架,在关于属性方面的定义,要注意数据类型。对于方法的定义,实际上是通过函数来实现的。例如:
通过这些简单的例子,相信大家对类的定义有了一定的了解。通常在一个类中,可以包含以下类型变量:
局部变量:在方法或者语句块中定义的变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。static也是修饰符的一种。
另外,构造方法没有返回值,而普通方法必须有返回值。
运行结果:
我是一名学生
这时,应该知道如何来访问成员变量和方法。
运行结果:
我是一名学生
我名字叫小明,我10岁了
我要回家了
我饿了
这样,一个类的定义就成功的完成了。