《第绪论Java课程学习.pptx》由会员分享,可在线阅读,更多相关《第绪论Java课程学习.pptx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1第第 绪论绪论(xln)Java第一页,共43页。第第1章章 绪论绪论(xln)l l1.1 数据结构的基本概念l l1.2 算法(sun f)l l1.3 Java开发运行环境第1页/共42页第二页,共43页。目的目的(md)和要求和要求 目的:勾勒数据结构课程的轮廓。目的:勾勒数据结构课程的轮廓。内容:数据结构概念,算法设计内容:数据结构概念,算法设计(shj)(shj)与分析。与分析。要求:理解数据结构基本概念,理解抽象数据要求:理解数据结构基本概念,理解抽象数据 类型概念;熟悉算法设计类型概念;熟悉算法设计(shj)(shj)和分析方法。掌和分析方法。掌 握编辑、编译、运行握编
2、辑、编译、运行Java ApplicationJava Application程程 序的基本技能。序的基本技能。重点:数据的逻辑结构和存储结构概念。重点:数据的逻辑结构和存储结构概念。难点:抽象数据类型,算法分析。难点:抽象数据类型,算法分析。实验:简单算法设计实验:简单算法设计(shj)(shj),回顾,回顾Java+Java+语言的基语言的基本本 语法和面向对象基本概念。语法和面向对象基本概念。第2页/共42页第三页,共43页。1.1 数据结构数据结构(sh j ji u)的基的基本概念本概念1.1.1 1.1.1 为什么要学习为什么要学习(xux)(xux)数据结构数据结构1.1.2 1
3、.1.2 什么是数据结构什么是数据结构1.1.3 1.1.3 数据类型与抽象数据类型数据类型与抽象数据类型 第3页/共42页第四页,共43页。1.1.1 为什么要学习为什么要学习(xux)数据结构数据结构l l软件设计是计算机学科各个领域的核心。软件设计时要考虑的首要问题是数据的表示、组织和处理(chl)方法。数据结构设计和算法设计是软件系统设计的核心。l l“数据结构十算法=程序”。第4页/共42页第五页,共43页。1.1.2 什么什么(shn me)是数据结构是数据结构n n数据(data)、数据元素(yun s)(data element)、数据项(data item)。n n数据结构(
4、data structure)指数据元素(yun s)之间存在的关系。第5页/共42页第六页,共43页。1.数据数据(shj)的逻辑的逻辑结构结构(1 1)线性结构:数据元素)线性结构:数据元素(yun s)(yun s)只有一个前驱数据元素只有一个前驱数据元素(yun s)(yun s)和一和一个后继数据元素个后继数据元素(yun s)(yun s)。(2 2)树结构:每个数据元素)树结构:每个数据元素(yun s)(yun s)只有一个前驱数据元素只有一个前驱数据元素(yun s)(yun s),可有零个或若干个后继数据元素可有零个或若干个后继数据元素(yun s)(yun s)。(3 3
5、)图结构:每个数据元素)图结构:每个数据元素(yun s)(yun s)可有零个或若干个前驱数据元素可有零个或若干个前驱数据元素(yun s)(yun s),零个或若干个后继数据元素,零个或若干个后继数据元素(yun s)(yun s)。第6页/共42页第七页,共43页。(1)线性结构)线性结构(jigu)学学 号号姓姓 名名年年 龄龄2002000120020001王红王红18182002000220020002张明张明19192002000320020003吴宁吴宁18182002000420020004秦风秦风1717表表1-1 学生学生(xu sheng)信息表信息表 第7页/共42页
6、第八页,共43页。(2)树结构树结构 第8页/共42页第九页,共43页。(3)图结构)图结构(jigu)图图1-31-3南京飞往昆明南京飞往昆明(kn mn(kn mn)的航班路的航班路线图线图 第9页/共42页第十页,共43页。2.数据的存储数据的存储(cn ch)结构结构(1 1)顺序存储结构)顺序存储结构(jigu)(jigu)(2 2)链式存储结构)链式存储结构(jigu)(jigu)第10页/共42页第十一页,共43页。3.数据数据(shj)操作操作n n初始化。初始化。n n判断是否空状态。判断是否空状态。n n求长度:统计元素个数。求长度:统计元素个数。n n包含:判断是否包含指
7、定元素。包含:判断是否包含指定元素。n n遍历:按某种次序访问所有元素,每个元素只遍历:按某种次序访问所有元素,每个元素只被访问一次。被访问一次。n n取值:获取取值:获取(huq(huq)指定元素值。指定元素值。n n置值:设置指定元素值。置值:设置指定元素值。n n插入:增加指定元素。插入:增加指定元素。n n删除:移去指定元素。删除:移去指定元素。第11页/共42页第十二页,共43页。1.1.3 数据类型与抽象数据类型数据类型与抽象数据类型数据类型与抽象数据类型数据类型与抽象数据类型 n n数据类型(data type)是指一个(y)类型和定义在这个类型上的操作集合。n n抽象数据类型(
8、Abstract Data Type,ADT)是指一个(y)逻辑概念上的类型和这个类型上的操作集合。第12页/共42页第十三页,共43页。复数复数(fsh)抽象数据类型抽象数据类型 ADT Complex double real,imag;/实部和虚部 Complex(real,imag);Complex add(Complex c);/加法(jif)Complex sub(Complex c);/减法;第13页/共42页第十四页,共43页。ADT Set ADT Set 数据:集合中有数据:集合中有n n(n0n0)个数据元素,元素类型为)个数据元素,元素类型为T T 操作:操作:boole
9、an isEmpty();/boolean isEmpty();/判断集合是否为空判断集合是否为空 int size();/int size();/返回集合的元素个数返回集合的元素个数 boolean contains(T x);/boolean contains(T x);/判断集合是否包含元素判断集合是否包含元素x x boolean add(T x);/boolean add(T x);/增加元素增加元素x x boolean remove(T x);/boolean remove(T x);/删除首次出现的元素删除首次出现的元素x x void clear();/void clear(
10、);/删除集合所有元素删除集合所有元素 void print();/void print();/输出输出(shch)(shch)集合中所有元素集合中所有元素 boolean equals(Set s);/boolean equals(Set s);/比较集合是否相等比较集合是否相等 boolean containsAll(Set s);boolean containsAll(Set s);/判断是否包含判断是否包含s s中的所有元素,中的所有元素,s s是否子集是否子集 boolean addAll(Set s);/boolean addAll(Set s);/集合并集合并 boolean r
11、emoveAll(Set s);/boolean removeAll(Set s);/集合差集合差 boolean retainAll(Set s);boolean retainAll(Set s);/仅保留那些也包含在集合仅保留那些也包含在集合s s中的元素中的元素 第14页/共42页第十五页,共43页。1.1.6 用用Java语言描述语言描述(mio sh)数据数据结构结构public interface SSetpublic interface SSet /集合接口,集合接口,T T是泛型参数,指定元素类型是泛型参数,指定元素类型 boolean isEmpty();/boolean i
12、sEmpty();/判断判断(pndun)(pndun)集合是否为空集合是否为空 int size();/int size();/返回集合的元素个数返回集合的元素个数 String toString();/String toString();/返回集合元素的描述字符串返回集合元素的描述字符串 T search(T key);/T search(T key);/查找,返回关键字为查找,返回关键字为keykey元素元素 boolean contain(T x);/boolean contain(T x);/判断判断(pndun)(pndun)集合是否包含元素集合是否包含元素x x void add
13、(T x);/void add(T x);/增加元素增加元素x x void remove(T x);/void remove(T x);/删除首次出现的元素删除首次出现的元素x x void removeAll();/void removeAll();/删除集合所有元素删除集合所有元素 第15页/共42页第十六页,共43页。1.2 算法算法(sun f)1.2.1 1.2.1 什么是算法什么是算法1.2.2 1.2.2 算法分析算法分析(fnx)(fnx)1.2.3 1.2.3 算法设计算法设计第16页/共42页第十七页,共43页。1.2.1 什么什么(shn me)是算法是算法n n算法(
14、sun f)定义n n有穷性n n确定性n n输入n n输出n n可行性2.算法设计目标算法设计目标3.正确性正确性4.可读性可读性5.健壮性健壮性6.高时间效率高时间效率(xio l)7.高空间效率高空间效率(xio l)第17页/共42页第十八页,共43页。3.算法算法(sun f)描述描述元素元素 search(search(关键字关键字 key)key)e=e=数据序列数据序列(xli)(xli)的第一个元素的第一个元素;while(while(数据序列数据序列(xli)(xli)未结束未结束&e&e的关键字不是的关键字不是key)key)e=e=数据序列数据序列(xli)(xli)的
15、下一个元素的下一个元素;返回查找到的元素或查找不成功标记返回查找到的元素或查找不成功标记;第18页/共42页第十九页,共43页。4.算法算法(sun f)与数据与数据结构结构图图1-6 1-6 线性表插入线性表插入(ch r)(ch r)操作操作 第19页/共42页第二十页,共43页。1.2.2 算法算法(sun f)分析分析n n度量(dling)算法的时间效率n n算法的时间效率指算法的执行时间随问题规模的增长而增长的趋势,通常采用时间复杂度来度量(dling)算法的时间效率。n nT(n)=O(f(n)n n度量(dling)算法的空间效率n n空间复杂度指算法在执行时为解决问题所需要的
16、额外内存空间,不包括输入数据所占用的存储空间。n nS(n)=O(f(n)第20页/共42页第二十一页,共43页。表表1-2 时间时间(shjin)复杂度随复杂度随n变化情况的比较变化情况的比较时间复杂度时间复杂度n=8(23)n=10n=100n=1000O(1)1111O(log2n)33.3226.6449.966O(n)8101001000O(nlog2n)2433.22664.49966O(n2)6410010000106第21页/共42页第二十二页,共43页。n n一个简单语句的时间一个简单语句的时间(shjin)(shjin)复杂度为复杂度为O(1)O(1)。n nint cou
17、nt=0;int count=0;n n一个循环的时间一个循环的时间(shjin)(shjin)复杂度为复杂度为O(n)O(n)。n nint n=8,count=0;int n=8,count=0;n nfor(int i=1;i=n;i+)for(int i=1;i=n;i+)n n count+;count+;n n时间时间(shjin)(shjin)复杂度为复杂度为O(log2 n)O(log2 n)的循环语句。的循环语句。n nint n=8,count=0;int n=8,count=0;n nfor(int i=1;i=n;i*=2)for(int i=1;i=n;i*=2)n
18、n count+;count+;n n时间时间(shjin)(shjin)复杂度为复杂度为O(n2)O(n2)的二重循环。的二重循环。n nint n=8,count=0;int n=8,count=0;n nfor(int i=1;i=n;i+)for(int i=1;i=n;i+)n n for(int j=1;j=n;j+)for(int j=1;j=n;j+)n n count+;count+;【例【例1.1】算法时间算法时间(shjin)复杂度分复杂度分析。析。第22页/共42页第二十三页,共43页。【例【例【例【例1.11.1】算法算法算法算法(sun f(sun f)时间复杂度分
19、析。时间复杂度分析。时间复杂度分析。时间复杂度分析。5.5.时间复杂度为时间复杂度为O(nlog2n)O(nlog2n)的二重的二重(r zhn(r zhn)循环。循环。6.6.int n=8,count=0;int n=8,count=0;7.7.for(int i=1;i=n;i*=2)for(int i=1;i=n;i*=2)8.8.for(int j=1;j=n;j+)for(int j=1;j=n;j+)9.9.count+;count+;10.10.循环次数为循环次数为 。时间复杂度为。时间复杂度为O(nlog2n)O(nlog2n)。11.11.时间复杂度为时间复杂度为O(n)O
20、(n)的二重的二重(r zhn(r zhn)循环。循环。12.12.int n=8,count=0;int n=8,count=0;13.13.for(int i=1;i=n;i*=2)for(int i=1;i=n;i*=2)14.14.for(int j=1;j=i;j+)for(int j=1;j=i;j+)15.15.count+;count+;16.16.总的循环次数为总的循环次数为 。时间复杂度为。时间复杂度为O(n)O(n)。第23页/共42页第二十四页,共43页。1.2.3 算法算法(sun f)设计设计【例【例1.21.2】求两个整数的最大公约数。】求两个整数的最大公约数。说
21、明说明(shumng)(shumng)算法的必要性。算法的必要性。质因数分解法。已知质因数分解法。已知则则 更相减损术。更相减损术。(91,49)=(42,49)=(42,7)=7(91,49)=(42,49)=(42,7)=7 欧几里德(欧几里德(EuclidEuclid)的)的辗转相除法。辗转相除法。第24页/共42页第二十五页,共43页。【例【例1.3】数组的顺序】数组的顺序(shnx)查找算法。查找算法。n n基本数据类型数组的顺序查找算法实现基本数据类型数组的顺序查找算法实现n n对象数组的顺序查找算法实现对象数组的顺序查找算法实现 n npublic class Object pu
22、blic class Object n n n n /比较当前比较当前(dngqin)(dngqin)对象与对象与objobj是否相等是否相等n n public boolean equals(Object obj)public boolean equals(Object obj)n n return(this=obj);return(this=obj);n n /若两个对象引用同一个实例,返回若两个对象引用同一个实例,返回truetruen n n n 第25页/共42页第二十六页,共43页。public final class Integer extends Number implemen
23、ts public final class Integer extends Number implements ComparableComparable private final int value;private final int value;public boolean equals(Object obj)public boolean equals(Object obj)/覆盖覆盖ObjectObject类中方法类中方法 if(obj instanceof Integer)if(obj instanceof Integer)return value=(Integer)obj).intV
24、alue();return value=(Integer)obj).intValue();/比较两个比较两个(li(li n n )Integer)Integer对象的值对象的值 return false;return false;第26页/共42页第二十七页,共43页。理解数组的动态特性理解数组的动态特性(txng)(txng)和引和引用模型用模型 图图1-7 1-7 一维数组的引用一维数组的引用(y(y nyng)nyng)模型模型 第27页/共42页第二十八页,共43页。public static void swap(Object value,int i,int j)/public st
25、atic void swap(Object value,int i,int j)/交换下标交换下标为为i i、j j的两个数组元素的两个数组元素 if(i!=j)/if(i!=j)/若若i i、j j超出超出0 0value.length-1value.length-1范围,将抛出范围,将抛出(po(po ch)ch)数组下标越界异常数组下标越界异常 Object temp=valuej;Object temp=valuej;valuej=valuei;valuej=valuei;valuei=temp;valuei=temp;第28页/共42页第二十九页,共43页。public static
26、 int concat(int x,int y)public static int concat(int x,int y)/合并数组合并数组x x和和y y中的元素中的元素(yun s)(yun s),返回新创建的数组,返回新创建的数组 int i,temp=new intx.length+y.length;int i,temp=new intx.length+y.length;for(i=0;ix.length;i+)for(i=0;ix.length;i+)tempi=xi;tempi=xi;for(int j=0;jy.length;j+)for(int j=0;jy.length;j+
27、)tempi+j=yj;tempi+j=yj;return temp;return temp;第29页/共42页第三十页,共43页。理解理解(lji)运行时多态性运行时多态性 Object obj=new Integer(123);Object obj=new Integer(123);/父类对象父类对象objobj引用引用(y(y nyng)nyng)子类子类IntegerInteger实例实例System.out.println(obj.toString();/System.out.println(obj.toString();/运行时多态性,执行子运行时多态性,执行子类类IntegerI
28、nteger的的toString()toString()方法方法obj=new String(123);obj=new String(123);System.out.println(obj.toString();System.out.println(obj.toString();public static void print(Object value)public static void print(Object value)public static int indexOf(Object value,Object key)public static int indexOf(Object v
29、alue,Object key)第30页/共42页第三十一页,共43页。【例【例1.4】排序】排序(pi x)数组的顺序查找算法。数组的顺序查找算法。对基本数据类型的排序数组进行顺序查找对基本数据类型的排序数组进行顺序查找JavaJava定定义义、=、=关关系系运运算算符符比比较较两两个个基基本本数数据据类类型型数数据值的大小。据值的大小。对引用数据类型的排序数组进行顺序查找对引用数据类型的排序数组进行顺序查找对象用对象用ComparableComparable接口中的接口中的compareTo()compareTo()方法比较大小。方法比较大小。public interface Compar
30、able/public interface Comparable/可比较接口可比较接口 int compareTo(T obj)/int compareTo(T obj)/约定约定(yudng)(yudng)比较对象大小的规则比较对象大小的规则 第31页/共42页第三十二页,共43页。public final class Integer extends Number implements public final class Integer extends Number implements Comparable Comparable public int compareTo(Integer
31、iobj)/public int compareTo(Integer iobj)/比较两比较两个对象值大小个对象值大小(dxi(dxi o)o),返回,返回-1-1、0 0或或1 1 return(this.value iobj.value?-1:(this.value=return(this.value iobj.value?-1:(this.value=iobj.value?0:1);iobj.value?0:1);第32页/共42页第三十三页,共43页。public final class String extends Objectpublic final class String ex
32、tends Object implements Serializable,Comparable,CharSequence implements Serializable,Comparable,CharSequence public int compareTo(String s)public int compareTo(String s)/比较字符串比较字符串的大小的大小(dxi(dxi o)o),实现,实现ComparableComparable接口接口 public int compareToIgnoreCase(String s)public int compareToIgnoreCase
33、(String s)/比较字符串比较字符串的大小的大小(dxi(dxi o)o),忽略字母大小,忽略字母大小(dxi(dxi o)o)写写 第33页/共42页第三十四页,共43页。例例1.5 判断判断(pndun)给定字符串是否给定字符串是否为为Java关键字。关键字。第34页/共42页第三十五页,共43页。例例1.6 排序排序(pi x)算法及其必要算法及其必要性。性。n n排序(pi x)算法的必要性n n直接插入排序(pi x)n n直接选择排序(pi x)第35页/共42页第三十六页,共43页。1.3.1 JDK1.3.2 MyEclipse要求:掌握编辑、编译、运行Java Appl
34、ication程序的基本技能。重点:编辑、编译、运行Java程序。难点:包,MyEclipse的项目、工作(gngzu)区,程序调试技术。1.3 Java开发开发(kif)运行环境运行环境第36页/共42页第三十七页,共43页。1.3.1 JDKn n安装JDKn n设置环境变量n n在Windows XP中设置环境变量n n设置环境变量的批命令n n编译和运行Java程序(chngx)n n执行批命令设置环境变量n n编译n n运行Application应用程序(chngx)n n命令行参数第37页/共42页第三十八页,共43页。4.包包(1 1)包的概念包的概念(ginin)(ginin)
35、(2 2)Java API Java API的常用包的常用包(3 3)引用包中的类引用包中的类(4 4)查看查看Java APIJava API(5 5)查看查看Java APIJava API源程序及包等级源程序及包等级(6 6)导入包导入包(7 7)声明类所在的包声明类所在的包 【例【例1.71.7】创建及使用创建及使用dataStructuredataStructure包。包。(8 8)默认包路径默认包路径(9 9)Java Java源程序结构源程序结构(1010)包可以压缩成包可以压缩成jarjar文件文件第38页/共42页第三十九页,共43页。1.3.2 MyEclipse1.MyE
36、clipse集成开发环境(1)安装(nzhung)MyEclipse并启动(2)界面(3)代码提示和源代码查看(4)项目和工作区第39页/共42页第四十页,共43页。2.创建创建Java项目项目(xingm)并运行并运行(1)新建Java项目(2)新建Java类(3)编辑、编译(biny)和运行(4)重构(5)切换工作区(6)访问其他项目中的类和添加JAR包(7)选择运行的类和设置命令行参数第40页/共42页第四十一页,共43页。3.程序调试技术程序调试技术(jsh)n n程序错误、发现时刻及错误处理原则 n n语法错、语义错、逻辑错 n n程序运行方式(fngsh)n n正常运行 n n单步运行 n n分段运行 3.调试过程调试过程 4.设置设置(shzh)断点断点5.调试界面调试界面6.单步或分段运行单步或分段运行 7.查看变量的当前值查看变量的当前值 第41页/共42页第四十二页,共43页。数据结构(sh j ji u)(Java版)(第3版)感谢您的观看感谢您的观看(gunkn)!第42页/共42页第四十三页,共43页。