版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java简介第一章Java简介第一章就业技能结构图本门课程主要技能点就业技能结构图本门课程主要技能点课程整体目标掌握Java语言基础知识理解面向对象的编程思想运用Java编写命令行程序运用JDBC编写数据库访问程序运用Swing组件编写图形用户界面程序运用Swing组件和JDBC实现C/S结构的应用程序课程整体目标掌握Java语言基础知识课程项目展示俄罗斯方块游戏演示演示项目案例:俄罗斯方块课程项目展示俄罗斯方块游戏演示预习检查什么是程序?Java领域有哪些技术?创建一个Java程序的步骤?预习检查什么是程序?本章目标了解Java语言了解Java程序的类型理解Java虚拟机(JVM)掌握Java程序运行环境的配置编写第一个基于Java的程序Java中程序的注释本章目标了解Java语言Java释义“Java”一词的本意是地名——“爪哇”;爪哇岛位于南太平洋,是印度尼西亚的一部分。爪哇岛Java释义“Java”一词的本意是地名——“爪哇”;爪哇关于爪哇全世界三大咖啡产地:巴西印尼爪哇岛中国海南岛由此可见,Java的原意是指一个咖啡的产地,也可以说是一种咖啡的品牌。关于爪哇全世界三大咖啡产地:Java语言简介Java是一种程序设计语言,由SunMicrosystem公司于1995年推出;早在1991年,Sun公司的JamesGosling等人开始开发名为Oak的程序设计语言,希望用来控制嵌入在有线电视机顶盒和PDA等设备中的微处理器;1994年,Oak语言正式更名为Java;Java语言凭借其独有的安全性、可移植性和平台无关性,迅速走红。Java语言简介Java是一种程序设计语言,由SunMicJava可以做什么开发桌面应用程序银行软件、商场结算软件开发面向Internet的应用程序网上数码商城、阿里巴巴、易趣网演示示例:Java2DDemoJava可以做什么开发桌面应用程序演示示例:JavaJava与InternetInternet使Java成为网络上最流行的编程语言;同时,Java对Internet的影响也意义深远;在Java出现以前,几乎没有工具可以在Internet上执行动态交互程序;使用Java语言编写的Applet程序可以对用户的输入和操作作出响应。Java与InternetInternet使Java成为网络Java程序的类型-AppletApplet(小应用程序)是用Java编写,在Internet上运行的程序,可以在任何客户端系统上下载,在浏览器中运行。Java程序的类型-AppletApplet(小应用程序)是Java程序的类型-ApplicationApplication(应用程序)是指在计算机操作系统支持下运行的程序,它既可以基于图形界面,又可以基于控制台。Java程序的类型-ApplicationApplicatiJava的平台无关性Java是一种既面向对象又可以跨平台的语言,即:编写一次,随处运行;Java不仅适用于单机应用程序和基于网络的程序,也可用于创建消费类设备的附件程序,如移动电话、掌上设备等。Java源程序代码WindowsLinuxSolarisJVMJava虚拟机Java字节码(可跨平台)编译运行Java的平台无关性Java是一种既面向对象又可以跨平台的语Java虚拟机Java虚拟机(JavaVirtualMachine)是可运行Java字节码的虚拟计算机系统;使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上;它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。用户USER字节码程序JVM(Java虚拟机)操作系统硬件Java虚拟机Java虚拟机(JavaVirtualMaJava虚拟机的运行过程网络JIT代码生成器.java源代码文件.class字节码文件编译时运行时硬件类加载器字节码校验器解释器Java虚拟机的运行过程网络JIT代码.java源代码文Java开发工具包开发和运行Java程序,必须依赖和使用由SunMicrosystem公司提供的Java开发工具包(JavaDevelopmentKit)。操作系统Java虚拟机Java基础类库客户端编译器浏览器插件开发工具集成开发环境Java开发工具包开发和运行Java程序,必须依赖和使用由SJavaPlatform2JDK(Java开发工具包)从1.3版本以后,Sun公司将其正式更名为JavaPlatform2;为适应不同的用途,又将其细分为三个版本:J2SE(StandardEdition):标准版,适用于普通应用程序的开发;J2EE(EnterpriseEdition):企业版,适用于大型企业级应用程序的开发;J2ME(MircoEdition):微型版,适用于移动设备或嵌入式设备的程序开发。JavaPlatform2JDK(Java开发工具包)从下载安装JDK打开浏览器,在地址栏键入:/j2se/1.6.3/download.html,登录Sun公司的官方网站,免费下载JDK软件和文档;下载完毕,即可安装JDK;默认安装在C盘根目录下bin目录:存放可执行文件;lib目录:存放Java的类库文件;demo目录:存放演示程序;jre目录:存放Java运行环境文件。
下载安装JDK打开浏览器,在地址栏键入:http://jav配置环境变量成功安装JDK以后,还需配置环境变量才可以开发和调试Java程序,右击【我的电脑】→【属性】→【高级】→【环境变量】:编辑Path变量新建classpath变量配置环境变量成功安装JDK以后,还需配置环境变量才可以开发和开发Java程序的步骤创建Java源程序Java源程序可以使用任何文本编辑器创建与编辑,一般用.java作为扩展名,其实就是一个使用Java语言编写的文本文件;编译源程序Java编译器读取Java源程序并翻译成Java虚拟机能够明白的指令集合,并以字节码的形式保存在文件中,通常,字节码文件以.class作为扩展名;运行class(字节码)文件Java解释器读取字节码文件,取出指令并翻译成计算机能够执行的机器代码,完成运行过程。开发Java程序的步骤创建Java源程序编写第一个Java程序打开记事本,新建一个文本文件,将文件名改为Hello.java,在文件中键入如下内容并保存:classHello{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}编写第一个Java程序打开记事本,新建一个文本文件,将文件名Java源程序扩展名为.java的源文件使用记事本进行编辑Java源程序扩展名为.java使用记事本使用javac编译器编译源文件接下来需要将源程序进行编译;进入命令提示行,切换到源文件所在的目录,执行javac命令,使用javac编译器编译源文件;javac命令的格式是:javac完整的源文件名切换到源文件所在的目录使用javac命令编译源文件光标闪烁表示语法无误,顺利通过编译使用javac编译器编译源文件接下来需要将源程序进行编译;切.class(字节码)文件顺利通过编译后将生成一个扩展名为.class的字节码文件(类描述文件)。扩展名为.java的源文件通过编译后生成的扩展名为.class的字节码文件.class(字节码)文件顺利通过编译后将生成一个扩展名为.使用java解释器运行字节码文件进入命令提示行,在字节码文件所在的目录下,执行java命令,使用java解释器运行字节码文件;java命令的格式是:java类名称请注意:这里只需要类名称,而不是带扩展名的文件名。执行java命令运行字节码文件程序运行效果使用java解释器运行字节码文件进入命令提示行,在字节码文件分析程序3-1关键字class用来定义一个类,Hello是类的名称;在Java程序中,所有的语句都必须放在某个类中;整个类及其所有成员都包含在一对花括号中(即{和}之间),它们标志着类定义块的开始和结束。定义类的一般语法:
class类名 { …… }分析程序3-1关键字class用来定义一个类,Hello是类分析程序3-2程序必须从main函数开始执行;关键字public是访问修饰符,用来控制类成员的可见范围及作用域;关键字static允许在不创建类的实例的情况下,调用main函数;关键字void用来说明main函数是没有返回值的;args是字符串数组,用来从命令行接收参数;main函数的一般形式如下:
public
static
voidmain(String[]args) { …… }分析程序3-2程序必须从main函数开始执行;分析程序3-3String[]是字符串类型的数组;在Java中,类名称一般首字母大写;使用System.out.println()将信息输出到控制台上,即打印出来。分析程序3-3String[]是字符串类型的数组;JavaAPI文档JavaAPI文档描述了Java的许多内置功能,以及提供各种类的帮助说明,它是程序员经常查阅的资料;可登录Sun公司的官方网站免费下载。JavaAPI文档JavaAPI文档描述了Java的许多Java语言的特点2-1简单去掉了C和C++中许多复杂功能,如指针、运算符重载等,没有goto语句,没有struct和union等;面向对象Java是完全面向对象的编程语言,比C++更彻底,纯度更高;健壮性没有指针,避免对指针的误操作造成程序崩溃;程序员分配的内存空间,无需释放,由Java虚拟机的垃圾回收机制来统一完成此项工作,避免了内存泄漏;Java语言的特点2-1简单Java语言的特点2-2安全性由于Java取消了指针运算,有效地提高了程序的安全性;Java程序运行在Java虚拟机上,虚拟机可以有效地过滤掉恶意代码,防止程序员有意编写的病毒程序;分布性Java程序可以跨平台,跨操作系统,完全支持网络应用程序的设计;多线程Java程序使用一个称为“多线程”的进程同时处理多项任务。Java语言的特点2-2安全性小结程序运行出现了问题,怎么办?如何定位错误代码的位置?如何知道错误的原因?编程输出以下信息。*********************************************
欢迎进入Java编程世界*********************************************参考代码小结程序运行出现了问题,怎么办?编程输出以下信息。***Java文件中的注释与其它编程语言一样,也可以在Java文件添加注释,Java文件中的注释有三种:单行注释:以//开始,在行尾结束;多行注释:以/*开始,以*/结束,可以有多行;Java文件中的注释与其它编程语言一样,也可以在Java文件总结Java是面向对象的、跨平台的程序设计语言;Java程序是运行在Java虚拟机之上的;要下载安装JDK,才可以开发和运行Java程序;JDK提供一系列的工具,这些工具位于JDK安装路径的bin目录下,常用的有:javac:编译java:运行javadoc:提取文档可以使用任何文本编辑器编写Java源程序;Java中的注释有三种:单行注释、多行注释、文档注释;总结Java是面向对象的、跨平台的程序设计语言;作业1、完成(六)Java初级编程教材P13页理论复习题。2、完成补充作业题。作业1、完成(六)Java初级编程教材P13页理论复习题。第二章Java语言基础(上)第二章Java语言基础(上)作业点评作业点评本章相关词汇(蓝色为关键字)本章相关词汇(蓝色为关键字)本章目标Java中的变量和数据类型Java中变量的作用域规则数据类型转换Java中的运算符和表达式程序控制结构本章目标变量变量是内存中的一块存储区域,是存储数据的基本单元;声明变量的语法:
数据类型标识符[=值];如:
intnum;
floatmoney=123.45f;
charch1,ch2=‘A’;变量变量是内存中的一块存储区域,是存储数据的基本单元;标识符命名规则变量、函数、数组、对象、类和接口等等都需要命名,这些名称统称为标识符;Java中对于标识符的命名规则作了如下限制:只能由英文字母、数字、下划线“_”和“$”符号组成;必须以英文字母、“_”或“$”开头,即不能以数字开头;除“_”和“$”以外,不能包含其它任何特殊字符;不能与关键字冲突;严格区分大小写。标识符命名规则变量、函数、数组、对象、类和接口等等都需要命名关键字Java中的关键字:abstract、boolean、break、byte、case、catch、char、class、continue、do、double、else、enum、extends、false、find、finally、float、for、implements、import、instanceof、int、interface、long、native、new、null、package、private、protected、public、return、short、static、super、switch、synchronized、this、throw、throws、true、try、void、while关键字Java中的关键字:标识符命名规则练习题:ab$ a_b 13cn float Main ab doubles ab-12 a$.s name标识符命名规则练习题:数据类型数据类型用来确定要存储在内存单元中的数据的类型;在Java中,数据类型被区分成两个种类:原始数据类型引用数据类型数据类型数据类型用来确定要存储在内存单元中的数据的类型;原始数据类型原始数据类型是最简单的数据形式,与C的基本数据类型很相似:原始数据类型原始数据类型是最简单的数据形式,与C的基本数据类数据类型转换程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时),Java的数据类型转换比C控制得更为严格;数据类型转换有两种情况:自动类型转换强制类型转换数据类型转换程序中经常会遇到要将数据类型进行转换的情况(如:自动类型转换自动类型转换也称作隐式类型转换;将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换:两种类型之间相互兼容;目标类型大于源类型(即类型提升);如:
charch='A';
intnum=ch;
floatf=num;
doubled=f;
//类型转换自动发生,无需显式说明自动类型转换自动类型转换也称作隐式类型转换;强制类型转换强制类型转换也称作显式类型转换;如果被转换的值的数据类型大于其目标类型,将会丢失部分信息;如:
intx=65;
charch=x;这样的语句将报错,因为char类型小于int类型,编译器无法将其自动转换,只能进行强制转换:
intx=65;
charch=(char)x;强制类型转换强制类型转换也称作显式类型转换;类型提升规则不难看出,在有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换;类型提升应遵循如下规则:两种类型必须兼容,且目标类型大于源类型,例如: byte、char和short类型都可以提升为int型。对于表达式而言,其最终结果将会与表达式中最高的数据类型相同。类型提升规则不难看出,在有类型提升的情况下,编译器将自动进行引用数据类型在Java中,除了上述8种原始数据类型的变量以外,其余的全都属于引用数据类型,其中包括:数组对象存储在引用类型变量中的值是该变量表示的值的地址;引用数据类型在Java中,除了上述8种原始数据类型的变量以外变量的作用域和生命周期变量的作用域指变量起作用的范围,说明变量在什么部分可以被访问;变量的生命周期是指变量在内存中存在的周期,即什么时候分配空间,什么时候销毁;变量的作用域和生命周期变量的作用域指变量起作用的范围,说明作用域示例/*用于演示变量的作用域*/public
classScopeVariable{
public
static
voidmain(String[]args){
intouter=10;//outer定义在外层作用域
if(outer<100){ intinner=outer*2; //inner定义在内层作用域
}
/*正确,main方法内都可以访问outer变量*/ System.out.println("outer="+outer);
/*错误,外层作用域不能访问定义在内层作用域的变量*/ System.out.println("inner="+inner);}}作用域示例/*用于演示变量的作用域*/运算符和表达式运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号;运算符和操作数的有效组合称为表达式;Java提供了一系列丰富的运算符,包括:算术运算符关系运算符逻辑运算符条件运算符赋值运算符运算符和表达式运算符是通过一定的运算规则操作一个或多个操作数算术运算符算术运算符主要用于数学计算,一般使用数值作为操作数:算术运算符算术运算符主要用于数学计算,一般使用数值作为操作数关系运算符关系运算符可以测试两个操作数之间的关系(但不会改变操作数的值),关系表达式的结果为boolean型true/false:关系运算符关系运算符可以测试两个操作数之间的关系(但不会改变逻辑运算符逻辑运算符与boolean型操作数一起使用:逻辑运算符逻辑运算符与boolean型操作数一起使用:逻辑与和逻辑或Java提供了两个在其它计算机语言中没有的逻辑运算符,这就是逻辑与和逻辑或的短路版本;对于短路与(&&),如果其左侧为false,则不再计算其右侧,整个表达式的结果为false,只有左侧为true时才计算右侧;对于短路或(||),如果其左侧为true,则不再计算其右侧,整个表达式的结果为true,只有左侧为false时,才计算右侧。逻辑与和逻辑或Java提供了两个在其它计算机语言中没有的逻辑短路与示例inta=10;intb=20;if(++a==12&++b==22){……}System.out.println(a);System.out.println(b);/*这里使用的是逻辑与,试分析最后的输出结果*/inta=10;intb=20;if(++a==12&&++b==22){……}System.out.println(a);System.out.println(b);/*这里使用的是短路与,试分析最后的输出结果*/11211120短路与示例inta=10;inta=10;112赋值运算符赋值运算符的运算顺序是从右至左的:赋值运算符赋值运算符的运算顺序是从右至左的:条件运算符?:条件运算符是三元运算符;它的一般形式是:
表达式1?表达式2:表达式3根据表达式1的结果来判断执行表达式2还是表达式3,如果表达式1的结果为true,则执行表达式2,否则执行表达式3;条件运算符在某些情况下能够替代小型的if…else语句。条件运算符?:条件运算符是三元运算符;运算符的优先级很多情况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:运算符的优先级很多情况下,一个表达式由多个运算符组成,优先级控制流语句一般情况下,程序是从上往下依次顺序执行的;但很多时候,我们需要改变程序执行的流程,这就使用到了控制流语句;控制流语句包括:判断语句循环语句跳转语句控制流语句一般情况下,程序是从上往下依次顺序执行的;判断语句判断语句也称作条件语句或分支语句;判断语句主要用来控制程序在何种情况下执行某一部分;判断语句包括:if语句if…else语句if…elseif语句switch…case语句练习:写程序,若星期一到星期五,则打印出“工作快乐”,若星期六、星期天则输出“周末更快乐”判断语句判断语句也称作条件语句或分支语句;循环语句循环语句也称作迭代语句;循环语句可用于重复执行相同的操作;循环语句包括:while语句do…while语句for语句练习:使用循环打印九九乘法表循环语句循环语句也称作迭代语句;跳转语句跳转语句允许以非线性的方式执行程序,可以将控制权转到程序的其它部分;跳转语句包括:break语句continue语句Java抛弃了C语言中的goto语句。跳转语句跳转语句允许以非线性的方式执行程序,可以将控制权转到跳转语句判断下面程序能循环多少次?classTest{ publicstaticvoidmain(String[]args){ inti=0; while(i<10){ if(i<10){ i++; continue; } if(i==5){ break; } } System.out.println(i); }}跳转语句判断下面程序能循环多少次?第二章Java语言基础(下)第二章Java语言基础(下)如果要将某些信息打印到屏幕上,就必须使用输出语句;使用System.out.println()实现换行输出效果;使用System.out.print()实现输出但不换行效果;无论输出什么类型的数据,只需将数据作为参数传递给它们即可,而无需像C语言中那样,使用%s、%d之类的控制字符,如:
inta=10;
floatf=3.14f; System.out.println(a); System.out.print(f); System.out.println('X');作业点评如果要将某些信息打印到屏幕上,就必须使用输出语句;作业点评有些时候,我们可能会需要对输出格式进行控制,这就使用到了转义字符;以下是一些常用的转义字符:有些时候,我们可能会需要对输出格式进行控制,这就使用到了转义本章目标Java中的数组new关键字命令行参数本章目标Java中的数组回顾C语言中的内存分配C语言中内存分配的两种形式:栈内存:特点:和作用域同生命周期,自动申请,自动释放。申请方式:局部变量,形式参数。栈内存中的空间一般都有名称,通过变量名访问其存储的数据。堆内存(即动态内存分配):特点:手工申请,手工释放,生命周期由程序员决定。申请方式:由malloc函数或calloc函数申请,realloc函数进行调整,free函数负责释放。堆内存中的空间一般没有名称,只能通过指针访问。回顾C语言中的内存分配C语言中内存分配的两种形式:Java中的内存分配Java中的原始数据类型与C语言中的基本数据类型一样,其变量都是在栈中分配空间;而除了8种原始数据类型以外,其它的任何数据都不可以在栈中分配,只能到堆中开辟空间,而在堆中分配的空间又只能通过指针访问;通过指针访问堆内存的方式,在Java中被称作引用数据类型;可以认为,Java中的引用就类似于C语言中的指针,只是对指针进行了一定程度上的包装,避免了因直接操作指针而造成的数据意外损坏,从而导致程序错误的情况。Java中的内存分配Java中的原始数据类型与C语言中的基本回顾C语言中的数组在C语言中,从存储方式上讲,声明数组有两种情况;在栈内存中分配空间,如:
intary[10];//声明有10个整型元素的数组在堆内存中分配空间,如:
int*p=NULL;//声明整型指针
//指针指向堆空间 p=(int*)malloc(10*sizeof(int));C语言允许有栈数组,也允许有堆数组。 回顾C语言中的数组在C语言中,从存储方式上讲,声明数组有两种数组数组用于将相同类型的数据存储在连续的存储单元中;可以通过指定数组的名称和长度来声明数组;一旦声明数组的大小,就不能再修改;数组元素通过数组名和索引来访问,索引从0开始;数组可以是一维,也可以是多维。数组数组用于将相同类型的数据存储在连续的存储单元中;new关键字在Java中,不允许将数组分配在栈内存中,只能分配在堆内存中;Java中没有类似于malloc、calloc、realloc和free等函数,取而代之的是new关键字;new是Java中内置的操作符;new操作符用来从堆中分配指定类型的内存空间,并返回相应类型的引用,其作用类似于malloc函数。new关键字在Java中,不允许将数组分配在栈内存中,只能分Java中声明数组的几种方式在Java中声明数组有如下方式://仅声明数组的引用,但没有分配内存空间float[]fAry;//声明数组的同时,根据指定的长度分配内存,但数组中没有值char[]chAry=new
char[10];//声明数组并分配内存,同时将其初始化int[]ary1=new
int[]{1,2,3,4,5};//与前一种方式相同,仅仅只是语法相对简略int[]ary2={1,2,3,4,5};Java中声明数组的几种方式在Java中声明数组有如下方式:声明数组示例public
classArrayDemo{
public
static
voidmain(String[]args){
//声明整型数组的引用,类似于C中的int*p;
int[]ary;
//为数组引用在堆内存中分配实际的内存空间
//类似于C中的p=(int*)malloc(10*sizeof(int));ary=new
int[10];
//使用循环为数组元素赋值
for(inti=0;i<ary.length;i++){ary[i]=i;}
//使用循环将数组元素逐个输出到控制台
for(inti=0;i<ary.length;i++){System.out.println(ary[i]);}}}声明数组示例publicclassArrayDemo{数组之间赋值在C语言中,不可以将数组直接赋值给另一个数组;在Java中,语法上允许这样做,但实际得到的效果是两个数组引用指向同一块内存。
int[]ary1={2,4,6,8,10};
int[]ary2; ary2=ary1;//允许这样赋值108642堆栈ary1ary2数组之间赋值在C语言中,不可以将数组直接赋值给另一个数组;1数组赋值示例public
classArrayDemo{
public
static
voidmain(String[]args){
int[]ary1={2,4,6,8,10};//声明并初始化数组1
int[]ary2;//声明数组2ary2=ary1;//将数组1赋值给数组2
ary2[3]=1024;//通过数组2修改其中一个元素的值
//打印出数组1中的元素
System.out.println("数组1中的元素:");
for(inti=0;i<ary1.length;i++){System.out.println(ary1[i]);}
//打印出数组2中的元素
System.out.println("数组2中的元素:");
for(inti=0;i<ary2.length;i++){System.out.println(ary2[i]);}}}数组赋值示例publicclassArrayDemo{关于数组长度在Java中,程序员可以不再关注数组的长度,数组自带的length属性将负责保管数组的长度;C语言不检查数组的边界,数组索引完全由程序员掌握;Java对数组下标越界情况强加约束;如果试图访问不在有效索引以内的元素,将会引发运行错误。关于数组长度在Java中,程序员可以不再关注数组的长度,数组命令行参数在命令行使用java命令执行程序时,可以将一些参数传递给main函数;main函数携带的String[](字符串数组)类型的形参args正是为了接收这些来自命令行的参数;可以从命令行传递任意多个字符串给main函数,其间使用空格隔开,也可以不传递任何参数;这些传递进来的多个字符串最后以字符串数组的形式,供main函数中加以使用。命令行参数在命令行使用java命令执行程序时,可以将一些参数命令行参数示例public
classArgumentDemo{
public
static
voidmain(String[]args){
intlen=args.length;//获得命令行参数的个数
if(len>0)//判断是否有命令行参数
{
//如果有,将其逐一打印到控制台
System.out.println(len+"个命令行参数,具体如下:");
for(inti=0;i<args.length;i++){System.out.println(args[i]);}}
else{
//否则给出提示信息
System.out.println("您没有传递任何命令行参数。");}}}命令行参数示例publicclassArgumentDe接收命令行参数输入public
classArgumentDemo{
public
static
voidmain(String[]args){
Scannersc=newScanner(System.in);
//定义一个引用变量
intnum=sc.nextInt();System.out.println(num);
}}从命令行接收输入:Scannersc=newSanner(System.in);接收命令行参数输入publicclassArgumentJDBC基础知识第三章JDBC基础知识第三章java.io包中包含了一系列对输入/输出进行操作的类File类用于访问文件系统,但只能访问文件(或目录)的属性,而不能进行读/写操作流是指一连串流动的数据信号,是以先进先出方式发送信息的通道,从流动方向上区分,流可以分为输入流和输出流,从格式上区分,可以分为字节流和字符流使用FileInputStream类和FileOutputStream类以字节流的方式读写文件回顾1java.io包中包含了一系列对输入/输出进行操作的类回顾1回顾2FileReader类和FileWriter类配合BufferedReader类和BufferedWriter类可以以字符流的方式对文件进行读/写操作要从控制台接受输入,需要将System.in对象进行包装,使用如下语句:
InputStreamReaderisr=newInputStreamReader(System.in); BufferedReaderbr=newBufferedReader(isr);绝大部分的IO操作都有可能抛出IOException回顾2FileReader类和FileWriter类配合Bu本章相关词汇本章相关词汇本章目标了解JDBC的概念和必要性了解JDBC驱动程序类型了解java.sql包理解JDBC程序的结构使用JDBC进行数据库编程本章目标了解JDBC的概念和必要性数据库访问技术简介当今企业级应用程序大部分采用了客户机/服务器(C/S)模式;客户端机器需要与服务器进行通讯,要操作数据库中的数据,执行SQL(StructuredQueryLanguage结构化查询语言)语句以及检索查询结果;在Java中实现这些活动的技术称作JDBC。数据库访问技术简介当今企业级应用程序大部分采用了客户机/服务JDBCJDBC(JavaDataBaseConnectivity)是由SunMicrosystem公司提供的API(ApplicationProgrammingInterface应用程序编程接口);它为Java应用程序提供了一系列的类,使其能够快速高效地访问数据库;这些功能是由一系列的类和对象来完成的,我们只需使用相关的对象,即可完成对数据库的操作。JDBCJDBC(JavaDataBaseConnectJDBC连接数据库类型使用JDBC连接数据库可以通过不同的驱动方式来实现,有4种驱动类型:JDBC-ODBC桥驱动纯Java驱动本地API部分Java驱动JDBC网络纯Java驱动不论采用哪种驱动方式,在程序中对数据库的操作方式基本相同,只是加载不同的驱动程序即可。JDBC连接数据库类型使用JDBC连接数据库可以通过不同的驱java.sql包
java.sql.DriverManager管理一组JDBC驱动程序的基本服务。java.sql.Statement用于执行静态SQL语句并返回它所生成结果的对象。java.sql.PreparedStatement表示预编译的SQL语句的对象。java.sql.ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。java.sql.SQLException提供关于数据库访问错误或其他错误信息的异常。java.sql包
java.sql.DriverManagODBCODBC(OpenDataBaseConnectivity)指开放式数据库连接,是由Microsoft公司提供的应用程序接口;它负责连接各种不同产商和类型的DBMS,然后为各种不同的编程语言提供查询、插入、修改和删除数据的功能;如同在各种不同的DBMS和各种不同的编程语言之间架设了一座通用的桥梁。ODBCODBC(OpenDataBaseConnectJDBC程序访问数据库步骤开始导入java.sql包加载并注册驱动程序创建Connection对象创建Statement对象执行SQL语句关闭ResultSet对象关闭Statement对象关闭Connection对象使用ResultSet对象建立数据源(ODBC)附加相应产商提供的驱动结束JDBC-ODBC桥方式纯Java驱动方式JDBC程序访问数据库步骤开始导入java.sql步骤详解1:建立数据源这里以JDBC-ODBC桥驱动方式为例,逐步详细地讲解在Java程序中如何操作数据库,而对于其它驱动方式,只需更换驱动程序即可,其余不变;首先建立ODBC数据源: 【开始】→【设置】→【控制面板】→【管理工具】→【数据源(ODBC)】新建数据源,名称可以任意,这里假设已经建立了一个名为myODBC的数据源,连接到SQLServer2005中的pubs数据库。步骤详解1:建立数据源这里以JDBC-ODBC桥驱动方式为例步骤详解2:加载驱动程序使用Class类的forName方法,将驱动程序类加载到JVM(Java虚拟机)中;对于使用JDBC-ODBC桥的驱动方式,应该加载: sun.jdbc.odbc.JdbcOdbcDriver类如:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");步骤详解2:加载驱动程序使用Class类的forName方法步骤详解3:获得连接对象成功加载驱动后,必须使用DriverManager类的静态方法getConnection来获得连接对象;对于使用JDBC-ODBC桥的连接方式,连接字符串的一般形式是:“jdbc:odbc:数据源名称”,如: Connectioncon= DriverManager.getConnection("jdbc:odbc:myODBC","sa","");步骤详解3:获得连接对象成功加载驱动后,必须使用Driver步骤详解释4:创建语句对象一旦成功连接到数据库,获得Connection对象后,必须通过Connection对象的createStatement方法来创建语句对象,才可以执行SQL语句;如:
Statementsta=con.createStatement();步骤详解释4:创建语句对象一旦成功连接到数据库,获得Conn步骤详解5:执行SQL语句使用语句对象来执行SQL语句,有两种情况:一种是执行DELETE、UPDATE和INSERT之类的数据库操作语句(DML),这样的语句没有数据结果返回,使用Statement对象的executeUpdate方法执行;如:
sta.executeUpdate("INSERTINTOFriendsVALUES('田七','重庆',456712,'2003-2-25',7500)");步骤详解5:执行SQL语句使用语句对象来执行SQL语句,有两步骤详解5:执行SQL语句(续)另一种是执行SELECT这样的数据查询语句(DQL),这样的语句将从数据库中获得所需的数据,使用Statement对象的executeQuery方法执行;如:
ResultSetrs= sta.executeQuery("SELECT*FROMFriend");步骤详解5:执行SQL语句(续)另一种是执行SELECT这样步骤详解6:关闭资源当对数据库的操作结束后,应当将所有已经被打开的资源关闭,否则将会造成资源泄漏;Connection对象、Statement对象和ResultSet对象都有执行关闭的close方法;函数原型都是:voidclose()throwsSQLException如:
rs.close();//关闭ResultSet对象 sta.close();//关闭Statement对象 con.close();//关闭Connection对象有可能抛出SQLException异常,必须捕捉;请注意关闭的顺序,最后打开的资源最先关闭,最先打开的资源最后关闭。步骤详解6:关闭资源当对数据库的操作结束后,应当将所有已经被数据库操作示例importjava.sql.*;//导入java.sql包public
classJDBCDemo{
public
static
voidmain(String[]args){StringstrCon="jdbc:odbc:myODBC";//连接字符串StringstrUser="sa";//数据库用户名StringstrPwd="";//口令System.out.println("正在连接数据库...");
try{//监控异常Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序Connectioncon;
//获得连接对象con=DriverManager.getConnection(strCon,strUser,strPwd);System.out.println("成功连接到数据库。");Statementsta=con.createStatement();//创建语句对象
//执行SQL语句StringstrSql="DELETEFROMFriendsWHERE[Name]='郑六'";
intcount=sta.executeUpdate(strSql);System.out.println("成功删除"+count+"行数据。");sta.close();con.close();//关闭所有已经打开的资源}catch(ClassNotFoundExceptioncnfe){cnfe.printStackTrace();}
catch(SQLExceptionsqle){sqle.printStackTrace();}}}数据库操作示例importjava.sql.*;/操作结果集使用Statement对象的executeQuery方法成功执行SELECT语句后,将返回一个包含有结果数据的ResultSet对象,要从该对象中获取数据,将使用到如下方法:操作结果集使用Statement对象的executeQuer操作结果集示例try{StringstrCon="jdbc:odbc:MyODBC";System.out.println("正在连接数据库...");Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon;con=DriverManager.getConnection(strCon,"sa","");System.out.println("成功连接到数据库。");Statementsta=con.createStatement();ResultSetrs=sta.executeQuery("SELECT*FROMFriends");System.out.println("查询到数据如下:");
while(rs.next()){//循环将结果集游标往下移动,到达末尾返回false
//根据字段名称获得各个字段的值System.out.print(rs.getString("Name")+"\t");//获得字符串System.out.print(rs.getString("Address")+"\t");//获得字符串System.out.print(rs.getInt("Telephone")+"\t");//获得整数System.out.print(rs.getDate("HireDate")+"\t");//获得日期型数据System.out.println(rs.getFloat("Salary"));//获得浮点型数据}rs.close();sta.close();con.close();}catch(ClassNotFoundExceptioncnfe){cnfe.printStackTrace();}
catch(SQLExceptionsqle){sqle.printStackTrace();}操作结果集示例try{纯Java驱动方式连接数据库使用JDBC-ODBC桥方式连接数据库,其性能完全取决于数据源(ODBC)的性能,并且无法脱离Microsoft的平台,这样将带来不便;大部分DBMS产商都为自己的产品开发了纯Java的驱动程序,我们只需要加载相应的驱动,就可以直接连接到数据库,而无需通过ODBC桥连接;鉴于DBMS产品太多,这里只针对当今比较流行的SQLServer2005和Oracle9i进行介绍。纯Java驱动方式连接数据库使用JDBC-ODBC桥方式连接下载驱动程序包要使用纯Java驱动,首先必须获得相应数据库的驱动程序包;将驱动程序包复制到本地磁盘,在命令提示行下,将完整路径设置到classpath环境变量中。下载驱动程序包要使用纯Java驱动,首先必须获得相应数据库的如用开发工具开发程序,还需在开发环境中设置路径如用开发工具开发程序,还需在开发环境中设置路径纯Java驱动连接SQLServer2005使用纯Java驱动连接到SQLServer2005数据库,加载驱动程序应改成如下语句: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");连接字符串应如下格式: "jdbc:sqlserver://服务器名或IP:1433;databaseName=数据库名"如:
Connectioncon=DriverManager.getConnection("jdbc:sqlserver://:1433;
databaseName=pubs","sa","");纯Java驱动连接SQLServer2005使用纯Java纯Java驱动连接Oracle使用纯Java驱动连接到Oracle9i数据库,加载驱动程序应改成如下语句:
Class.forName("oracle.jdbc.driver.OracleDriver");连接字符串应如下格式: "jdbc:oracle:thin:@服务名或IP:1521:数据库名"如:
Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@:1521:NEWER","scott","tiger");纯Java驱动连接Oracle使用纯Java驱动连接到Ora总结JDBC是使用Java程序操作数据库的技术;使用Class类的forName方法可以将驱动程序加载到Java解释器中;使用DriverManager类的getConnection方法获得Connection对象,从而建立与数据库的连接;使用Connection对象的createStatement方法创建语句对象,以便执行SQL语句;使用Statement对象的executeQuery或executeUpdate方法执行SQL语句,并使用ResultSet对象来操作结果数据;PreparedStatement接口允许创建预编译的SQL语句,并使得在后续阶段可以指定语句的参数。总结JDBC是使用Java程序操作数据库的技术;类和对象(I)第三章类和对象(I)第三章Java中的数据类型分为:原始数据类型和引用数据类型;在数据类型转换中,由低类型转至高类型,将会自动(隐式)类型转换,而从高类型转至低类型,则必须强制(显式)类型转换;Java中的数组是引用数据类型,必须由new关键字在堆中分配内存;Java虚拟机的垃圾回收机制将自动释放不再使用的内存;使用命令行参数接收来自用户的输入。回顾Java中的数据类型分为:原始数据类型和引用数据类型;回顾本章相关词汇(蓝色为关键字)本章相关词汇(蓝色为关键字)本章目标了解什么是面向对象面向对象的基本概念类对象封装继承多态如何定义类,如何创建对象成员运算符访问控制权限:public和private本章目标了解什么是面向对象SP和OOP对比SP和OOP对比什么是面向对象?ObjectOriendtedProgramming对象以…为导向的程序设计面向对象就是使用对象进行程序设计,简写成OOP。什么是面向对象?ObjectOriendtedProgr面向对象的编程思想OOP旨在计算机程序中模拟现实世界中解决问题的方式在计算机程序中用代码和特有结构模拟现实世界中的实体每个实体都专注和实现于特定的功能和价值实体之间的交互构成解决问题的方式面向对象的编程思想OOP旨在计算机程序中模拟现实世界中解决问面向对象的三大特征OOP
封装
继承多态面向对象的三大特征OOP封装继承多姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单收银员对象顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品顾客对象状态行为现实世界中的实体是实际存在的某种物体,用OOP的术语就称为对象在Java中我们通过对象对现实世界中的实体进行一个模拟和映射对象是面向对象编程的核心部分,和现实世界一样,需要具有明确定义的状态和行为对象姓名:布兰尼收银员对象顾客顾客对象状态行为现实世界中的实体是对象的特征——属性属性——对象具有的各种特征每个对象的每个属性都拥有特定值例如:布兰尼和朱丽叶的体重不一样60kg
布兰尼属性35岁收银员布兰尼
对象的特征——属性属性——对象具有的各种特征60kg布兰对象的特征——方法方法——对象执行的操作打单
收银方法刷卡收银员布兰尼对象的特征——方法方法——对象执行的操作打单收银方法对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割对象同时具有属性和方法两项特性对象的属性和方法属性:
品牌:法拉利型号:F360Spider颜色:黄色价格:380万元方法:
发动停止加速属性:
颜色:白色方法:
叫跑吃对象的属性和方法属性:属性:教室里的对象颜色:黑色品牌:BENQ投影类型:白炽灯开关变亮变暗材制:木质支撑物品教室里的对象颜色:黑色类型:白炽灯材制:木质从对象抽象出“类”
汽车顾客从对象抽象出“类”汽车顾客类人们为了更好地认识世界,将现实生活中的事物(对象)划分成类;同一类中的事物总是具有一些共性;类以共同的特性和行为定义实体;类是具有相同属性和行为的一组对象的集合。类人们为了更好地认识世界,将现实生活中的事物(对象)划分成类类和对象的区别类是用来描述实体的“模板”或“原型”;对象是实际的实体,每一个对象都是类的一个具体实例;类用来定义对象所有的属性和方法,同一类的所有对象都拥有相同的特征和操作;可以将类理解成生产产品的模具,而对象则是根据此模具生产的一个个产品。类和对象的区别类是用来描述实体的“模板”或“原型”;类与结构最简单的理解方式:类结构体结构体变量对象CJava区别在于:结构体一般只有数据(属性)而没有函数(方法)。类与结构最简单的理解方式:类结构体结构体变量对象CJava区在Java中定义类/*定义学生类*/classStudent{Stringname;//姓名
intage;//年龄
floatweight;//体重
/*吃饭的方法*/
voiddining(){System.out.println("吃饱了...");weight++;}
/*走路的方法*/
voidwalk(){System.out.println("走累了...");weight--;}}成员变量成员函数在Java中定义类/*定义学生类*/成员变量成员函数在Java中实现类所有Java程序都以类class为组织单元关键字class定义自定义的数据类型class后面接类型名,遵从标识符规则,首字母必须大写且与java文件物理名字相同class单元使用{}定义边界,{}里面只允许定义属性和方法,不能执行程序流程任何的程序流程都应位某个方法中一般情况下,一个.java文件中只允许定义一个class,并且必须修饰为公开public在Java中实现类所有Java程序都以类class为组织单元创建对象的语法和数组相似,对象也是引用数据类型,只能使用new运算符从堆中分配内存;创建对象的一般语法:
类名引用名=new类名();使用已经定义好的类,创建该类对象的过程称为“实例化”。注意:这里要有括号创建对象的语法和数组相似,对象也是引用数据类型,只能使用ne成员运算符.在C语言中,必须要先声明结构体变量,才可以访问结构体中的成员;同样的,只有先实例化类的对象,才可以访问到类中的成员(属性和方法);使用成员运算符(.)来访问成员属性或成员方法;一般语法是:
对象名.成员名如:std.age=18;//为成员属性赋值 std.dining();//调用成员方法成员运算符.在C语言中,必须要先声明结构体变量,才可以访问结一个人类的对象姓名:张三体重:50kg……密码:******属性走路吃饭……方法可以公开无所谓不可以公开一个人类的对象姓名:张三体重:50kg……密码:******访问权限:public和privateC语言中结构体的成员可以从任何地方进行访问,这将给数据的安全留下极大的隐患;为了避免从类外部直接访问类成员而造成的数据损坏,Java对类成员的访问制定了约束;关键字public和private是访问修饰符,用来说明某个成员是否可以从类外部进行访问;public修饰的成员可以在任何地方进行访问,不受任何约束;private修饰的成员只能够被本类中的其它成员访问,而不能从类的外部进行访问。访问权限:public和privateC语言中结构体的成员可访问权限无法从类的外部访问私有成员;其它类的私有成员对于当前类也是隐藏的。可以从类外部访问类属性或方法私有属性或方法公有不可从类外部访问访问权限无法从类的外部访问私有成员;可以从类外部访问类属性或总结对象由状态(属性)和行为(方法)组成;类是具有相同属性和方法的对象的集合;必须先实例化类的对象,才可以访问到其中的成员;成员运算符用于访问对象的成员;封装可以隐藏对象实现的具体细节;成员可以定义为公有,也可以定义为私有;
总结对象由状态(属性)和行为(方法)组成;类和对象(II)第四章138类和对象(II)第四章138对象由属性(数据)和方法(函数)组成;类是具有相同属性和方法的对象的集合;封装可以隐藏对象实现的细节部分;对象是引用数据类型,使用new运算符创建对象实例,使用成员运算符访问对象中的成员;访问修饰符用来控制访问权限,可以有效地保证数据安全;回顾139对象由属性(数据)和方法(函数)组成;回顾139本章相关词汇(蓝色为关键字)140本章相关词汇(蓝色为关键字)140本章目标构造方法方法重载构造方法重载对象在内存中的存放形式141本章目标构造方法141对象初始化在上次课中,我们定义Student类的一个引用std,只能逐个地为数据成员赋值,如果想在对象实例化的同时就初始化成员属性,就使用到了构造方法;构造方法是特殊的成员方法,它与类同名,在对象实例化时由虚拟机自动调用;请注意:构造方法没有返回值类型,也不能有返回值。142对象初始化在上次课中,我们定义Student类的一个引用st构造方法示例/*定义ConstructorDemo类,对构造方法进行测试*/classConstructorDemo{
/*构造方法,方法名与类名完全一致无需指定返回值类型,也不能有返回值*/
publicConstructorDemo(){System.out.println("这是构造方法");}}/*Test类,用来容纳main方法一般将包含有main方法的类声明为public*/public
classTest{
/*main方法,程序入口*/
public
static
voidmain(String[]args){
/*实例化ConstructorDemo类的对象*/ConstructorDemocd=newConstructorDemo();}}143构造方法示例/*定义ConstructorDemo类,对构造构造方法正是由于在实例化对象的同时会自动调用构造方法,所以构造方法一般用来给数据成员分配资源或初始化数据成员;构造方法的一般形式:
访问权限类名(形参列表){方法体}因为是由虚拟机来调用构造方法,所以构造方法一般应定义成public。144构造方法正是由于在实例化对象的同时会自动调用构造方法,所以构为Student类添加构造方法classStudent{//定义学生类
privateStringname;//姓名,私有
private
intage;//年龄,私有
private
floatweight;//体重,私有
//构造方法,根据传递进来的参数,为数据成员赋值
publicStudent(Stringn,inta,floatw){
//分别为每个数据成员赋初始值name=n;age=a;weight=w;}
public
voidsetName(Stringn){……}//为姓名赋值的方法,公有,代码略
public
voidsetAge(inta){……}//为年龄赋值的方法,公有,代码略
public
voidsetWeight(floatw){……}//为体重赋值的方法,公有,代码略
public
voiddisplay(){……}//将所有信息打印出来的方法,公有,代码略
public
voiddining(){……}//吃饭的方法,公有,代码略
public
voidwalk(){……}//走路的方法,公有,代码略}public
classTest{
public
static
voidmain(String[]args){
//利用构造方法,为数据成员指定初始值Studentstd=newStudent("张三",18,55);std.display();//将信息打印出来}}145为Student类添加构造方法classStudent{构造方法(续)每个对象在生成时都必须执行构造方法,而且只能执行一次;如果构造方法调用失败,那么对象也无法创建;不可以显式地直接调用构造方法;在没有定义构造方法的情况下,类会自动产生一个无参数的默认构造方法,这个默认的构造方法什么都不做;一旦显式地定义了构造方法,默认构造方法自动消失。146构造方法(续)每个对象在生成时都必须执行构造方法,而且只能执回顾函数在Java中,函数无需C语言中的前向声明,只要直接定义即可;Java中,函数被称为方法;定义一个方法的一般形式:
[访问权限]返回值类型方法名称(形参列表){ 方法主体; }我们更关注的是方法原型,对于方法原型的三个主要组成部分应当明确区分:返回值类型方法名称形式参数方法原型147回顾函数在Java中,函数无需C语言中的前向声明,只要直接定在Java中定义方法/*Java中的方法示例代码片段*//*定义求平方值的方法*/public
intsquare(intx){
return(x*x);}返回值类型方法名称形式参数148在Java中定义方法/*Java中的方法示例返回值类型方法名案例/*编写求绝对值的方法来求整数的绝对值*//*AbsoluteValue类,其中包含求绝对值的方法Java中的任何方法都必须在类中定义*/public
classAbsoluteValue{
/*求绝对值的方法*/
public
intabs(intx){
return((x>=0)?x:-x);}
/*main方法,程序入口*/
public
static
voidmain(String[]args){
//必须先实例化类的对象,才可以调用到其中的成员方法AbsoluteValueobj=newA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市更新的绿色发展与生态城市
- 机器人体验券课程设计
- 本地植物标本课程设计
- 2024年企业间场地租赁合同
- 木门配套门施工方案
- 木方楼梯施工方案
- 2024年上海地区离婚协议书全新修订版
- 佳木斯大学《学前比较教育学》2021-2022学年第一学期期末试卷
- 派遣维保人员消防值班服务合同(2篇)
- 2024年企业合规审核服务合同
- 核医学主治医师考试:核医学专业知识真题模拟汇编(共569题)
- HCCDP 云迁移认证理论题库
- 医用内窥镜冷光源产品技术要求深圳迈瑞
- 第二章区段站布置图
- 建筑工程概预算知到章节答案智慧树2023年浙江广厦建设职业技术大学
- 直击本质:洞察事物底层逻辑的思考方法
- 2023年中国电建西北院校园招聘笔试参考题库附带答案详解
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 巴蜀文化智慧树知到答案章节测试2023年四川大学
- 收费站大棚拆除施工方案
- 2021年国开电大《现代教育原理》形考任务1答案2
评论
0/150
提交评论