收藏 分享(赏)

01javase核心编程(中软).pptx

上传人:无敌 文档编号:1369869 上传时间:2018-07-05 格式:PPTX 页数:712 大小:7.09MB
下载 相关 举报
01javase核心编程(中软).pptx_第1页
第1页 / 共712页
01javase核心编程(中软).pptx_第2页
第2页 / 共712页
01javase核心编程(中软).pptx_第3页
第3页 / 共712页
01javase核心编程(中软).pptx_第4页
第4页 / 共712页
01javase核心编程(中软).pptx_第5页
第5页 / 共712页
点击查看更多>>
资源描述

1、JavaSE核心编程,课程整体目标,掌握Java语言基础知识理解面向对象的编程思想运用Java编写命令行程序运用JDBC编写数据库访问程序运用Swing组件编写图形用户界面程序运用Swing组件和JDBC实现C/S结构的应用程序,本章目标,了解Java语言了解Java程序的类型理解Java虚拟机(JVM)掌握Java程序运行环境的配置编写第一个基于Java的程序,Java简介,掌握Java程序运行环境的配置编写第一个基于Java的程序,Java释义,“Java” 一词的本意是地名“爪哇”;爪哇岛位于南太平洋,是印度尼西亚的一部分。,爪哇岛,关于爪哇,全世界三大咖啡产地:巴西印尼爪哇岛中国海南岛

2、由此可见,Java的原意是指一个咖啡的产地,也可以说是一种咖啡的品牌。,Java语言简介,Java是一种程序设计语言,由Sun Microsystem公司于1995年推出;早在1991年,Sun公司的James Gosling等人开始开发名为Oak的程序设计语言,希望用来控制嵌入在有线电视机顶盒和PDA等设备中的微处理器;1994年,Oak语言正式更名为Java;Java语言凭借其独有的安全性、可移植性和平台无关性,迅速走红。,Java与Internet,Internet使Java成为网络上最流行的编程语言;同时,Java对Internet的影响也意义深远;在Java出现以前,几乎没有工具可以

3、在Internet上执行动态交互程序;使用Java语言编写的Applet程序可以对用户的输入和操作作出响应。,Java程序的类型-Applet,Applet是用Java编写,在Internet上运行的程序,可以在任何客户端系统上下载,在浏览器中运行,Java程序的类型-Application,Application是指在计算机操作系统支持下运行的程序,它既可以基于图形界面,又可以基于控制台,Java的平台无关性,Java是一种既面向对象又可以跨平台的语言,即:编写一次,随处运行;Java不仅适用于单机应用程序和基于网络的程序,也可用于创建消费类设备的附件程序,如移动电话、掌上设备等。,Java

4、虚拟机,Java虚拟机(Java Virtual Machine)是可运行Java字节码的虚拟计算机系统;使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上;它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。,用户USER,字节码程序,JVM (Java 虚拟机),操作系统,硬 件,Java虚拟机的运行过程,Java开发工具包,开发和运行Java程序,必须依赖和使用由Sun公司提供的Java开发工具包(Java Development Kit),Java Platform 2,JDK(Java开发工具包)从1.3版本以后,Sun公司将其正式更名为J

5、ava Platform 2;为适应不同的用途,又将其细分为三个版本:J2SE(Standard Edition):标准版,适用于普通应用程序的开发;J2EE(Enterprise Edition):企业版,适用于大型企业级应用程序的开发;J2ME(Micro Edition):微型版,适用于移动设备或嵌入式设备的程序开发。,下载安装JDK,打开浏览器,在地址栏键入:http:/ Hello public static void main(String args) System.out.println(Hello world!); ,Java源程序,扩展名为.java的源文件,使用记事本进行编

6、辑,使用javac编译器编译源文件,接下来需要将源程序进行编译;进入命令提示行,切换到源文件所在的目录,执行javac命令,使用javac编译器编译源文件;javac命令的格式是:javac 完整的源文件名,切换到源文件所在的目录,切换到源文件所在的目录,切换到源文件所在的目录,class(字节码)文件,顺利通过编译后将生成一个扩展名为.class的字节码文件(类描述文件)。,通过编译后生成的扩展名为.class的字节码文件,扩展名为.java的源文件,使用java解释器运行字节码文件,进入命令提示行,在字节码文件所在的目录下,执行java命令,使用java解释器运行字节码文件java命令的格

