




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 主讲人 肖宝 第一讲Java概述 1991年Sun公司的JamesGosling等人开始开发名称为Oak的语言 希望用于控制嵌入在有线电视交换盒 PDA等的微处理器 1994年将Oak语言更名为Java Java是SunMicrosystems于1995年推出的高级编程语言 1998年Sun发布了Java历史上最重要的JDK版本JDK1 22002年 Sun发布了Java的最成熟的版本JDK1 4现在最新版本为JDK1 62009年 Oracle公司收购Sun公司 Java与 Net 与Java类似的程序设计语言有C Ruby和Python 其中以微软的C 竞争尤为激烈 VS VS Java在市场中的地位 转自 Java技术平台 J2ME JavaPlatform MicroEdition 主要用于控制移动设备和信息家电等有限存储设备 J2SE JavaPlatform StandardEdition 是整个Java技术的核心和基础 它是J2ME和J2EE的编程基础 J2EE JavaPlatform EnterpriseEdition 是Java技术中应用最广泛的部分 J2EE提供了企业应用开发的完整解决方案 Java技术流程 Java目标技能点 掌握基本的Java编程技能 掌握Web客户端表现技术 Web网站开发技术 基于轻量级框架开发企业级应用软件 掌握J2EE体系的分布式应用软件的开发流程和生命周期 掌握Web服务的基础开发 熟练使用MySql SQLServer数据库 基础 掌握基础行业经验 掌握面向对象的思想 掌握Java基本语法 常用操作 掌握JDBC 了解设计模式 使用Eclipse开发 调试程序 Java环境的搭建 JDK下载和安装 HelloWorld示例 publicClassHelloWorld publicstaticvoidmain String args System out println WelcometoJavaWorld 示例运行分析 1 编写源程序 2 编译源程序 javac命令 3 运行 java命令 Java程序的基本规则 Java程序的组织形式Java程序是一种纯粹的面向对象的程序设计语句 因此Java必须以类 class 的形式存在 类是Java程序的最小程序单位 即你所写的代码一般都写在class的类中 Java源文件的命名规则Java程序源文件的后缀必须是 java Java源文件名的主文件句可以是任意的 但有一种情况例外 如果Java源程序定义了一个public类 则源文件名必须要类名相同 第二讲数据类型和运算符 注释单行注释 多行注释 或 文档注释 数据类型和运算符 标识符分隔符 空格 Space Tab Enter 标识符 标识符就是用于程序中变量 类方法命名的符号 其命名规则如下 标识符可以是以字母 下划线 美元符号 开头 后面紧跟着任意个字母 数字 下划线 美元符号 字符 标识符不能是关键字和保留字 标识符不能包含空格 1 字母2 下划线 3 符号 任意多的 1 数字2 字母3 下划线 4 符号 标识符 变量命名规范 简短且能清楚地表明标识符的作用 通常第一个单词的首字母小写 其后单词的首字母大写 例如 myScore 标识符命名示例 principal cost price marks 3 lastname city 123rate discount zipcode City int Java关键字 Java语言中有一些具有特殊用途的单词被称为关键字 Java语言的关键字有 abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try void volatile while Java语言保留字有 const goto 3个Java特殊的直接量 true false null Java数据类型 空类型null类型 Java基本数据类型 变量的声明和赋值 数据类型变量名 数值 数据类型变量名 变量名 数值 intmoney 1000 intmoney money 1000 变量的存储 Registers 寄存器 这是速度最快的场所 因为它们于CPU内部 作为一个程序员 你是不仅无法直接碰触暂存器 也无法在程序里面感觉到它存在的迹象 C C 语言可以 Stack 栈 通过stack指针前后移动来获取与释放内存 速度仅仅次于Registers 对象的reference存储于stack处 Heap 堆 一种通用性质的内存存储空间 用来置放所有的java对象 只要在程序代码中用new 那么当它执行的时候 heap便会为它分配空间 staticstorage 静态存储空间 存放程序执行期间一直存在的数据 在程序中用关键字static修饰变量时 constantstorage 常量存储空间 置于程序代码里面 Java基本数据类型的转换 自动类型转换 将小的数据类型的数据赋与大的数据类型变量 强制转换 把大的数据类型数据赋与小的数据类型变量 格式 目标类型 值 char short byte int long float double Java数据类型转换注意事项 int是最常用的数据类型 通常情况下 一个Java整型常量默认就是int类型 此外 1 如果直接将一个较小的整数常量 在byte和short类型的表数范围内 赋给一个byte或short常量 系统就会自动把这个整数常量当成byte或short类型 2 如果是一个巨大的整数常量 超出int类型的表数范围 Java不会把他当成long类型 如希望当成long类型来处理 则应在常量后加L或l Java语言的浮点数默认是double型 如果要想把浮点常量当成float 则应在后面加上F或f 表达式类型的自动提升 当一个算术表达式中包含多个基本的数据类型的值时 整个算术表达式的数据类型将发生自动提升 其规则如下 所有的byte short char型将被提升到int型整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型 当有字符串与数字类型相加时自动转成字符串类型 然后运算 数据类型转换示例 inti 1 j 0 floatf1 0 1 floatf2 123 longl1 12345678 l2 8888888888 doubled1 2e20 d2 124 byteb1 1 b2 2 b3 129 j j 10 i i 10 i i 0 1 charc1 a c2 125 byteb b1 b2 charc c1 c2 1 floatf3 f1 f2 floatf4 f1 f2 0 1 doubled d1 i j floatf float d1 5 d2 Java的直接量 直接数就是直接显式赋给某个变量的具体数值 共有7种类型的直接数 int型直接数 1 1567 long型直接数 22L 22l float型直接数 234 5F 1 3f double型直接数 234 5 235 6D 11 0d boolean型直接数 true false char型直接数 a u000F String型直接数 hello Java运算符 运算符说明Java运算符分隔符 单目运算符 强制类型转换符 type 乘法 除法 求余 加法 减法 移位运算符 关系运算符 instanceof等价运算符 按位与 按位异或 接位或 条件与 条件或 三目运算符 赋值 前置后置运算 i 出现在变量的前面时 须先加减 后取值 i 出现在变量的后面时 须先取值 后加减 inti 0 intnumber 0 number i System out println number number i System out println number inti 0 intnumber 0 number i System out println number number i System out println number 相当于i i 1 number i 相当于i i 1 number i 相当于number i i i 1 相当于number i i i 1 短路 intscore 80 inta 20 if score a a 90 score System out println a if scorescore System out println a 当 的左边为true时 不管右边是true或是false 整个表达式都为true 因此右边则不再执行 当 的左边为flase时 不管右边是true或是false 整个表达式都为flase 因此右边则不再执行 流程控制 顺序结构 分支结构 循环结构 If条件结构 if 条件 语句 if 条件 语句1 else 语句2 多重选择结构 if 条件 语句 elseif 条件 语句 else 语句 switch结构 switch 表达式 case常量1 语句 break case常量2 语句 break default 语句 计算表达式的值 如果等于常量1 如果等于常量2 如果没有找到匹配的值 switch后面小括号中表达式的值必须是整型或字符型 循环结构 while 循环条件 循环操作 符合条件 循环继续执行 否则 循环退出 循环中被重复执行的操作 do 循环操作 while 循环条件 先执行一遍循环操作 符合条件 循环继续执行 否则 循环退出 for循环 for 条件为true 循环体被执行 for inti 0 i 100 i System out println 我最棒 表达式1 表达式2 表达式3 循环操作 参数初始化 条件判断 更新循环变量 1 2 4 3 break inti 2 switch i case1 System out println 星期一 break case2 System out println 星期二 break 其他语句 遇到break 立即跳出switch语句 回顾break用于switch语句 描述4000米长跑比赛 for inti 0 i 10 i 跑400米 if 不能坚持 break 退出比赛 第8圈 快累死了 我要退出 Continue continue 只能用在循环里continue作用 跳过循环体中剩余的语句而执行下一次循环 while continue 继续下一次循环 通常与条件语句一起使用 加速循环 for inti 0 i 10 i 跑400米 if 口渴 continue 不喝水 继续跑 接过水壶 喝水 示例 return关键字 ruturn关键字并不是专门跳出循环的 它的功能是结束一个方法 当一个方法执行到一个return语句时 这个方法将被结束 数组类型 数组是编程语言中最常见的一种数据结构 它可用于存储多个数据 每个数据被称为数组元素 数组是一种引用数据类型 每个数组中的数据都有着相同的类型 定义方法 数组的初始化 type arrayName typearrayName 静态初始化 arrayName newtype element1 element2 或 type arrayName element1 element2 动态初始化 arrayName newtype length 注意 不能静态方法和动态方法一起用 即不能既指定数组的长度 也为每个数组元素赋值 使用数组 访问数组length属性forearch语法for typevariableName array collection arrayName i 其中i是数组索引值 多维数组 声明初始化静态初始化 type typeName 动态初始化 arrayName newtype length 或type arrayName newtype length1 length 或type arrayName newtype newtype length newtype element1 element2 操作数组的工具类 java util ArraysbinarySearch copyOf Fill Sort 第三讲面向对象思想 上帝赋与人类说话的能力 而言语又创造了思想 思想是人类对宇宙的量度 摘自 PrometheusUnbound Shelley 类与对象 顾客姓名 朱丽叶年龄 28体重 52千克操作 购买商品 职员姓名 布兰尼职衔 收银员年龄 35体重 60千克操作 收款打印账单 类和对象 类是某一批对象的抽象 可以把类理解成某种概念 对象才是一个具体存在的实体 人类 类的定义 类将现实世界中的概念模拟到计算机程序中 修饰符class类名 构造函数构造函数1 构造函数2 定义属性部分属性1的类型属性1 属性2的类型属性2 属性n的类型属性n 定义方法部分方法1 方法2 方法m 类的属性 修饰符 public protected private static final 修饰符 数据类型属性名 默认值 1 public2 protected3 private 1 static 修饰符 1 final 类的方法 修饰符 public protected private static final abstract 修饰符 方法返回值数据类型方法名 参数类型1参数1 参数类型2参数2 Code 1 public2 protected3 private 1 abstract2 final 修饰符 1 static 构造方法 修饰符 public protected private 修饰符 构造器名 参数类型1参数1 参数类型2参数2 Code 1 public2 protected3 private 修饰符 对象的产生和使用 类名对象名 new类名 给类的属性赋值 对象名 属性调用类的方法 对象名 方法名 对象 引用和指针 PublicclassStudent StringuserName intage Studentstu1 newStudent stu1 userName xiaobao stu1 age 30 Studentstu2 stu1 stu1 username Age 3 xiaobao stu2 this Java提供了一个this关键字 this关键字是一个对象的默认引用 this关键字总是指向调用该方法的对象 其最大作用是让类中一个方法访问该类的另一个方法或属性 方法成员在内存中会只有一份 Static 在类中 用static声明的成员变量为静态成员变量 它为该类的公用变量 在第一次使用时被初始化 对于该类的所有对象来说 static成员变量只有一份 用static声明的方法为静态方法 在调用该方法时 不会将对象的引用传递给它 所以在static方法中不可访问非static的成员 可以通过对象引用或类名 不需要实例化 访问static常量 所以static所修饰的属性或方法又称为类属性和类方法 静态方法不再是针对某个对象的调用 所以不能访问非表态成员 方法的参数传递机制 Java里方法的参数传递之式只有一种 值传递 形参长度可变的方法 在最后一个形参的类型后增加 表明该形参可以接受多个参数值 多个参数值被当成数组传入 递归方法 方法体内调用方法自身 方法重载 Java允许同一个类里定义多个同名的方法 只要形参列表不同就行 如果一个类中包含了两个或两个以上方法的方法名相同 但形参的列表不同 则被之为方法重载 重载的实现同一类中方法名相同 参数列表不同 参数个数 参数的类型 staticStringvalueOf char data intoffset intcount staticStringvalueOf doubled staticStringvalueOf floatf 成员变量和局部变量 成员变量指的是在类范围里定义的变量 也即是属性 局部变量指的是一个方法内定义的变量 变量 成员变量 局部变量 实例属性 不以static修饰 类属性 以static修饰 形参 方法签名中定义的变量 方法局部变量 在方法内定义 代码块局部变量 在代码块内定义 作用域 类属性 只要类存在 程序就可以访问该类的类属性 实例属性 只要实例存在 程序就可以访问该实例实例属性 局部变量形参 在整个方法内都有效 方法局部变量 在方法体内定义的局部变量 从其定义开始到方法的结束 代码块局部变量 从定义开始到块的结束 类 类属性 实例 类属性 三大特性之封装 Encapsulation 封装是指将对象的状态信息隐藏在对象内部 不允许外部程序直接访问对象内部信息 而是能通过该类提供的方法来实现内部信息的操作和访问 封闭的目的 隐藏类的实现细节 让使用者只能通过预先的方法来访问数据 从而可以在该方法里加入控制逻辑 限制对属性的不合理访问可进行数据检查 从而有利保证对象的信息完整性 便于修改 提高代码的可维护性 实际上封装有两个方面的含义 把该隐藏的隐藏起来 把该暴露的暴露出来 访问控制级别表 default 友善的 缺省的访问权限不需要任何关键字 通常被称为friendly public 代表于public之后的成员将为每个类所用 protected 几分友善 允许本类和子类使用 private 不要磁我 除了成员所在的class 没有其它任何人可以访问 package 包 如何存放两个同名的类而不冲突 树形文件系统使用目录解决文件同名冲突问题 package的使用 packagexiaobao publicclassStudent publicStringtoString 包名 使用package声明包 以分号结尾 注意 如果有包的声明 一定作为Java源代码的第一条语句 且sun公司建议把公司域名倒写作为包名 package与import 在程序中要使用某个类 需要将其包名全部写全如 在此使用方法中 每次都需将包名写全 使得编程较为繁琐 因此我们可以使用import关键字 导入包中的类 再次使用导入包中的全部的类 java util Dated newjava util Date importjava util Date Dated newDate importjava util 三大特性之继承 Java有着众人令人赞叹的功能 程序代码的重复运用便是其中之一 继承便是其中重要的方法 继承需要符合的关系 is a 父类更通用 子类更具体 Extends Java的继承通extends关键字来实现 实现继承的类称为子类 被继承的类被称为父类或是 基类 超类 其实现的语法格式如下 修饰符class子类extends父类 code 方法重写 Override 如果父类别中的定义并不符合您的需求 可以在扩充类别的同时重新定义 子类中重新定义方法时 需遵循 两同两小一大 规则 两同 方法名相同 形参列表相同 两小 指子类方法返回值类型应比父类方法更小或相等 一大 指子类方法的返回权限应比父类方法更大或相等 Super 当子类覆盖了父类方法后 子类的对象无法访问父类中的方法 但还可以在子类的方法中通过super来调用父类中被覆盖的方法 因为得到一个子类对象时 会生成一个父类的对象 引用数据类型与instanceof运算符 类型转换 向下转型 向上转型向下转型 Type variable转换Instanceof运算符 三大特性之多态 Polymorphism Java引用变量有两个类型 一个是编译时的类型 一个是运行时的类型 编译时的类型由声明该变量时使用的类型决定 运行时类型由实际赋给该变量的对象决定 如果编译时类型和运行时类型不一致 就会出现多态 final修饰符 final在java中表示的意思是最终 也可以称为完结器 可以使用final关键字声明类 属性 方法 1 final变量final变量只能在构造函数或是静态初始化块中 有static修饰符 进行初始化 且只能初始化一次 final static 类型变量名 初始值 final修饰符 2 final方法final方法不可被重写 如果不希望子类重写父类的某个方法 则可以使用final修饰方法 final返回值类型方法名 final修饰符 3 final类final类不能被继承 即不可有子类 public protected private finalclass类名 抽象类 由abstract修饰的方法叫抽象方法 由abstract修饰的类叫抽象类抽象方法必须声明在抽象类中 且不能定现 使用 父类中的某些抽象不包含任何逻辑 并需要在子类中重写 子类提供这种抽象方法的实现细节 abstractclass abstracttypemethod name parameter list 抽象类可以具有指向子类对象的对象引用 接口 interface 抽象类是从个类中抽象出来的模板 如果将这种抽象进行得更彻底 则可以提炼出一种更加特殊的抽象类 接口 修饰符 interface接口名extends父接口1 父接口2 0到多个常量定义 0到多个抽象方法的定义 注意 1 在常量定义中 默认方式为publicfinalstatic类型变量 即使你不使用以上修饰 系统也会采用默认方式 2 接口可以是多继承的 接口的使用 修饰符 class类名extends父类implements接口1 接口2 实体部分 第四讲异常处理 异常异常就是在程序的运行过程中所发生的不正常的事件 它会中断正在运行的程序 异常 程序运行 程序中断运行 异常处理 Java编程语言使用异常处理机制为程序提供了错误处理的能力 程序中预先想好了对付异常的处理办法 异常 程序运行 处理完毕 程序继续运行 对异常进行处理 Java中如何进行异常处理 Java的异常处理是通过5个关键字来实现的 try catch finally throw throws 捕获异常 catch try finally 执行可能产生异常的代码 捕获异常 无论是否发生异常 代码总能执行 publicvoidmethod try 代码段 catch 异常类型ex 对异常进行处理的代码段 代码段 多重catch块 publicvoidmethod try 代码段 产生异常 异常类型2 catch 异常类型1ex 对异常进行处理的代码段 catch 异常类型2ex 对异常进行处理的代码段 catch 异常类型3ex 对异常进行处理的代码段 代码段 try 与异常类型1不匹配 try catch块后的代码段 发生异常 产生异常对象 catch 与异常类型2匹配 catch catch 程序继续执行 进入catch块 抛出异常 如果在当前环境无法解决一个异常 就要将其抛出 把异常交给调用者处理 手动抛出异常 抛出异常 throw 声明异常 声明方法可能要抛出的各种异常 throws 第五讲数据库操作 JDBC JavaDataBaseConnectivity java数据库连接 由一些接口和类构成的API J2SE的一部分 由java sql javax sql包组成 应用程序 JDBCAPI 数据库驱动及数据库之间的关系 连接数据库的步骤 注册驱动建立连接 Connection 创建执行SQL的语句 Statement 执行语句处理执行结果 ResultSet 释放资源 连接数据库的步骤 1 注册驱动Class forName com mysql jdbc Driver 2 建立连接Connectionconn DriverManager getConnection url user password url格式 JDBC 子协议 子名称 主机名 端口 数据库名 属性名 属性值其他参数如 useUnicode true characterEncoding GBK 连接数据库的步骤 3 创建执行SQL的语句1 StatementStatementst conn createStatement st executeQuery sql 2 PreparedStatementStringsql select fromtable namewherecol name PreparedStatementps conn preparedStatement sql ps setString 1 col value ps setString n col value ps executeQuery 连接数据库的步骤 4 处理执行结果ResultSetrs statement executeQuery sql while rs next rs getString col name rs getInt col name 5 释放ResultSet Statement Connection 数据库连接 Connection 是非常稀有的资源 用完后必须马上释放 如果Connection不能及时正确的关闭将导致系统宕机 Connection的使用原则是尽量晚创建 尽量早的释放 基本的CRUD操作 Connectionconn null Statementst null ResultSetrs null try 获得Connection 创建Statement 处理查询结果ResultSet finally 释放资源ResultSet Statement Connection 存储过程 CallableStatement 从PreperedStatement扩展来 cs connection prepareCall callpsname cs registerOutParameter index Types INTEGER cs setXXX i xxxx cs execute intid cs getInt index 批处理 1 Statement或PreparedStatement先addBatch 2 1 Statement或PreparedStatement后executeBatch 事务处理 1 Connection setAutocommit false 2 Cmit 3 Connection rollback 第十讲网络编程 计算机网络是相互连接的独立自主的计算机的集合 最简单的网络形式由两台计算机组成 A B 192 168 0 118 192 168 0 10 协议 协议 端口 端口 IP地址 域名 端口 IP地址TCP IP使用IP地址来标识源地址和目的地址IP地址格式 192 168 0 0目前正在普遍使用的IP协议是第4版 Version4 的 称为 IPv4 新版本的 IPv6 也开始推广 域名便于记忆 字符串形式 如 与IP地址间存在映射关系 由位于网络中域名服务器 DNS DomainNameServer 负责将域名解析为相应的IP地址 端口逻辑意义上的数据传输通道 或者说是模拟通道 TCP IP协议约定 每台计算机拥有65536个这种逻辑通信端口 端口号 用于标识这些端口的整数编号 其取值范围为0 65535 相关API JDK的包中定义了与IP地址 域名有关的类 InetAddress表示了32位或128位无符号数字表示的IP地址 Inet4Address继承了InetAddress类 以32位符号数字表示的IPv4地址 其典型表示形式是由圆点分隔开的4段 取值范围0 255的十进制数值 Inet6Address继承了InetAddress类 以128位符号数字表示的IPv6地址 其典型表示形式是由圆点分隔开的4段 取值范围0000 FFFF的十六进制数值 URL URL UniformResourceLocator 统一资源定位器 用于表示Internet上资源的地址 URL格式 套接字 socket 为了能够方便的开发网络应用软件 由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket 套接字 socket的出现 使程序员可以很方便地访问TCP IP 从而开发各种网络应用的程序 随着Unix的应用推广 套接字在编写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州市增城区康园工疗站服务中心招聘3人模拟试卷参考答案详解
- 2025年山东开放大学公开招聘人员(11名)模拟试卷参考答案详解
- 2025湖南衡阳市衡南县社会保险服务中心公益性岗位招聘4人考前自测高频考点模拟试题完整参考答案详解
- 2025年渭南市医疗机构定向招聘笔试等后续工作模拟试卷及答案详解(典优)
- 2025甘肃陇南慈航精神康复医院招聘17人模拟试卷附答案详解(模拟题)
- 2025山东济南建工集团有限公司校园招聘40人笔试题库历年考点版附带答案详解
- 2025年福建省福州市公安局地铁分局招聘30人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025江西中小学教师招聘考试南昌考区考前自测高频考点模拟试题及完整答案详解一套
- 2025年汉中市中心医院第二批备案制工作人员招聘(19人)考前自测高频考点模拟试题及一套答案详解
- 2025中国电信安全公司春季校园招聘笔试题库历年考点版附带答案详解
- 2024-2025学年北师大版九年级数学上册第一次月考测试卷及答案
- 小学语文课程与教第二章:小学语文课程教材
- 苏教版一年级上册科学素材期末复习知识点总结
- 废铅酸电池中回收高纯度金属铅和α-PbO新工艺及其电化学性能研究
- 2024年高考数学一模试题分类汇编:立体几何(原卷版)
- 露天停车场施工方案
- 山东省青岛第三十九中学2023-2024学年九年级上学期月考数学试卷(10月份) (月考)
- HR如何筹划年终奖?(10大经典个税筹划案例)汇编
- GB/T 43063-2023集成电路CMOS图像传感器测试方法
- 作文格子纸-word版本
- 抵押还款协议-1
评论
0/150
提交评论