版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Java概述1.1Java历史简介1.2Java的方向划分1.3Java语言的特点1.4Java语言的地位1.5Java开发环境1.6第一个Java程序1.7Java编程规范本章小结
1.1Java历史简介
Java语言源于Sun公司在1990年12月开始研究的一个内部项目,Sun公司的工程师们在项目开发中发现C语言和可用的API(ApplicationProgrammingInterface,应用程序编程接口)难以完成项目开发,1991年4月,Sun公司的JamesGosling博士和几位工程师在改进C语言的基础上创造出一门新的语言——Oak(橡树)。Oak语言有望于控制嵌入在有线电视交换盒、PDA(PersonalDigitalAssistant,掌上电脑)等中的微处理器,后来更名为“Java”(爪哇咖啡)。Java既安全、可移植,又可跨平台,而且人们发现它能够解决Internet上的大型应用问题。
1.2Java的方向划分
Java的版本演进到了Java2,根据其应用的不同层面进行划分,Java2平台被分为三个版本,各版本及其说明如表1-1所示。
1.3Java语言的特点
Java语言具有以下几个特点:
1.简单Java由C、C++发展而来,其语言风格与C++十分相似;另一方面,Java比C++简单,它删除了C++中难理解、易引起安全隐患的内容,如最典型的指针操作、多继承等,降低了学习的难度;同时,Java还有一个特点,即它的基本语法部分与C语言的几乎一模一样,容易为人们接受。
2.面向对象
Java是一种面向对象的程序设计语言,在面向对象上相较于C++更加合理和易于理解,更接近于现实世界的概念。同时,Java语言支持静态和动态风格代码的继承和重用,所采用的自动装箱和拆箱技术让Java的各个基本类型也可以作为对象进行处理。
3.分布式
Java具有支持分布式计算的特征。分布式计算中的“分布”指的是数据分布和操作分布。数据分布即应用系统所操作的数据可以分散存储在不同的网络节点上;操作分布即应用系统的计算可由不同的网络节点完成。Java能实现这两种分布。
4.安全
Java在语言机制和运行环境中都引入了多级安全措施,主要如下:
(1)内存分配及布局由Java运行系统规定,取消了指针的操作,不允许直接对内存进行操作,实现了内存管理自动化,内存布局由Java虚拟机(JavaVirtualMachine,JVM)决定。
(2)运行系统提供字节码验证、代码认证与代码访问权限控制的安全控制模型。
①提供字节码检验器,以保证程序代码在编译和运行过程中接受一层层的安全检查,这样可以防止非法程序或病毒的入侵。
②提供了文件访问控制机制,严格控制程序代码的访问权限。
③提供了多种网络软件协议的用户接口,用户可以在网络传输中使用多种加密技术来保证网络传输的安全性和完整性。
5.编译和解释的结合
Java应用程序由编译器编译成字节码,这个字节码不是最终可执行的程序,不能在具体的平台上运行,还需要由运行系统上的字节码解释器将其解释成机器语言,从而达到边解释边执行的目的。
6.可移植
Java的最大特点是“一次编程,多次使用”。任何机器只要配备Java虚拟机,便可以运行Java程序,因为Java语言不是针对某个具体平台结构设计的。
7.多线程
多线程技术允许应用程序并行执行,即同时做多件事,满足了一些复杂软件的要求。Java不但内置多线程功能,而且提供语言级的多线程支持,即定义了一些用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单和有效。.
1.4Java语言的地位.
1.课程地位Java语言在计算机相关专业中的课程地位如图1-1所示,可以看出,Java最主要的前导课程是C语言,Java的面向过程以及结构化编程主要来自于C语言;Java的后续课程很多,主要是因为Java技术的应用范围非常广泛,而作为这些课程的基础,如果不能很好地掌握Java语言,对于后续课程的学习将有很大影响,所以有关Java语言的课程在软件开发中占有非常重要的地位。
图1-1Java课程地位
Java程序员主要有三个开发方向:
(1) Android移动端开发:主要是移动端应用的开发。移动端包括搭载Android系统的手机、平板、电视盒子等设备。
(2) Web开发:主要有HTML5开发、B/S应用开发、微信开发等,包括企业的信息系统开发,是Java应用的一个非常大的市场。
(3)通信服务器开发:主要是通信服务器的开发,如游戏服务器、腾讯的QQ服务器等。
Java是广泛使用的编程语言,拥有庞大的客户群。据估计,全球范围内有超过30亿台设备在运行Java,超过其他任何一种语言。使用Java编写的程序几乎可用于任何设备,包括智能手机、服务器、自动取款机、销售点终端机(POS)、蓝光播放器、电视、机顶盒、物联网网关、医疗设备、Kindle电子阅读器、汽车等。
1.5Java开发环境
Java开发环境的安装主要有三个步骤,如图1-3所示。图1-3Java开发环境安装
1.5.1安装JavaJDK
JDK(JavaDevelopmentKit)是Java语言的软件开发工具包,是整个Java的核心,包括Java运行环境、Java工具和Java基础类库。要进行Java程序的开发,首先要在电脑上安装JDK,其下载地址为/technetwork/java/javase/downloads/index.html。其下载页面如图1-4所示。
图1-4JDK下载示意图
JDK的安装方法和一般的软件安装一样,跟随软件安装的向导界面,按照默认的安装设置进行即可。安装完后可以在开始菜单中查看,也可以在控制面板中查看是否安装成功,如图1-5所示。
图1-5检查JDK是否安装成功
双击Java图标,然后在弹出的界面中点击“关于”,可以查看Java的版本号,如图1-6所示。图1-6查看JDK版本
1.5.2环境变量设置
安装好JDK后需要进行环境变量的设置,具体流程如图1-7所示。
(1)右键点击“计算机”→“属性”,在弹出的系统属性对话框中点击“高级系统设置”→“高级”→“环境变量(N)…”。
(2)在“环境变量”窗口中的“系统变量(S)”下点击“新建(W)…”,新建“JAVA_HOME”变量,变量值为JDK的安装目录名,默认安装目录为C:\ProgramFiles\Java\jdk1.8.0_161。
图1-7Java环境变量设置流程
(3)在“系统变量(S)”栏找到Path变量,双击进行编辑,在变量值后输入“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”,如图1-8所示。
图1-8编辑环境变量
4)再次在“系统变量(s)”栏点击“新建(W)…”,输入CLASSPATH,变量值后输入“.%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”(注意最前面有一个点),如图1-9所示。图1-9输入环境变量
(5)检验是否配置成功,运行cmd,在黑色窗口中输入“java -version”(java和-version之间有空格)。若如图1-10所示,显示Java的版本信息,则说明安装配置成功。图1-10环境变量设置是否成功
1.5.3集成开发环境
Java的IDE很多,较为常用的有Eclipse、NetBeans、IntelliJIDEA等,如表1-2所示,但是这些IDE对于初学者来说过于庞大,功能过于复杂,且大多是以项目的方式组织程序的。
JCreatorLe5.0软件可以在JCreator官网(/)下载,也可以在很多常用的软件下载网站上搜索下载,下载完按照安装向导提示进行安装即可。安装完毕后打开软件,JCreator的主界面如图1-11所示。图1-11JCreator主界面
如果在使用JCreator过程中出现图1-12所示的提示,表示后台的JavaJDK还没有和我们之前安装的JCreator关联起来,解决方法如下:在JCreator菜单Configure中选择Options→JDKProfiles,检查是否有JDK;如果为空,就点击New按钮,然后找到JDK安装的目录,如图1-13所示。图1-12JDK设置问题图1-13设置JDKProfiles
1.6第一个Java程序
点击JCreator中的菜单项File→New→File,出现新建文件向导,如图1-14所示,选择JavaClasses→JavaClass,点击Next按钮。
图1-14新建Java类
在图1-15所示的窗口中输入文件名“HelloJava”,选择源文件需要放置的路径,如“D:\JavaCode\”,然后点击Finish按钮,即可进入到程序编辑界面。
图1-15输入类名及所在目录
在程序编辑区域会看到下列程序代码:
程序示例1-1第一个Java程序(空程序)。
程序分析:
(1) Java是使用类(class)来组织程序的,在一个文件中可以有多个类,每个类有自己的区域{…},其中只能有一个类的类名与文件名相同,并且带public公共修饰符,该类是作为该文件运行的主类,该类的main方法将是运行该文件的入口函数。
(2)在本书的前四章,我们都在一个文件中定义一个同名的主类,然后在该类中输入一个main函数,作为程序的入口,类似于C语言,在main函数中编写程序语句或者调用其它函数。
(3) main函数的写法:(可以使用JCreator的代码提示:输入main,出现提示后回车,即可自动完成main函数代码。)
(4) main函数中输入的第一条Java语句“System.out.println("HelloJava!");”中,System.out.println()是一个输出函数,将字符串或各种数据类型放入该函数的括号里面,能够输出相应形式的字符到显示器上;点击按钮进行编译,如果有语法错误会在BuildOutput窗口中显示出来,如果没有语法错误将显示“Processcompleted.”,这时点击按钮运行程序。
程序示例1-2第一个Java程序:输出字符串到显示器上。
程序段:(HelloJava.java)
publicclassHelloJava{
publicstaticvoidmain(String[]args){
System.out.println("HelloJava!");
}
}
程序结果:
上面的结构可以改造为函数调用的方式,这将是我们前几章用的比较多的结构,由于main函数是直接调用fun函数,fun函数需要使用static修饰。
1.7Java编程规范
1.7.1初识Java编程规范Java编程规范或者说编程风格,是指Java语言经历了二十多年的发展之后,程序员们对于如何写出规范的程序已经有了一些共同的认识。
上述两个程序运行后的结果一样,但是哪个可读性强呢?从上述两个程序的差别可以看出Java编程规范的优点:
(1)好的编码规范可以改善软件的可读性,让开发人员更快更好地理解新的代码。
(2)好的编码规范可以减少软件代码的维护成本。
(3)好的编码规范可以有效提高团队开发的合作效率。
(4)规范性编码可以让开发人员养成良好的编码习惯,思维更加严谨。
1.7.2Java编程规范归纳
1.命名规范
语言的各种元素命名应该正确并且具有一定含义,如对类、变量、函数名等的命名,应该使用完整的英文单词,要能望文知意,如上述程序的getMaxFromArray函数的命名就比fun函数的命名有意义。
2.驼峰式命名规则
变量名、函数名、参数名等宜以lowerCamelCase风格编写:首字母小写,之后每个单词首字母大写。
3.正确的代码缩进格式
一个排版良好的程序必定有正确的缩进形式,而代码的正确缩进能有效增强程序的可读性,并且还能有效避免逻辑错误。应使用Tab键进行代码缩进,而不要使用空格键,且缩进必须要有正确的层次,如下面的程序段:
该程序共有4个缩进层次:
(1) getMaxFromArray函数:该函数的函数体在一对“{}”之间,左花括号“{”写在函数头部之后,右花括号“}”对齐函数头部第一个字符,该函数体内的所有语句缩进一个层次。
(2) for循环语句:for语句的一对“{}”之间是循环体语句,所以循环体里的所有语句缩进一个层次。
(3) if分支语句:if语句作为for循环体内部语句,所以缩进一个层次。
(4)“max=a[i];”语句:该语句是if的分支语句,如果条件成立,执行分支语句;如果条件不成立,该语句不被执行。
4.进行适当的程序注释
程序的注释能帮助阅读程序的人更快理解程序的含义。注释包括对类、函数、变量、算法、代码等的注释。Java的注释形式主要有以下几种:
(1)块注释,以“/*”开头,以“*/”结束,在“/*”和“*/”之间的代码都是注释代码,为多行注释,注释内容为绿色显示。
(2)行注释,以“//”开头。例如:
intn=a.length; //n表示a数组的长度
for(i=1;i<n;i++){ //从第二个元素开始遍历int数组
(3)文档注释,以“/**”开头,以“*/”结束,一般一个类或接口对应一个文档注释。
本章小结
1.Java程序设计语言于1995年诞生,已经发展了20多年,是目前最为流行的面向对象编程语言之一,课程地位和市场地位都很重要,具有很高的学习价值。2.Java环境搭建主要有以下几个步骤:(1)下载并安装JDK(JavaDevelopmentKit)软件;(2)设置环境变量;(3)安装集成开发环境软件,本书使用的是JCreator。
3.Java程序的新建,新建一个Java类文件,该文件中有一个与文件相同的类,而将该类中的main函数作为运行该文件入口函数,在该函数中编写Java语句。
4.Java程序的运行,首先要将源文件(.java文件)通过编译器编译为与平台无关的字节码文件(.class文件),然后通过解释器来解释执行字节码文件。
5.良好的Java编程风格能够增加程序的可读性,有利于程序的维护。编程风格主要包括以下几点:
(1)有意义的命名;
(2)驼峰式命名规则;
(3)正确的代码缩进形式;
(4)适当的程序注释等。第二章Java语言基础2.1Java标识符与关键字2.2Java数据类型2.3Java运算符2.4Java数据类型转换2.5Java的标准输入/输出语句本章小结
2.1Java标识符与关键字2.1.1Java标识符标识符即在程序中给类、函数、变量等取的名字,它是能被编译器识别而在程序中不会冲突的名字。标识符的定义需要遵守以下规则:(1)标识符是由字母、“_”、“$”和数字组成的。(2)标识符以字母、“_”、“$”开头。(3)标识符不能与关键字同名。(4)标识符区分大小写,如student和Student是不同的标识符。
2.1.2Java关键字
关键字即Java语言本身提供的一种特殊的标识符,又称Java保留字,是被Java已经使用了的名字,在编程时不能使用这些名字。
Java语言的关键字有50个,如表2-1所示。
2.2Java数据类型
Java基本数据类型源于C语言,与C语言有相同之处,同时也有很多差别。Java共有八种基本数据类型,如表2-2所示。
2.2.1整数类型
★与C语言的比较:
(1) Java的整数类型有四种,即byte、short、int、long,各类型在内存中分别占1、2、4、8个字节;C语言只有short、int和long三种。
(2) Java的各种整数类型均可保存正整数、负整数和0。不同于C语言有unsigned的无符号的整数类型,Java的整数都是有正、负数的,在Java中不能写成“unsignedinta=5;”的形式。
程序结果:
2.2.2字符类型
★与C语言的比较:
(1) C语言的char类型,占1字节,采用ASCII编码方式,存放的字符个数为256个,不能存放中文字符;而Java的char类型,占2字节,采用的是Unicode编码,兼容ASCII码,并可以保存中文字符集。
(2) C语言的一个转义字符如'\xhh',其单引号中以“\x”开头,后面接1~2位的十六进制数,而在Java中则不可用C语言的这种形式“charc='\x61';”,应改成“charc5='\u0061';”的形式,以“\u”开头,后面接1~4位的十六进制数。
程序结果:
Java中的转义字符基本和C语言的相同,如表2-3所示。
2.2.3小数类型
小数类型(浮点类型)分为float单精度和double双精度两种。float类型保留8位有效数字的小数,在内存中分配4个字节;double类型保留16位有效数字的小数,在内存中分配8个字节。Java和C语言一样都是近似地表示小数,精度越高越接近小数字面值,所以一般对于小数处理大多使用double类型。
程序结果:
2.2.4布尔类型
★与C语言的比较:
(1) C语言中没有布尔类型变量,使用0和非0来代表逻辑假和逻辑真,所以任何合法的表达式都可以作为条件来使用。比如if(a+b)是合法的:如果a+b的值等于0,则条件为假,如果a+b的值为非0,则条件为真。
(2) Java可以定义布尔变量来保存true、false,即“booleanb=true;”,并且不允许使用数字来代表逻辑真或逻辑假,如if(a+b)就是非法的,必须写成if(a+b!=0),作为if的条件只能是boolean变量、条件表达式或逻辑表达式。
2.2.5引用变量
Java的变量主要分为两类:基本数据类型变量和引用变量。基本数据类型在上面几节已经做了说明,Java定义的变量除了基本数据类型之外,其它的都可以称为引用变量,例如Java预定义类变量、数组类型变量、用户自定义类变量等等。
例如:基本数据类型变量如“inta;”“charc;”“doubled;”“booleanb;”等,引用变量如“Strings;”“int[]a;”“Students;”“Animalan;”等。
★与C语言的比较:
(1) C语言中有个很重要的概念——指针,由指针带来的各种运算和操作使得C语言的程序灵活,效率高,但同时也会让程序变得复杂,可读性降低,容易出错。
(2) Java中没有了指针这个概念,舍弃了指针的相关运算和操作,程序变得简洁易读,安全可靠。
Java的引用变量源于C语言的指针变量,同样是保存内存地址,都是通过地址完成对内存数据的操作,但是二者之间有一定区别:
(1)变量长度:C语言的指针变量用于保存内存地址编号,长度为int的4个字节;Java引用变量也用于保存内存地址,但Java封装了地址,可以转换成字符串查看,不必考虑其长度。
(2)初始值:Java引用变量的初始值为Java的关键字null,表示该指针变量为空;C语言的指针变量是int,如不初始化指针,那它的值就是不固定的,没有初始化就进行指针操作是很危险的。
(3)计算:Java引用变量不可以进行内存地址的计算,使用更加安全可靠;C语言的指针变量是int,可以计算,如++、--以及地址变化等,使用较为灵活,但也容易出问题。
(4)内存溢出:Java引用变量的使用权限比较小,不容易产生内存溢出;C语言的指针变量是容易产生内存溢出的,所以程序员要小心使用,及时回收。
2.3Java运算符
Java的运算符来源于C语言,和C语言的运算符大体相同,略有区别。Java的运算符如表2-4所示。
★与C语言的比较:
(1)Java取消了C语言的sizeof()运算符。sizeof()用于求括号中的内容在内存中所占字节数。
(2) Java新增了一个instanceof的运算,一般形式为
对象名instanceof类名;
用以判断左边的对象是否是右边类的实例,运算返回true或false。
(3)Java的关系运算和逻辑运算的结果为boolean,即逻辑真或逻辑假,而C语言的关系运算或逻辑运算得到的结果是用整数1和0代表真和假。
2.4Java数据类型转换
2.4.1自动类型转换Java中的自动类型转换与C语言中的类似,系统支持某个基本数据类型直接赋值给另外一种数据类型,即称为自动类型转换。Java的自动类型转换按照图2-1所示,当有两种不同数据类型运算时,左边的数据类型将会自动向右边的数据类型转换,然后进行运算。
图2-1基本数据类型自动转换
程序结果:
2.4.2强制类型转换
可以使用强制类型转换运算符即(类型名)来强制进行类型转换,以便进行同类型数据运算,但是要注意Java对类型要求较为严格,进行强制类型转换时一定要考虑是否可以转换,一旦转换失败就会导致程序异常终止。
程序结果:
程序分析:
(1)在语句“inta1=349;”中,a1是int类型,在内存中占4个字节32bit,二进制表示形式为101011101,左边补0补足32bit;将a1强制类型转换为byte类型赋值给b1,b1在内存中只占1个字节8bit,所以a1左边的24bit被丢掉了,剩下后面8个bit(01011101),转换为十进制为93,如图2-2所示。
(2)在语句“inta2=477;”中,二进制形式为(111011101)2,进行强制类型转换(byteb2=(byte)a2;),取低位的8bit赋值给b2,即(11011101)2,最高位为1,所以b2为负数,按照补码的规则,11011101减1取反得到00100011→-35,如图2-2所示。
(3) a3是小数97.153,(int)a3强制转换为整数则丢掉小数部分得到97;(char)a3强制转换为char类型,先丢掉小数部分得到int的97,再强制转换为char,得到字符'a'。
图2-2基本数据类型强制转换
2.5Java的标准输入/输出语句
2.5.1Java标准输出语句Java标准输出指的是将程序中的数据输出到显示器。在JCreatorIDE中进行操作指的是将数据输出到JCreator软件的控制台(console),该输出操作使用函数System.out.println()来完成。
程序结果:
程序结果:
2.5.2Java标准输入语句
Java标准输入指的是从键盘将数据输入到程序中。Java中用System.out来表示标准输出设备,如显示器;用System.in来表示标准输入设备,如键盘。可以使用Scanner类完成输入操作,使用该类对象联合System.in能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承德应用技术职业学院《海洋监察管理》2023-2024学年第一学期期末试卷
- 2025版综合防灾减灾工程大清包建设合同范本3篇
- 成都银杏酒店管理学院《工程管理类软件应用含技术》2023-2024学年第一学期期末试卷
- 池州学院《电气材料基础》2023-2024学年第一学期期末试卷
- 2025版酒店客房部服务员聘用合同书2篇
- 2025版美容美发店员工福利与补偿合同3篇
- 2024年证券投资私募股权基金合作协议3篇
- 2025版C型钢仓储物流服务与供应链优化合同3篇
- 热力管道施工方案步骤
- 二零二五年度信息技术开发与维护服务合同2篇
- 2024年中国大数据企业排行榜V9.0(大数据产业白皮书)-中国民营科技促进会
- 2025年统编版高考政治一轮复习:选择性必修1、2、3共3册必背考点知识点汇编
- 货物交接单和交接合同
- 《灭火应急疏散预案》课件
- 七年级语文下册专项练习知识(对联)
- MOOC 知识图谱导论-浙江大学 中国大学慕课答案
- 2016-2017学年天津市部分区九年级(上)期末化学试卷
- 培智五年级上次数学期末考试题
- 国家开放大学电大专科《英语教学法》2023-2024期末试题及答案(试卷代号:2145)
- 管桩水平承载力计算
- 事业单位领导班子考核测评表
评论
0/150
提交评论