7、式是:java 类名称这里只需要类名称,而不是带扩展名的文件名,执行java命令运行字节码文件,程序运行效果,分析程序3-1,关键字class用来定义一个类,Hello是类的名称;在Java程序中,所有的语句都必须放在某个类中;整个类及其所有成员都包含在一对花括号中(即和之间),它们标志着类定义块的开始和结束。定义类的一般语法:class 类名,分析程序3-2,程序必须从main函数开始执行;关键字public是访问修饰符,用来控制类成员的可见范围及作用域;关键字static允许在不创建类的实例的情况下,调用main函数;关键字void用来说明main函数是没有返回值的;args是字符串数组,

8、用来从命令行接收参数;main函数的一般形式如下:public static void main(String args),分析程序3-3,String是字符串类型的数组;在Java中,类名称一般首字母大写;使用System.out.println()将信息输出到控制台上,即打印出来。,Java API文档,Java API文档描述了Java的许多内置功能,以及提供各种类的帮助说明,它是程序员经常查阅的资料可登录Sun公司的官方网站免费下载,Java文件中的注释,与其它编程语言一样,也可以在Java文件添加注释,Java文件中的注释有三种:单行注释:以/开始,在行尾结束多行注释:以/*开始,以

9、*/结束,可以有多行文档注释:以/*开始,以*/结束,可以有多行可以使用javadoc命令,将文档注释从源代码中提取出来,生成HTML文件,形成类似于Java API文档的帮助说明文件。,使用javadoc命令生成API文档,javadoc命令的格式是:javadoc 完整的源文件名,执行javadoc命令提取文档注释的内容,生成的文档,Java语言的特点2-1,简单去掉了C和C+中许多复杂功能,如指针、运算符重载等,没有goto语句,没有struct和union等面向对象Java是完全面向对象的编程语言,比C+更彻底,纯度更高健壮性没有指针,避免对指针的误操作造成程序崩溃程序员分配的内存空间

10、,无需释放,由Java虚拟机的垃圾回收机制来统一完成此项工作,避免了内存泄漏,Java语言的特点2-2,安全性由于Java取消了指针运算,有效地提高了程序的安全性Java程序运行在Java虚拟机上,虚拟机可以有效地过滤掉恶意代码,防止程序员有意编写的病毒程序分布性Java程序可以跨平台,跨操作系统,完全支持网络应用程序的设计多线程Java程序使用一个称为“多线程”的进程同时处理多项任务,使用Eclipse来开发,总结,Java是面向对象的、跨平台的程序设计语言;Java程序是运行在Java虚拟机之上的;要下载安装JDK,才可以开发和运行Java程序;JDK提供一系列的工具,这些工具位于JDK安

11、装路径的bin目录下,常用的有:javac:编译java:运行javadoc:提取文档可以使用任何文本编辑器编写Java源程序;,作业,熟悉JDK目录,以及JDK环境变量使用记事本编写Hello World程序使用记事本编写九九乘法表使用记事本编写空心菱形,Java语言基础,Java是面向对象并且可以跨平台的编程语言Java程序是运行在JVM(Java虚拟机)之上的要运行和开发Java程序,必须下载和安装由Sun公司提供的JDK(Java开发工具包)配置环境变量:Path和classpath三个常用的JDK工具:javac、java和javadoc,本章相关词汇(蓝色为关键字),本章目标,Ja

12、va中的变量和数据类型Java中变量的作用域规则数据类型转换Java中的输出语句Java中的运算符和表达式,Java语言基础,Java中的变量和数据类型,变量,变量是内存中的一块存储区域,是存储数据的基本单元;声明变量的语法:数据类型 标识符 = 值;如:int num;float money = 123.45f;char ch1, ch2 = A;,数据类型,数据类型用来确定要存储在内存单元中的数据的类型;在Java中,数据类型被区分成两个种类:原始数据类型引用数据类型,原始数据类型,原始数据类型是最简单的数据形式,与C的基本数据类型很相似:,引用数据类型,在Java中,除了上述8种原始数据

