• 1. 《coreJava》
  • 2. 第一章 java概述 第二章 简单数据类型 第三章 运算符和表达式 第四章 控制语句 第五章面向对象技术基础 第六章 Java面向对象特性 第七章 集合 第八章 泛型和系统常用类的使用第九章 异常处理 第十章 输入输出处理 第十一章 线程 第十二章 网络通信 第十三章类的加载和反射 目录
  • 3. 对学习软件编程方法的一些理解 1:高效而愉快的学习 2:先建立一个整体的框架,然后细节 3:用的什么在学习什么 4:先know how,在know why 5:软件编程是一门“做中学”的学科,不是学会了所有再去开发软件 6:适当的囫囵吞枣 7:学习软件编程是在琢磨别人怎么做,而不是认为我应该怎么做
  • 4. 第一章 Java概述主要内容 Java语言的形成与发展 Java语言基本概念 Java技术的特点 Java开发工具 简单Java程序的编写 Java编程规范
  • 5. 1.1 Java语言的形成与发展Java来源 1991年,Sun Microsystem公司以James Gosling为带头人,启动了一个针对消费类电子产品的程序运行环境以及语言的开发任务,这个语言叫做Oak,但是没有取得成功。 随着Internet的普及,1995年Sun公司将Oak改造成面向网络的编程语言,正式命名为Java。 目前,Java不仅仅是一种语言,而是一种结合多种技术于一身的软件开发和运行平台(Platform)。第一章 Java概述
  • 6. 第一章 Java概述1.1 Java语言的形成与发展Java之父James Gosling James Gosling与清华大学王克宏、许斌等人在JavaOne大会上的合影
  • 7. Java各个版本的发布时间及其特点 1996年1月发布了Java1.0,为对外公布的第一个版本; 1997年2月发布了Java1.1,主要修改了运行效率和图形界面API; 1998年12月发布了Java1.2,由于与1.1变化巨大,Sun公司将其命名为Java2。1999年又将其分为三种应用版本:J2ME、J2SE和J2EE; 2000年5月发布了Java1.3,主要是扩展了Java1.2的各种API; 2002年2月发布了Java1.4,主要改善了运行性能; 2004年10月发布了Java5.0(即Java1.5,俗称Tiger),主要是增强了易用性。 目前,Java6.0(即Java1.6,俗称Mustang)已成为主流的Java版本。第一章 Java概述1.1 Java语言的形成与发展
  • 8. Java三种应用版本的使用情况: J2SE:由于跨平台的优势,许多桌面软件已经用java来开发,尤其是在图形图像处理、网络应用程序、多线程等方面比较突出。 J2EE:在企业计算(分布式计算)中大显身手,除了微软以外的主要大型电脑公司都有各自的J2EE产品:BEA的WebLogic、IBM的Websphere、Oracle的ApplicationServer等等。 J2ME:充分占领了消费类电子产品的市场,占世界市场份额95%的厂商已经签约采用J2ME技术,其中包括手机、数字电视机顶盒、冰箱、洗衣机、电饭锅、智能卡产品等等。第一章 Java概述1.1 Java语言的形成与发展
  • 9. Java认证考试 SCJP (Sun Certified Java2 Programmer):测验Java程序设计概念及能力,侧重于语法和函数库—JDK。 SCJD (Sun Certified Java2 Developer):测试用Java开发应用程序的能力,先完成一个程序的设计方案,再回答与此相关的一些问题,要求已经通过SCJP认证。 题目均为英文,并以电脑作答。第一章 Java概述1.1 Java语言的形成与发展
  • 10. 1.2 Java语言基本概念Java字节码和虚拟机 字节码(Byte Code):源程序编译后得到的中间代码 虚拟机(Java Virtual Machine , JVM):运行字节码程序的软件,即字节码程序的解释器 字节码和虚拟机是Java语言实现平台无关性的关键:针对不同软硬件平台,提供不同的JVM,所以同一个字节码程序不需要重新编译就能在不同的软硬件平台上运行。Java虚拟机操作系统硬件Java源程序Java字节码编译解释执行第一章 Java概述
  • 11. Java字节码和虚拟机 上述特点使Java程序可以不依赖于各种软硬件平台,达到“一次编写,到处运行(Write once, Run anywhere)”的目的。Java字节码Java 虚拟机Java 虚拟机Java 虚拟机Linux/Unix手机PC机小型机Java 虚拟机Windows1.2 Java语言基本概念第一章 Java概述
  • 12. Java程序运行机制以及执行过程 java两种核心机制 java虚拟机(java vitrual Machine) 垃圾回收机制 (Grabage collection)1.2 Java语言基本概念第一章 Java概述
  • 13. 类和Java类库 类(Class):基于面向对象编程概念,Java的任何程序(包括用户程序和系统程序)都以“类”为单位,类中可以包含数据(变量)以及处理这些数据的函数(方法)。 类库:Java开发平台所包含的、由各个机构、公司和团体编写的Java通用类的集合,也叫Java API ( Application Programming Interface , 应用编程接口 )。它们是实现复杂应用程序的基础。Java 1.5包含6000多个类。学习Java主要是学习面向对象编程方法和熟悉这些类库中的类(了解其中的方法和常量)。1.2 Java语言基本概念第一章 Java概述
  • 14. Java程序分类 Java 应用程序(Application):按标准应用程序的形式在JVM中运行的程序。其特点是:至少由一个类组成,至少有一个类中包含一个main()方法。 Java Applet(小应用程序):在WWW浏览器中运行的一种特殊Java程序,可以不包含main()方法。1.2 Java语言基本概念第一章 Java概述
  • 15. 1.3 java技术的特点简单性 精简的系统:不需要强大的系统要求,只要在该平台上实现了虚拟机,就可以运行Java程序 继承了C/C++的语法和面向对象特性,同时摒弃了其中的难于理解和容易引起错误的概念。 自动内存管理:内存的分配和回收都由Java自动实现,不需要编程者考虑。第一章 Java概述
  • 16. 1.3 java技术的特点鲁棒性(健壮性) 编译和执行时检查代码 通过限制避免错误的产生:没有指针操作,没有全局变量、结构、联合,没有GOTO语句 自动垃圾收集 产生错误时有特殊的错误处理机制:异常机制第一章 Java概述
  • 17. 其他特点 分布式计算:提供了大量的分布式计算有关的类,容易实现分布式运算 多线程:Java程序可以很方便地实现线程,以便同时执行多个任务(如多线程文件下载) 可移植性和体系结构中立:Java虚拟机和字节代码保证与体系结构中立,实现了字节码的可移植性 1.3 java技术的特点第一章 Java概述
  • 18. 《帮助文档 Java帮助文档是由Sun公司提供的、基于HTM格式的网页文件,可以从www.sun.com下载。 目前,Sun公司已经组织志愿者翻译了JDK1.5的帮助文档,并转换为单一的chm文档,以便学习者使用。1.4 Java开发工具第一章 Java概述
  • 19. JDK的安装、设置与使用 安装 配置path &classpath path:windows系统执行命令时要搜索的路径 classpath:java在编译和运行时候需要找的class路径classpath的设置: 设置到指定目录查找: set classpath=目录 如: set classpath=d:\testjava\com 设置从当前所在的目录查找(默认) set classpath=. 常用命令 Javac:编译源程序,如 C:\>javac HelloWorld.java 如果编译成功,会产生HelloWorld.class文件 Java:运行字节码程序,如 C:\>java HelloWorld1.4 Java开发工具第一章 Java概述
  • 20. java Application 初步 1.4 Java开发工具第一章 Java概述
  • 21. 开发工具 编辑器 记事本 UltraEdit EditPlus1.4 Java开发工具第一章 Java概述
  • 22. 开发工具 (集成开发环境工具): NetBeans:Sun公司提供的免费软件,可以在Windows环境下进行编辑、运行和调试。可从www.sun.com免费下载。 Ecplise:由IBM领导的开放源代码组织编写的免费开发工具,使用最为广泛。可从www.eclipse.org免费下载。 Jbuilder:由Borland公司开发的商业软件,功能最丰富。主要版本为Jbuilder9、JbuilderX、Jbuilder2005。 Visual J++和Visual J#.NET:微软公司的产品,由于微软公司技术的封闭性,几乎没有人长期使用该软件。1.4 Java开发工具第一章 Java概述
  • 23. 1.4 Java开发工具第一章 Java概述
  • 24. 1.4 Java开发工具第一章 Java概述
  • 25. 1.4 Java开发工具第一章 Java概述
  • 26. 1.4 Java开发工具第一章 Java概述
  • 27. 1.4 Java开发工具第一章 Java概述
  • 28. 1.5 简单Java程序的编写第一个Application:HelloWorld 编辑如下代码,保存为“HelloWorld.java”。public class HelloWorld{ public static void main(String args[ ]){ System.out.println(“Hello,World!”); } }第一章 Java概述
  • 29. 第一个Application:HelloWorld Java程序区分大小写(即大小写敏感); 如果class前加public,那么保存文件时必须用class后面的“类名”:HelloWorld作为文件名。 如果要直接运行该程序(有的程序并不需要直接运行),则必须包含一个main方法,并且其定义必须为public static void main(String args[ ])。 System.out.println(…)是显示括号内的内容(可以是字符串、整数、布尔变量或它们的连接,如“i=”+i)并换行。类似的方法还有System.out.print(…)。 Java语言中没有直接的输入字符串或整数的方法,该功能需要自己编写。 为了便于与其他人交流,编写程序时应遵守Java编码规范的相关内容。1.5 简单Java程序的编写第一章 Java概述
  • 30. 1.6 Java编程规范命名规范: 类名:一般为名词,首字母大写,每个单词的首字母大写, 如HelloWorld 方法名:小写字母开头,每个单词的首字母大写,如displayName 变量名:同方法名, 如length, studentCount 不要给类起一些与类库名称重复的名称,如:String、File、System 代码缩进: 每级代码块都应缩进3-5个空格 “}”单独一行,并和开始的语句对齐第一章 Java概述
  • 31. 第一个Application:HelloWorld 编译:在保存源文件的目录下输入如下命令,如果编译成功,会生成HelloWorld.class文件 Javac HelloWorld.java (*必须写扩展名,不区分大小写) 执行:编译成功后输入如下命令 Java HelloWorld (*第二部分区分大小写,不能写扩展名)1.5 简单Java程序的编写第一章 Java概述
  • 32. 第二章 简单数据类型主要内容 标识符和关键字 java基本数据数据类型 运算符 表达式和语句 分支 循环 方法 变量的作用域 递归
  • 33. 2.1 标识符、保留字标识符 标识符是指程序组成元素的名称,如变量名、方法(函数)名、类名等等。 以英文字母、下划线、$ 或Unicode字符集中的部分符号开始,后面可以跟英文字母、下划线、$、Unicode字符集中的部分符号和数字0—9。长度不限,大小写敏感,不能是Java保留字 Unicode:一种用两个字节表示一个字符的标准字符集。 合法的标识符例子:identifier User_Name _sys_val $change MyClass 我的数据 非法的标识符例子:2mail room# class 第二章 简单数据类型
  • 34. 2.1 标识符、保留字关键字第二章 简单数据类型
  • 35. 2.3 常量和变量的定义常量 定义格式: final 类型 常量名1[=值][,常量名2[=值]…]; 常量值的使用 布尔型:true 、false 字符类型:‘c’ ,‘\n’,‘\t’,‘\777’,‘\uxxxx’ 整数类型:123 -45 0123(八进制数)=83 0x123=291 123L(占用64位) 浮点类型:0.123(64位) 1.23423e3(64位) 1.23423e3f第二章 简单数据类型
  • 36. 2.1 标识符、保留字java变量 java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,申明格式为: type varName=value 例如 int i=100; double d1,d2,d3=0.135; float f=12.3f;Sring s="hello java" 第二章 简单数据类型
  • 37. 2.1 标识符、保留字程序的执行过程 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须先要申明(声明),然后对其赋值(填充内容),才能使用第二章 简单数据类型
  • 38. 2.1 标识符、保留字第二章 简单数据类型
  • 39. 2.1 标识符、保留字java变量的分类 局部变量:方法或者语句快定义的变量 成员变量:方法外部,类的内部定义的变量 注意:类外面(与类对应的大括号外面)不能有变量的声明 按所属的数据类型划分 基本数据类型变量 引用数据类型变量 第二章 简单数据类型
  • 40. 2.1 标识符、保留字java变量的分类 局部变量:方法或者语句快定义的变量 成员变量:方法外部,类的内部定义的变量 注意:类外面(与类对应的大括号外面)不能有变量的声明 按所属的数据类型划分 基本数据类型变量 引用数据类型变量 第二章 简单数据类型
  • 41. 2.1 标识符、保留字java变量的分类 方法体内部声明的变量(包括形参)称为局部变量 方法体内部是指以方法对应的大括号内部 在方法体外。类体内声明的变量称为成员变量 public void method(){ int i; int j=i+8 ; //编译出错,变量i还未被初始化 double d=3.1415; Person p; p=new Person(20,"小明"); }第二章 简单数据类型
  • 42. 2.2 数据类型数据类型简单类型复合类型(引用类型)浮点类型 float double布尔类型字符类型接口类数组整数类型 byte short int long数据类型分类 第二章 简单数据类型
  • 43. 2.1 标识符、保留字java基本数据类型 java 中定义了四类八种数据类型 逻辑性----boolean 文本型---char 整数类型--byte,short,int ,long 浮点数据类型--float ,double第二章 简单数据类型
  • 44. 简单数据类型主要参数(四类八种)名称 标识符 长度(位) 布尔型boolean1字节整型byte8(1个字节)短整型short16(2个字节)一般整型int32(4个字节)长整型long64单精度浮点型float32双精度浮点型double64字符型char162.2 数据类型第二章 简单数据类型
  • 45. 名称 表示范围布尔型true、false字节整型-128 ~ 127短整型-32768 ~ 32767一般整型-2.1X109 ~ 2.1X109长整型-9.2X1018 ~ 9.2X1018单精度浮点-3.4X1038 ~ 3.4X1038双精度浮点-1.7X10308 ~ 1.7X10308字符型\u0000 ~ \uffffC语言对应的类型C语言位数无short8int16long32无float16double32char82.2 数据类型简单数据类型其他参数第二章 简单数据类型
  • 46. 2.2 数据类型字符型char第二章 简单数据类型
  • 47. 2.2 数据类型常用字符与ASCII代码对照表第二章 简单数据类型
  • 48. 2.2 数据类型输出全部ASCII代码第二章 简单数据类型for(int i=0;i<255;i++){ System.out.println((char)i); }
  • 49. 2.2 数据类型char类型实例:输出所有Unicode字符第二章 简单数据类型class UnicodeTest{ public static void main(String args[]){ for(int i=0; i<65535; i++){ //为什么会是 65535? System.out.print( (char) i ); System.out.print(" "); if ( (i+1)%16 == 0 ) System.out.println(); } } }
  • 50. 2.2 数据类型练习:1:问题如何判断输入的一个字符串中含有 多少个中文字符?英文字符,还有数字。 请大家试着编写这样的程序 中文:19968:一 40869:龥 数字:0 -9 48 --57 单词:小写字母:97 --122 大写 65--90 String str="你好很适jjjjjjasdjalskd232392839289" 2:编写RandomStr.java 生成一个六位的随机验证码(为小写的英文字母)第二章 简单数据类型
  • 51. 2.2 数据类型boolean类型适合于逻辑运算,一般用于程序流程控制 boolean类型只允许取值true活false,不可以0或者非0的整数来代替true 和false,这点和c语言不同 举列: boolean flag; flag=true; if(flag){ //do something } 第二章 简单数据类型
  • 52. 2.4 数据类型转换自动类型转换 两种类型是兼容的,并且目的数据的类型范围比源数据类型的范围大时,能够自动转换 byte,short,char  int int  long long  float float double 注意byte short char 之间不会相互转换,他们三者在计算时首先转回int 容量大的数据类型转换为较小的时候,需要加上强制转换,但可能造成精度溢出使用时要格外注意 有多种类型的数据混合运算时,系统首先自动的将所有的数据 转换成最大的哪一种数据类型,然后在进行计算。 (TestConvert.java , TestConvert2.java)第二章 简单数据类型
  • 53. 2.4 数据类型转换自动类型转换 列子 int a=233 ; byte b=(int)a; System.out.println(b) ----->结果?第二章 简单数据类型
  • 54. 2.4 数据类型转换32位的int型233在强制转换为byte类型时候,需要截断前24位,只保留8位,所以最终导致精度丢失,最左边的一位1 是一个符号位,此处表示这个是一个负数,而负数在计算机里是以补码的形式存在的,因此需要换成源码第二章 简单数据类型
  • 55. 2.4 数据类型转换强制类型转换 高级数据类型转换为低级数据类型时,要求必须在程序中显式写出转换类型 例如 byte i=(byte)1234; int i=(int)1234L;第二章 简单数据类型
  • 56. 第三章 运算符和表达式主要内容 常用运算符 表达式
  • 57. 3.1 运算符Java运算符() 算术运算符:+ - * / % ++ -- 关系运算符:> < >= <= == != 逻辑运算符:! && || 位运算符:>> << >>> & | ^(异或) ~(取反) 赋值运算符:= += -= *= /= <<= >>= >>>= &= |= ^= %= 字符串连接运算符: + 条件运算符:?: 其他运算符:分量运算符. 下标运算符[] 实例运算符instanceof 内存分配运算符new 强制类型转换()第三章 运算符和表达式
  • 58. (本页无文本内容)
  • 59. (本页无文本内容)
  • 60. (本页无文本内容)
  • 61. (本页无文本内容)
  • 62. (本页无文本内容)
  • 63. 第四章 控制语句主要内容 控制语句分类 特殊的break和continue语句 特殊的for语句
  • 64. 分支语句if…else switch … case循环语句while(…){…} do{…}while(…) do while(…){…} for(…; …; …){…} for(… : …){…}转移语句break continue return异常处理语句try…catch…finally throw注释语句// /*…*/ /**…*/4.1 控制语句第四章 控制语句
  • 65. 一般的break语句 例4.1: for ( int i=0;i<5;i++){ System.out.print ("*"); for(int j=0;j<5;j++){ if (j==3) break ; else System.out.print("="); } } 结果: *===*===*===*===*===第四章 控制语句4.2 特殊控制语句
  • 66. 带标号的break语句 例4.2: L1:for ( int i=0;i<5;i++){ System.out.print ("*"); for(int j=0;j<5;j++){ if (j==3) break L1; // else System.out.print("="); } } 结果: *===第四章 控制语句4.2 特殊控制语句
  • 67. 带标号的continue语句 例4.3: L1:for ( int i=0;i<5;i++){ System.out.print ("*"); for(int j=0;j<5;j++){ if (j==3) continue L1; else System.out.print("="); } } 结果: *===*===*===*===*===第四章 控制语句4.2 特殊控制语句
  • 68. break的错误使用 例4.4: for(int i=0;i<10;i++){ System.out.print("*"); } for(int j=0;j<5;j++){ L1: if (j==3) break L1; else System.out.print("="); } 结果: 编译出错第四章 控制语句4.2 特殊控制语句
  • 69. for语句 例4.5(1) 一般的for语句 class ForTest{ public static void main(String args[ ]){ int data[ ]={1,2,3,4,5,6,7,8,9,10,11}; for (int i=0;i<10;i++){ System.out.print(data[i]+"\t"); } } } 结果: 1 2 3 4 5 6 7 8 9 10 11第四章 控制语句4.2 特殊控制语句
  • 70. for语句 例4.5(2) 改进的for语句(JDK1.5以上版本才支持) class ForTest{ public static void main(String args[ ]){ int data[ ]={1,2,3,4,5,6,7,8,9,10,11}; for (int i:data) System.out.print(i + "\t"); } } 结果: 1 2 3 4 5 6 7 8 9 10 11第四章 控制语句4.2 特殊控制语句
  • 71. for语句 例4.5(2) 改进的for语句(JDK1.5以上版本才支持) class ForTest{ public static void main(String args[ ]){ int data[ ]={1,2,3,4,5,6,7,8,9,10,11}; for (int i:data) System.out.print(i + "\t"); } } 结果: 1 2 3 4 5 6 7 8 9 10 11第四章 控制语句4.2 特殊控制语句
  • 72. 顺序结构: 任何编程语言中最常见的就是顺序结构,顺序结构结构就是程序从上到下一行一行的执行 如果在main方法多行代码之间没有任何控制流程,则程序总是从上到依次执行。这就意味着如果没有流程控制,java方法里的语句是一个顺序执行流,从上到下依次执行每条语句第四章 控制语句4.2 特殊控制语句
  • 73. 分支结构: java提供了两种常见的分支控制结构:if 和switch语句第四章 控制语句4.2 特殊控制语句
  • 74. 分支结构: java提供了两种常见的分支控制结构:if 和switch语句第四章 控制语句4.2 特殊控制语句
  • 75. if语句 if if ..else.. if ..else if.. if else if ..else if ..else 只有一句需要执行打的语句时可以省略{} TestIfDemo.java 从控制台获取输入的参数(年龄)。 然后判断该年龄阶段的孩子应该获得多少压岁钱。第四章 控制语句4.2 特殊控制语句
  • 76. if语句 if if ..else.. if ..else if.. if else if ..else if ..else 只有一句需要执行打的语句时可以省略{} TestIfDemo.java 从控制台获取输入的参数(年龄)。 然后判断该年龄阶段的孩子应该获得多少压岁钱。第四章 控制语句4.2 特殊控制语句
  • 77. case标签后 紧跟一个代码块,case标签做为这个代码快的标识 switch(expression){ case condition1: { statement(s) break; } case condition2: { statement(s) break; } ..... case conditionN: { statement(s) break; } defualt: { statement(s) } }第四章 控制语句
  • 78. 循环条件可以在满足循环的条件情况下,反复执行某一段代码,这段被执行的代码成为循环体,当反复执行这个循环体时,需要在适合的时候把循环条件设为假,从而退出循环,否则程序将一直执行下去,形成死循环。 循环语句可能包含如下四个部分 初始化语句(ini_statements):一条或者多条语句这些代码用于完成一些初始化工作,初始化语句在循环开始前执行 循环条件(test_exprssion):这是一个boolean表达式,这个表达式能决定是否能执行循环体。 循环体(body_statements):这个部分是循环的主体,如果循环条件允许则这个代码快将会一直执行 迭代语句(iteration_statments):这个部分在一次循环体执执行结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,是的循环在合适的时候结束第四章 循环结构
  • 79. for语句为如下形式: for(表达式1;表达式2;表达式3){语句..} 执行过程 首先计算表达式1,接着执行表达2,如表达式2的值=true,则执行语句,接着计算表达式3,再判断表达式2的值,一次重复下去,直到表达式2的值为false则结束循环第四章 for循环
  • 80. 第四章 for循环流程图
  • 81. 计算从1到100的和 public static void main(String[]args){ int sum=0; for(int i=1;i<=100;i++){ sum+=i; } System.out.println("总和为:"+sum); }
  • 82. 编程练习: 1:计算result=1!+2!+3!+.....+10!的总和 1*1 i=1 2*1*1 i=2 ----> 2*f 3*2*1*1 4*3*2*2*1 .... long f=1; long result=0; for(int i=1;i<=10;i++){ f=f*i; result=result+f; } 2:编写一个程序计算1+3+5+7+......+99的和 2+4+6+....+100 for(int i=2;i<=100;i+=2){ }
  • 83. (本页无文本内容)
  • 84. do while 循环与while循环的区别在于: while循环是先判断循环条件,如果为真才执行,否则终止循环。do while则先执行循环体,然后再判断循环条件如果条件为真,则执行下一次循环 与while不同的是do while循环的循环条件必须有一个分号,这表示循环结束
  • 85. 嵌套循环 如果把一个循环放在另一个循环体内,那么就可以构成嵌套循环,嵌套循环既可以是for循环嵌套,也可以是while循环嵌套,也可以是 while循环嵌套do while循环。 当程序遇到嵌套循环时候,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被当作外层的循环体来执行---只是要内层需要反复执行自己的循环体而已,当内层循环结束,且外层循环的循环体执行结束时候,则再次计算外层循环的循环条件。决定是否再次开始执行外层循环的循环体。 根据上面分析,假设外层循环的循环次数为n次,内层循环次数为m次数,那么内层循环体实际上需要执行n*m次 TestNestedLoopDemo.java
  • 86. 嵌套循环的运行流程
  • 87. 控制循环结构 使用break结束循环 当我们需要在某种条件出现时,强行终止循环时候 而不是等到循环条件为false时候,可以使用break来完成这个功能。 一旦在循环中遇到break,系统将完全结束该循环 TestBreak.java
  • 88. 控制循环结构 break语句不仅可以结束其所在的循环,还可以直接结束其外层循环,此时需要在break后面紧跟一个标签这个标签用于标识一个外层循环 注意: java中德标签就是一个紧跟着英文冒号(:)的标识符与其他语言不同的是,java中的标签只有放在循环语句之前才有作用。 public static void main(String[]args){ //外层循环 outer: for(int i=0;i<5;i++){ //内层循环 for(int j=0;j<3;j++){ System.out.println("i的值为:"+i+"j的值为:"+j); if(j==1){ break outer; } } } }
  • 89. 控制循环结构 continue:continue的功能和break有点类似区别是continue只是终止本次循环, 接着开始下一次循环,而break则是完全终止循环,可以理解为continue的作用是 略过当次循环中剩下的语句。从新开始新的循环 与break类似的,continue也可以紧跟一个标签,用于结束标签所标识的当次循环,从新开始下一次循环
  • 90. 练习: 1: 输出1--100内的前10个可以被3整除的数 2: 输出101--200内的所有质数(除了1和他本身之外不能被其他数整除)
  • 91. Test1 /** * 输出1--100内前10个可以被3整除的数 * @author wangshutao * */ public class Test1 { public static void main(String[] args) { int num=0; //统计数量 for(int i=1;i<=100;i++){ if(i%3==0){ System.out.print(i+" "); num++; } if(num==10){ break; } } } }
  • 92. Test2 public class Test2 { public static void main(String[] args) { for(int i=101;i<200;i++){ boolean flag=true; //定义一个标识 for(int j=2;j
  • 93. (本页无文本内容)
  • 94. /*** * 写一个方法 更具输入的日期打印出 该天的菜单 * 1: 星期一: 宫保鸡丁 * 2: 星期二: 地三鲜 * 3: 星期三: 红shao茄子 * 4: 星期四: 老坛酸菜面 * 5: 星期五: 酸辣粉 * 6: 周六 : 全聚德烤鸭 * 7: 周日 : 必胜客 * public static String getMeun(String name,Stirng date){ * String info=null; * } * (王树涛,星期一) * 例如:当输入星期一则打印出: * 你好 : 王树涛 ,你 星期一 的菜单为:宫保鸡丁 * 要求:从控制台输入名字 和 日期。必须要switch语法 */
  • 95. 递归: 一个方法体内部调用他自身,被称为方法的递归,方法递归包含了一种隐士的循环。他会重复执行某段代码,但这种重复执行无需循环控制。 当一个方法不断的调用他本身时候,必须在某个时刻方法的返回值是确定的,即不再调用它本身。否则这种递归就变成了无穷递归。类似与死循环,因此递归最重要的规定:递归一定要向一直方向递归。 例:计算n的阶乘。 public int method(n){ if(n==1){ return 1; }else{ return n*method(n-1); } }
  • 96. 课后作业: 1:打印一个九九乘法表 2:从控制台输入两个数,分别求两个数的最大公约数,最小公倍数。
  • 97. (本页无文本内容)
  • 98. 1!+2!+3.....+20!
  • 99. 练习:1:求Fibonacci数列:1 1 2 3 5 8,..第40个数的值。数列满足递归公式: 2:已知有一个数列:f(0)=1, f(1)=4, f(n+2)=2*f(n+1)+f(n)求f(10)的值
  • 100. 包装类型:的常见用法 int ---> Interger double ----> Double boolean ----> Boolean float -----> Float char ------->Character short -------->Short byte --------->Byte Stirng 中的常用方法 Stirng 和包装类之间的转换 例如 把String str="123" 转换为:int类型的123
  • 101. String 的用法练习 有客户的电话号码如下 18623054507 请用 "*" 代替为如下形式: 186****4507
  • 102. 数组类型: 数组是编程中最常见的一种数据结构,他可以用与存储多个数据,一个数据被称为数组元素,通常可通过数组的索引来访问数组元素,包括给我们的数组元素赋值和取出数组元素的数据 java 中的数组要求所有 数组元素都具有 相同的数据类型。因此,在一个数组元素中,数组元素的类型是唯一的,即一个数组里面只能存储一种数据类型(js ,php就可以存储多种类型的数据) //[ "aaa",123, obj]
  • 103. 数组类型: 数组是编程中最常见的一种数据结构,他可以用与存储多个数据,一个数据被成为数组元素,通常可通过数组的索引来访问数组元素,包括给我们的数组元素赋值和取出数组元素的数据 java 中的数组要求所有 数组元素都具有 相同的数据类型。因此,在一个数组元素中,数组元素的类型是唯一的,即一个数组里面只能存储一种数据类型(js ,php就可以存储多种类型的数据)
  • 104. 数组(数组是一种引用类型): 一旦数组的初始化完成以后,数组在内存中所占的空间将被固定下来。因此数组的长将不变。即使把某个数组元素的数据清空。但他所占的空间依然被保留,依然属于该数组,数组的长度依然不变。 java的数组既可以存储基本数据类型的数据也可以存储,引用类型的数据。所以只要有相同的数据类型即可。 如: Person p1=new Person(); Person p2=new Person(); Person [ ] persons={p1,p2};
  • 105. 数组的初始化 数组必须先初始化才能使用,所为初始化就是为每个数组的内存分配内存空间,并为每一个数组元素赋初始值。 数组的初始化: 1静态初始化:初始化时候由程序员显示指定每一个数组元素的初始值,由系统决定数组的长度 2动态初始化:初始化时候程序员只指定数组长度,由系统为数组元素分配初值
  • 106. String [ ]address={"北京","江西","河南","云南"} int [ ] ages=new int[ 4]; 此时ages[0]的值是多少? for(int i=0;i
  • 107. 动态初始化时候系统按如下规则来进行初值的分配 1:数组元素的类型是整数类型(byte,short ,int ,long) 则数组元素的值是0 2:数组元素的类型是浮点型(float,double)则数组元素的值是0.0 3:数组元素的类型是字符类型(char)数组元素的值是'\u0000' 4数组元素的类型是布尔类型(boolean)数组元素的值是:false 5:数组元素的类型是引用类型(类,接口和数组),数组的元素是null DArrayInit.java
  • 108. 数组在内存中的存储形式: arr堆内存栈内存数组变量
  • 109. 关于堆和栈: 当一个方法执行时,每一个方法都会建立自己的栈内存,在这个方法内定义的变量将存放在这个栈内存里面,随着方法的执行结束,这个方法的内存也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的,当我们在程序中创建一个对象时,这个对象将被保存在运行时数据区中,以便反复利用。这个运行时的数据区就是堆内存 堆中的对象不会随方法的结束而销毁,即使方法结束以后,这个对象还可能被另一个变量所引用。只有当一个对象没有任何引用变量时,系统的垃圾回收机制在会在合适的时候进行回收。
  • 110. 二维数组定义: type[ ][ ]arrName 初始化 arrName=new type[length][] int [ 3][ ]a; //把a当成一个一维数组进行初始化,初始化a 是一个长度为3的数组 //a数组的数组元素又是一个应用类型 a=new int[3][];
  • 111. 二维数静态初始化: int sorce[ ][ ]={ {61,78},{78,99},{1,2,3} }
  • 112. 二维数组定义: //定义一个三行四列的二维数组 int[ ] [ ] arrays=new int[3][4];
  • 113. 数组的工具类:Arrays 此类包含用来操作数组(比如排序和搜索)的方法 copyOf(..) toString(..) fill() //
  • 114. 数组的使用: 获取数组的长度使用:length属性 在操作数组中可能引发的异常: java.lang.ArrayIndexOutOfBoundsException:数组越界 int [] arr=new int[5] System.out.println(int[5]);
  • 115. 两种常用的遍历数组的方式 int []arr=new int[5] //为数组赋值 for(int i=0;i
  • 116. java新特性:可变参数 返回值类型 方法名(类型...参数名称) public static void fun(int ...arg){ System.out.println(arg[i]+" ,"); }
  • 117. 案例编程: 业务如下 :利息: interest ,利率: interest rate ,贷款: loan, 月利率: monthly interest rate 期数(月数) : months 还款: pay 等本金还款 借款本金: 18万 利息: 5.6% (年利息) 月利息=年利息/12 如:(5.6% /12) 还款期数(月): 60个月(5年) 每月归还本金: 180000/60=3000 //每月利息计算公式: 第1月还利息: (180000-3000*0)*(5.6% / 12)=840 第2月还利息: (180000-3000*1)*(5.6% / 12)=826 。。 第12月还利息: (180000-3000*11)*(5.6% / 12)=826
  • 118. 练习: 1:定义一个由整数组成的数组,要求求出其中的奇数个数,和偶数个数 2:定义一个整型数组,求出数组元素的和,数组元素的最大,最小值。 3:抽奖:从0-33 之间随机的抽取一个号码。组成一个六位数的号码。这个号码不能有重复(234567) 4:假定数组一开始的容量为10,要求现在对数组扩容为15
  • 119. 案例编程: 当贷款18万时候,年利息为7.2%,还款期限为5年(60个月) 计算出每月的还款表格: 3000.0 1140.0 4140.0 3000.0 1121.0 4121.0 3000.0 1102.0 4102.0 ....... 计算出总的还款利息,总共换银行的钱 贷款金额:180000.0 总的还款利息:34770.0 总的还款金额:214770.0 制表符为\t
  • 120. 案例编程: 当贷款18万时候,年利息为7.2%,还款期限为5年(60g个月) 计算出每月的还款表格: 3000.0 1140.0 4140.0 3000.0 1121.0 4121.0 3000.0 1102.0 4102.0 ....... 计算出总的还款利息,总共换银行的钱 贷款金额:180000.0 总的还款利息:34770.0 总的还款金额:214770.0 制表符为\t
  • 121. 全局变量: * * 实现匹配游戏算法 * 在两个数组中,索引相同且该相同索引上的值也相同 用a表示 * 在两个数组中,索引不同且该不同索引上的两个值相同 用b表示 * 例: * int[] arrOne = { 2, 1, 4, 5, 6 }; * int[] arrTwo = { 2, 4, 7, 1, 6 }; * 以上数组中有2个a 2个b * 下边match方法的返回值是:a=2,b=2
  • 122. 全局变量: public class Test{ static int a //作用域在整个类里面 public static void add(){ int a=0; //局部变量 ,他的作用域只在这个方法内 局部变量 int b=4; } } :
  • 123. 综合案例编程: 购物车: 业务如下:写一个购物车,该购物车的功能:能添加商品加入商品,能计算商品的价格。打印出所有的商品的件数。(假定该购物车只能存放3件商品,当商品重复时候,算同一件商品。然后只对数量曾加) 提示:String [ ] car=new String[10] 存放商品的名字 int[ ] itemCount=new int[10];
  • 124. 数组的排序: 1 冒泡排序 原理: a 逐一比较数组中相邻的两个元素, 如果后面 的数字小于前面的数字, 就交换先后元素. b 经过一个轮次的比较, 一定有一个最大的排 在最后的位置. c 每次比较剩下的元素, 经过n-1次比较, 可以 实现排序 简单说: 比较交换相邻元素,每次最大的漂移到最后
  • 125. 冒泡排序:
  • 126. 数组的排序: 1 选择排序 原理:a 将数组中的每个元素,与第一个元素比较 如果这个元素小于第一个元素, 就将这个 两个元素交换. b 每轮使用a的规则, 可以选择出一个最小元素 放到第一个位置. c 经过n-1轮比较完成排序 简单说: 每轮选择最小的放到前面.
  • 127. 1 选择排序
  • 128. /** * 自己写一个方法实现数组扩容 public static int[] copyof(int[] a,int length){ } */
  • 129. /** * 丢手帕 * 有n个小朋友, 围城一圈。玩游戏,每次数3下,数到三的则退出。问最后一个小朋友是谁? * 例如 现在有 5个小朋友 1 2 3 4 5 则最后的胜利者是4号的小朋友。 */
  • 130. 课后作业: