JAVA基础PPT.ppt_第1页
JAVA基础PPT.ppt_第2页
JAVA基础PPT.ppt_第3页
JAVA基础PPT.ppt_第4页
JAVA基础PPT.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA基础篇 JAVA优点 平台无关性分布式应用多线程纯面向对象应用范围广 1 Java的桌面应用 2 JavaWeb应用 3 Java企业级应用 4 Java嵌入式应用 JAVA编译原理 Java编译程序将Java源程序编译成JVM可执行代码Java字节码 JAVA源文件 java 字节码 class 运行jvm字节码的工作是由解释器来完成的 解释执行过程分三步进行 代码的装入 代码的校验 和代码的执行 代码的装入 类装载器classloader代码的校验 被装入的代码由字节码校验器进行检查代码执行 1 即时编译方式 解释器先将字节编译成机器码 然后再执行该机器码 2 解释执行方式 解释器通过每次解释并执行一小段代码来完成java字节 J2SE的运行环境设置 安装JAVASDK JavaSoftwareDevelopmentKit 通常 我们需要设置三个环境变量 JAVA HOME PATH和CLASSPATHJAVA HOME SDK的安装目录如 c javaPATH 指定一个路径列表 用于搜索可执行文件的 如 d oracle product 10 1 0 Db 2 bin JAVA HOME binCLASSPATH 也指定一个路径列表 是用于搜索Java编译或者运行时需要用到的类 如 JAVA HOME lib tools jar JAVA HOME lib rt jar JAVA基本数据类型 进制二进制 八进制 十进制整型byte 1个字节 int 4个字节 Integershort 2个字节 Shortlong 8个字节 浮点型float 4个字节 double JAVA基本数据类型 字符型char布尔型boolean数制 十进制 10八进制 012十六进制 0 x10 String函数 常用函数indexOf substring lastIndexOf replace replaceAll matches split toUpperCase chardata a b c Stringstr newString data System out println abc Stringcde cde System out println abc cde Stringc abc substring 2 3 Stringd cde substring 1 2 Date Date类型DateFormat format Datedate Datedate newDate System out println DateFormat getInstance format date SimpleDateFormatsdf newSimpleDateFormat yyyy MM ddHH mm ss MMHHhhSystem out println sdf format date Calendar类型Calendarcal Calendar getInstance cal set Calendar DAY OF MONTH 20 GregorianCalendar类型GregorianCalendargc newGregorianCalendar gc setTime date 数组 一维组二维数组三维数组例子 int intArr newint 1 3 4 char charArr newchar a b 面向对象 类 内部类 访问控制符类 public protected 对象包重载 多态 继承依赖聚合继承 接口 接口声明接口实现接口多重实现接口继承 抽象 抽象类抽象方法 集合框架 映射 map 集 set 列表 list 树 tree 数组 array 散列表 hashtable 集合基类 Collection接口是一组允许重复的对象 Set接口继承Collection 但不允许重复 List接口继承Collection 允许重复 并引入位置下标 Map接口既不继承Set也不继承Collection Collection接口 添加 删除元素booleanadd Objectelement booleanremove Objectelement 查询操作 intsize booleanisEmpty booleancontains Objectelement Iteratoriterator Set接口 HashSetTreeSet 有序 List接口 voidadd intindex Objectelement booleanaddAll intindex Collectioncollection Objectget intindex intindexOf Objectelement intlastIndexOf Objectelement Objectremove intindex Objectset intindex Objectelement ListIteratorlistIterator ListIteratorlistIterator intstartIndex ListsubList intfromIndex inttoIndex ArrayList类和LinkedList类 Map接口 JAVAIO File对象canRead canWrite delete deleteOnExist Exists getAbsoluteFile length list getName getParent getPath listFiles mkdir InputStream抽象类及其子类 字节流 AudioInputStreamByteArrayInputStreamFileInputStreamFilterInputStreamObjectInputStreamPipedInputStreamSequenceInputStreamStringBufferInputStream OutputStream ByteArrayOutputStreamFileOutputStreamFilterOutputStreamObjectOutputStreamPipedOutputStream 以字节为导向的stream Input和OutputInputStream1 ByteArrayInputStream 把内存中的一个缓冲区作为InputStream使用2 StringBufferInputStream 把一个String对象作为InputStream3 FileInputStream 把一个文件作为InputStream 实现对文件的读取操作4 PipedInputStream 实现了pipe的概念 主要在线程中使用5 SequenceInputStream 把多个InputStream合并为一个InputStream OutputStream 1 ByteArrayOutputStream 把信息存入内存中的一个缓冲区中2 FileOutputStream 把信息存入文件中3 PipedOutputStream 实现了pipe的概念 主要在线程中使用4 SequenceOutputStream 把多个OutStream合并为一个OutStream 以Unicode字符为导向的stream InputStream1 CharArrayReader 与ByteArrayInputStream对应2 StringReader 与StringBufferInputStream对应3 FileReader 与FileInputStream对应4 PipedReader 与PipedInputStream对应OutStream1 CharArrayWriter 与ByteArrayOutputStream对应2 StringWriter 无与之对应的以字节为导向的stream3 FileWriter 与FileOutputStream对应4 PipedWriter 与PipedOutputStream对应 线程 进程 线程 单CPU 多CPU 单线程 多线程 单线程代码1 多线程代码 线程 用Thread类创建线程用Runnable接口创建线程start run join 线程合并 后台线程与联合线程 如果我们对某个线程对象在启动 调用start方法 之前调用了setDaemon true 方法 这个线程就变成后台线程 对于Java程序来说 只要还有一个前台线程在运行 这个进程就不会结束 如果一个进程中只有后台线程在运行 这 个进程就会结束 Pp join 的作用就是把pp所对于的线程合并到调用pp join 语句的线程中 使用Runnable接口创建多线程 适合多个相同程序的代码的线程去处理同一资源的情况 把虚拟的CPU 线程 同程序的代码 数据有效分离 较好体现了面向对象的设计思想可以避免由于JAVA的继承特性带来的局限 假若一个类已经继承了另一类 则我们只能使该类实现Runnable当线程被构造时 需要的代码和数据通过另一个对象作为构造参数传递时去 这个对象就是实现了Runnable接口 多线程的应用 网络聊天程序发送键盘的数据 接收别人发送的数据 从键盘上读取输入 发送键盘的数据给对方 接收对方的数据 从键盘上读取输入 发送键盘的数据给对方 接收对方的数据 多线程应用2 批量数据copy的问题WEB服务器的请求及处理 多线程同步 例子演示代码块同步方法块同步 产生者与消费者例子 一个往消息队列中放入消息一个往消息队列中取出消息消息内容包括产生的ID号及内容三个生产者 三个消费者 线程间的通讯 wait 如队列为空 我们可以等待 或队列已经满的时候notify 通知由wait 而等待的线程 如我们往某个列队中放数据时 这时可以通知 notifyAll JAVA反射 AWT Swing JDBC编程 应用程序 JDBC MySQLDriver Db2Driver OracleDriver MySQL Db2 MySQL 连接数据库的步骤 注册驱动 只做一次 建立连接 Conntection 创建执行SQL的语句 Statement 执行语句处理执行结果释放资源 注册驱动 Class forName com mysql jdbc Driver 推荐这种方式 不会对具体的驱动类产生依赖 DriverManager registerDriver com mysql jdbc Driver 会造成DriverManager中产生两个一样的驱动 并会对具体的驱动类产生依赖 System setProperty jdbc drivers driver1 driver2 虽然不会对具体的驱动类产生依赖 但注册不太方便 所以很少使用 驱动类型 四种类型 建立连接 Connection Connectionconn DriverManager getConnection url user password url格式 JDBC 子协议 子名称 主机名 端口 数据库名 属性名 属性值 User password可以用 属性名 属性值 方式告诉数据库 其他参数如 useUnicode true characterEncoding GBK 创建执行SQL的语句 Statement StatementStatementst conn createStatement st executeQuery sql PreparedStatementStringsql select fromtable namewherecol name PreparedStatementps conn preparedStatement sql ps setString 1 col value ps executeQuery 处理执行结果 ResultSet ResultSetrs statement executeQuery sql While rs next rs getString col name rs getInt col name 释放资源 释放ResultSet Statement Connection 数据库连接 Connection 是非常稀有的资源 用完后必须马上释放 如果Connection不能及时正确的关闭将导致系统宕机 Connection的使用原则是尽量晚创建 尽量早的释放 基本的CRUD 创建 读取 更新 删除 模板代码Connectionconn null Statementst null ResultSetrs null try 获得Connection 创建Statement 处理查询结果ResultSet finally 释放资源ResultSet Statement Connection 插入记录 增加对应SQL的INSERT 返回增加成功的行 记录 数conn getConnection Statementst conn createStatement Stringsql insertintouser name age regist date values name 10 now inti st executeUpdate sql i为插入的记录数 读取记录 读取 查询 对应SQL的SELECT 返回查询结果conn getConnection st conn createStatement Stringsql selectid name age regist datefromuser rs st executeQuery sql while rs next System out print rs getInt id t t System out print rs getString name t t System out print rs getInt age t t System out print rs getTimestamp regist date t t System out println SQL注入 PreparedStatement和Statement 在SQL中包含特殊字符或SQL的关键字 如 or1or 时Statement将出现不可预料的结果 出现异常或查询的结果不正确 可用PreparedStatement来解决 PreperedStatement 从Statement扩展而来 相对Statement的优点 1 没有SQL注入的问题 2 Statement会使数据库频繁编译SQL 可能造成数据库缓冲区溢出 3 数据库和驱动可以对PreperedStatement进行优化 只有在相关联的数据库连接没有关闭的情况下有效 数据类型 详细信息见java sql Types几种特殊且比较常用的类型1 DATA TIME TIMESTAMP date time datetime存 ps setDate i d ps setTime i t ps setTimestamp i ts 取 rs getDate i rs getTime i rs getTimestamp i 2 CLOB text存 ps setCharacterStream index reader length ps setString i s 取 reader rs getCharacterStream i reader rs getClob i getCharacterStream string rs getString i 3 BLOB blob存 ps setBinaryStream i inputStream length 取 rs getBinaryStream i rs getBlob i getBinaryStream 一个简单用户相关的数据访问层 J2EE三层架构简介表示层 业务逻辑层 数据访问层 三层之间用接口隔离 定义domain对象User 定义存取用户的接口用JDBC实现接口用配置文件 properties 和反射实现与具体类的耦合 事务 ACID 原子性 atomicity 组成事务处理的语句形成了一个逻辑单元 不能只执行其中的一部分 一致性 consistency 在事务处理执行前后 数据库是一致的 数据库数据完整性约束 隔离性 isolcation 一个事务处理对另一个事务处理的影响 持续性 durability 事务处理的效果能够被永久保存下来 connection setAutoCommit false 打开事务 mit 提交事务 connection rollback 回滚事务 事务 SavePoint 当只想撤销事务中的部分操作时可使用SavePointSavePointsp connection setSavepoint connection rollerbak sp mit 事务 JTA 跨越多个数据源的事务 使用JTA容器实现事务 分成两阶段提交 javax transaction UserTransactiontx UserTransaction ctx lookup jndiName tx begin connection1connection2 可能来自不同的数据库 mit tx rollback 隔离级别多线程并发读取数据时的正确性 connection setTransactionIsolation Connection TRANSACTION READ COMMITTED V 可能出现 X 不会出现 存储过程 存储过程CallableStatement 从PreperedStatement扩展来 cs connection prepareCall callpsname cs registerOutParameter index Types INTEGER cs setXXX i xxxx cs executeUpdate intid cs getInt index 其他的几个API PreparedStatement getGeneratedKeys PreparedStatementps connection prepareStatement sql Statement RETURN GENERATED KEYS ps executeUpdate ResultSetrs st getGeneratedKeys rs getInt 1 批处理 可以大幅度提升大量增 删 改的速度 PreparedStatement addBatch PreparedStatement executeBatch 其他的几个API 可滚动的结果集Statementst connection createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR UPDATABLE ResultSetrs st executeQuery sql rs beforeFirst rs afterLast rs first rs isFirst rs last rs isLast rs absolute 9 rs moveToInsertRow 可更新的结果集conn createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR UPDATABLE rs updateString colname newvalue rs updateRow DatabaseMetaData和ParameterMetaData DatabaseMetaDatameta connection getMetaData 通过DatabaseMetaData可以获得数据库相关的信息如 数据库版本 数据库名 数据库厂商信息 是否支持事务 是否支持某种事务隔离级别 是否支持滚动结果集等 ParameterMetaDatapmd preparedStatement getParameterMetaData 通过ParameterMetaData可以获得参数信息 ResultSetMetaData ResultSetMetaDatameta rs getMetaData 通过ResultSetMetaData可以获得结果有几列 各列名 各列别名 各列类型等 可以将ResultSet放入Map key 列名value 列值 用反射ResultSetMetaData将查询结果读入对象中 简单的O RMapping 1 让SQL语句中列别名和要读入的对象属性名一样 2 通过ResultSetMetaData获得结果列数和列别名 3 通过反射将对象的所有setXxx方法找到 4 将3 找到的方法setXxx和2 找到的列别名进行匹配 即方法中的xxx于列别名相等 5 由上一步找到的方法和列别名对应关系进行赋值Method invoke obj rs getObject columnAliasName 数据源和连接池 DataSource用来取代DriverManager来获取Connection 通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论