13、类型的变量以外,其余的全都属于引用数据类型,其中包括:数组对象存储在引用类型变量中的值是该变量表示的值的地址;可以借用C语言中指针的概念来理解引用数据类型。,回顾C语言中的内存分配,C语言中内存分配的两种形式:栈内存:特点:和作用域同生命周期,自动申请,自动释放。申请方式:局部变量,形式参数。栈内存中的空间一般都有名称,通过变量名访问其存储的数据。堆内存(即动态内存分配):特点:手工申请,手工释放,生命周期由程序员决定。申请方式:由malloc函数或calloc函数申请,realloc函数进行调整,free函数负责释放。堆内存中的空间一般没有名称,只能通过指针访问。,Java中的内存分配,Ja

14、va中的原始数据类型与C语言中的基本数据类型一样,其变量都是在栈中分配空间;而除了8种原始数据类型以外,其它的任何数据都不可以在栈中分配,只能到堆中开辟空间,而在堆中分配的空间又只能通过指针访问;通过指针访问堆内存的方式,在Java中被称作引用数据类型;可以认为,Java中的引用就类似于C语言中的指针,只是对指针进行了一定程度上的包装,避免了因直接操作指针而造成的数据意外损坏,从而导致程序错误的情况。,标识符命名规则,变量、函数、数组、对象、类和接口等等都需要命名,这些名称统称为标识符;Java中对于标识符的命名规则作了如下限制:只能由英文字母、数字、下划线“_”和“$”符号组成;必须以英文字

15、母、“_”或“$”开头,即不能以数字开头;除“_”和“$”以外,不能包含其它任何特殊字符;不能与关键字冲突;严格区分大小写。,变量的作用域和生命周期,变量 的作用域指变量起作用的范围,说明变量在什么部分可以被访问;变量的生命周期是指变量在内存中存在的周期,即什么时候分配空间,什么时候销毁。,/*有1,2,3,4四个数字,能组成多少个不相同且无重复的三位数?*/public class ScopeVariable public static void main(String args) int count = 0; for (int i = 1; i = 4; i+) /在需要使用变量时声明 f

16、or (int j = 1; j = 4; j+) for (int k = 1; k 、参见示例: ShiftTest,短路与和短路或,Java提供了两个在其它计算机语言中没有的逻辑运算符,这就是逻辑与和逻辑或的短路版本;对于短路与(&),如果其左侧为false,则不再计算其右侧,整个表达式的结果为false,只有左侧为true时才计算右侧;对于短路或(|),如果其左侧为true,则不再计算其右侧,整个表达式的结果为true,只有左侧为false时,才计算右侧。,int a = 10;int b = 20;if (+a = 12 /*这里使用的是逻辑与,试分析最后的输出结果*/,int a

17、= 10;int b = 20;if (+a = 12 /*这里使用的是短路与,试分析最后的输出结果*/,11,21,11,20,短路与示例,赋值运算符,赋值运算符的运算顺序是从右至左的:,条件运算符? :,条件运算符是三元运算符;它的一般形式是:表达式1 ? 表达式2 : 表达式3根据表达式1的结果来判断执行表达式2还是表达式3,如果表达式1的结果为true,则执行表达式2,否则执行表达式3;条件运算符在某些情况下能够替代小型的ifelse语句。,运算符的优先级,很多情况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:,总结,Java中的变量和数据类型Java中变量的作用域规则数

18、据类型转换Java中的输出语句Java中的运算符和表达式,流程控制与数组,Java中的数组new关键字,控制流语句,一般情况下,程序是从上往下依次顺序执行的;但很多时候,我们需要改变程序执行的流程,这就使用到了控制流语句;控制流语句包括:判断语句循环语句跳转语句,判断语句,判断语句也称作条件语句或分支语句;判断语句主要用来控制程序在何种情况下执行某一部分;判断语句包括:if语句ifelse语句ifelse if语句switchcase语句,循环语句,循环语句也称作迭代语句;循环语句可用于重复执行相同的操作;循环语句包括:while语句dowhile语句for语句,跳转语句,跳转语句允许以非线性

19、的方式执行程序,可以将控制权转到程序的其它部分;跳转语句包括:break语句continue语句Java抛弃了C语言中的goto语句。,数组,数组用于将相同类型的数据存储在连续的存储单元中;可以通过指定数组的名称和长度来声明数组;一旦声明数组的大小,就不能再修改;数组元素通过数组名和索引来访问,索引从0开始;数组可以是一维,也可以是多维。,回顾C语言中的数组,在C语言中,从存储方式上讲,声明数组有两种情况;在栈内存中分配空间,如:int ary10; /声明有10个整型元素的数组在堆内存中分配空间,如: int *p = NULL; /声明整型指针/指针指向堆空间p = (int*)mallo

20、c(10 * sizeof(int);C语言允许有栈数组,也允许有堆数组。,new关键字,在Java中,不允许将数组分配在栈内存中,只能分配在堆内存中;Java中没有类似于malloc、calloc、realloc和free等函数,取而代之的是new关键字;new是Java中内置的操作符;new操作符用来从堆中分配指定类型的内存空间,并返回相应类型的引用,其作用类似于malloc函数。,声明数组示例,public class ArrayDemo public static void main(String args) /声明整型数组的引用,类似于C中的 int *p; int ary; /为数

21、组引用在堆内存中分配实际的内存空间 /类似于C中的 p = (int*)malloc(10 * sizeof(int); ary = new int10; /使用循环为数组元素赋值 for (int i = 0; i ary.length; i+) aryi = i; /使用循环将数组元素逐个输出到控制台 for (int i = 0; i ary.length; i+) System.out.println(aryi); ,Java中声明数组的几种方式,在Java中声明数组有如下方式:,/仅声明数组的引用,但没有分配内存空间float fAry;/声明数组的同时,根据指定的长度分配内存,但数

22、组中没有值char chAry = new char10;/声明数组并分配内存,同时将其初始化int ary1 = new int1, 2, 3, 4, 5;/与前一种方式相同,仅仅只是语法相对简略int ary2 = 1, 2, 3, 4, 5;,数组之间赋值,在C语言中,不可以将数组直接赋值给另一个数组;在Java中,语法上允许这样做,但实际得到的效果是两个数组引用指向同一块内存。int ary1 = 2, 4, 6, 8, 10;int ary2;ary2 = ary1; /允许这样赋值,数组赋值示例,public class ArrayDemo public static void m

23、ain(String args) int ary1 = 2, 4, 6, 8, 10; /声明并初始化数组1 int ary2; /声明数组2 ary2 = ary1; /将数组1赋值给数组2 ary23 = 1024; /通过数组2修改其中一个元素的值 /打印出数组1中的元素 System.out.println(数组1中的元素:); for (int i = 0; i ary1.length; i+) System.out.println(ary1i); /打印出数组2中的元素 System.out.println(数组2中的元素:); for (int i = 0; i 0) /判断是否

24、有命令行参数 /如果有,将其逐一打印到控制台 System.out.println(len + 个命令行参数,具体如下:); for (int i = 0; i args.length; i+) System.out.println(argsi); else /否则给出提示信息 System.out.println(您没有传递任何命令行参数。); ,总结,Java中数组是引用数据类型,只能存放在堆内存中;数组必须由new关键字为其分配内存;释放内存的工作由Java虚拟机的垃圾回收机制来完成;可以利用命令行参数接收来自用户的输入。,作业,利用命令行参数输入一个整数,并判断该数字是否为奇数,如果是

25、奇数,则用其作行数打印空心菱形PS:将字符串转换为数字的方法int num=Integer.parseInt(String number);利用命令行参数输入三个整数,并对三个数字进行降序排列。PS:将字符串转换为数字的方法int num=Integer.parseInt(String number);利用命令行参数输入多个参数,并赋值给一数组,同时判断该数组是否为回文数组PS:例如数组“123”,”222”,”333”,”222”,”123”就是回文数组,即元素倒置过后与原元素一样,逻辑趣味思考题,有两个桶,一个容量为5升,一个容量为3升,现在用桶子来乘水,请您用这两个桶准确的乘出4升水来。

26、有10堆鱼,每堆鱼10条,正常情况下每条鱼10斤,但是现在这10堆鱼中有1堆鱼全是每条9斤,现在给你一把秤(假设这把秤可以称很重很重的东西),请问您能通过一次称量就找出这堆缺斤少量的鱼吗?,回顾,Java中的数据类型分为:原始数据类型和引用数据类型;在数据类型转换中,由低类型转至高类型,将会自动(隐式)类型转换,而从高类型转至低类型,则必须强制(显式)类型转换;Java中的数组是引用数据类型,必须由new关键字在堆中分配内存;Java虚拟机的垃圾回收机制将自动释放不再使用的内存;使用命令行参数接收来自用户的输入。,相关词汇,类和对象I,了解什么是 面向对象面向对象的 基本概念类对象封装继承多态

27、如何定义 类,如何创建 对象成员运算符访问控制权限:public和private构造方法,类和对象I,了解什么是 面向对象面向对象的 基本概念类对象封装继承多态如何定义 类,如何创建 对象成员运算符访问控制权限:public和private构造方法,什么是面向对象?,Object Oriendted Programming,对象,以为导向的,程序设计,面向对象编程 就是使用对象进行程序设计,简写成OOP。,面向对象的编程语言,如今,面向对象的编程思想已经成为主流;面向对象的编程语言正大行其道,最具代表性的有:C+JavaC#连数据库也开始面向对象了,如Oracle。,面向对象的编程思想,OOP

28、,旨在计算机程序中模拟现实世界中的概念,在计算机程序中用相似的实体模拟现实世界中的实体,在OOP中,现实世界的所有事物全都被视为对象,设计和实现软件系统的方法,C语言的编程方式,C语言是结构化的编程语言(Structured Programming,简作SP);强调精巧的数据结构和优越的算法,关注程序的运行效率;不适合于大规模的程序开发;程序模块之间协调性差,程序的重用性、安全性、健壮性和可维护性都存在较大的缺陷。,SP和OOP对比,面向对象的三大原则,封 装,继 承,多 态,对象,对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为;对象其实就是“数据”和“函数”的封

29、装体,其中:数据表示自身的状态,也称作“属性”或“成员数据”;函数表示自身的功能,也称作“方法”或“成员函数”。,状态,行为,类,人们为了更好地认识世界,将现实生活中的事物(对象)划分成类;同一类中的事物总是具有一些共性;类以共同的特性和行为定义实体;类是具有相同属性和和行为的一组对象的集合。,属性,事物的特性在类中用变量表示;每个对象的每个属性都拥有其特定的值;属性名称由类的所有对象共享;对象或实体拥有的特征在类中表示时称为属性。,方法,事物的行为和动作在类中用函数表示;每个对象都有相同的动作和行为;对象执行的操作在类中表示为方法。,类和对象的区别,类是用来描述实体的“模板”或“原型”;对象

30、是实际的实体,每一个对象都是类的一个具体实例;类用来定义对象所有的属性和方法,同一类的所有对象都拥有相同的特征和操作;可以将类理解成生产产品的模具,而对象则是根据此模具生产的一个个产品。,类与结构,最简单的理解方式:,区别在于:结构体一般只有数据(属性)而没有函数(方法)。,封装,将某些东西包装在一起,然后以新的完整形式呈现出来;隐藏属性、方法或实现细节的处理方式称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题。,可以公开,无所谓,不可以公开,继承,继承就是重用现有的类来生成新类的一种特征;通俗地讲就是从现有的类(即父类或基类)创建新类(子类或派生类)的过程;现实生

31、活中,继承可以达到财产重用的目的,而在Java中,继承可以使代码重用。,多态,多态是指同一函数在不同的类中有不同的实现;多态的好处就是使类更灵活,更便于扩充。,抽象,把相同的或相似的对象归为一类的这个过程就是抽象,所以,抽象就是分析问题的方法;抽象的基本原则:只关心主要问题,而不关心次要问题;只关心主要矛盾,而不关心次要矛盾;只关心相同的东西,而不关心不同的东西;只关心问题是什么,能够完成什么,而不关心怎样去完成。抽象的过程其实就是面向对象编程的核心思想。,在Java中定义类,/*定义学生类*/class Student String name; /姓名 int age; /年龄 float

32、weight; /体重 /*吃饭的方法*/ void dining() System.out.println(吃饱了.); weight+; /*走路的方法*/ void walk() System.out.println(走累了.); weight-; ,定义类的语法,习惯上,类名的首字母大写,如:Student,在Java中创建对象,/*Test类,用来容纳main方法*/public class Test /*main方法,程序入口*/ public static void main(String args) Student std; /声明Student类型的引用 std = new

33、Student(); /创建Student类型的对象 std.name = 张三; /为姓名赋值 std.age = 18; /为年龄赋值 std.weight = 50; /为体重赋值 std.dining(); /调用成员方法 System.out.println(std.weight); std.walk(); System.out.println(std.weight); ,创建对象的语法,和数组相似,对象也是引用数据类型,只能使用new运算符从堆中分配内存;创建对象的一般语法:类名 引用名 = new 类名() ;使用已经定义好的类,创建该类对象的过程称为“实例化”。,注意:这里要有

34、括号,成员运算符.,在C语言中,必须要先声明结构体变量,才可以访问结构体中的成员;同样的,只有先实例化类的对象,才可以访问到类中的成员(属性和方法);使用成员运算符(.)来访问成员属性或成员方法;一般语法是:对象名.成员名如:std.age = 18; /为成员属性赋值 std.dining(); /调用成员方法,访问权限:public和private,C语言中结构体的成员可以从任何地方进行访问,这将给数据的安全留下极大的隐患;为了避免从类外部直接访问类成员而造成的数据损坏,Java对类成员的访问制定了约束;关键字public和private是访问修饰符,用来说明某个成员是否可以从类外部进行访

35、问;public修饰的成员可以在任何地方进行访问,不受任何约束;private修饰的成员只能够被本类中的其它成员访问,而不能从类的外部进行访问。,访问权限,无法从类的外部访问私有成员;其它类的私有成员对于当前类也是隐藏的。,访问权限示例,class Student private String name; /姓名,私有的,不可以从类外部直接访问 private int age; /年龄,私有的,不可以从类外部直接访问 private float weight; /体重,私有的,不可以从类外部直接访问 /吃饭的方法,公有的,可以从任何地方访问 public void dining() Syste

36、m.out.println(吃饱了.); weight+; /dining方法是类内部成员,可以直接访问本类私有成员 /走路的方法,公有的,可以从任何地方访问 public void walk() System.out.println(走累了.); weight-; /walk方法是类内部成员,可以直接访问本类私有成员 public class Test public static void main(String args) Student std = new Student(); /实例化一个Student对象 std.age = 18; /试图从类外部访问私有成员,将会报出一个错误 st

37、d.dining(); /允许访问公有成员 ,访问权限(续),加上访问修饰符有时候可能会给操作数据带来不便,但可以在很大程度上保证数据的安全;一般地,我们会将成员属性声明为private,而将成员方法声明为public,但这样做并不是绝对的;有时候,类外部可能要操作到某些私有数据成员,那么就可以增加一个公有的方法,再由这个方法来操作私有数据,避免因类外部的误操作而造成的数据损坏;因为main方法要由类外部的虚拟机来调用,所以main方法必须声明成public。,修改Student类,class Student /定义学生类 private String name; /姓名,私有 private

38、 int age; /年龄,私有 private float weight; /体重,私有 public void setName(String name) /为姓名赋值的方法,公有 this.name = name; public void setAge(int a) /为年龄赋值的方法,公有 age = a; public void setWeight(float w) /为体重赋值的方法,公有 weight = w; public void display() /将所有信息打印出来的方法,公有 System.out.println(姓名: + name + ,年龄: + age + ,体重: + weight); public void dining() /吃饭的方法,公有,代码略 public void walk() /走路的方法,公有,代码略 public class Test public static void main(String args) Student std = new Student(); /实例化学生类对象 std.setName(张三); /为姓名赋值 std.setAge(18); /为年龄赋值 std.setWeight(55); /为体重赋值 std.dining(); /调用吃饭的方法 std.display(); /将信息打印出来 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报