java程序设计.docx_第1页
java程序设计.docx_第2页
java程序设计.docx_第3页
java程序设计.docx_第4页
java程序设计.docx_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计第1章 Java 基本概念1.1 java的历史 1990年 由sun公司 开发出java的Oak前身1995年 正是上市 更名为java1.2 java的特点面向对象可移植性第2章 Java 开发环境的安装2.1 Java开发环境包含三个内容开发语言 java编译器 JDK (java虚拟机)开发工具 MyEclisps 2.2 java虚拟机的安装 配置环境变量 如下图配置环境变量 如下图2.3 创建第一个java程序2.3.1 示例1创建 java 代码文件 文件名为Liguori.java 注意文件名 和类名必须相同 第一个字母大写public class Liguoripublic static void main(String args)System.out.print(nihao);注解 :public 是访问修饰符 代表公开的 也就是适用范围非常大 class 是类关键字 用来声明类的 Liguori 是类的名 static 静态的 现在可以理解为只执行一次 void 返回值类型 表示没有任何返回值 main 程序的主方法 也就是应用程序的入口 (String args) 参数 System.out.print(内容); 输出语句2.3.2 示例2public class SayHellopublic static void main(String x)System.out.print(你好,+x0);System.out.print(你好,+x1);addwords();public static void addwords()System.out.print(你真漂亮!);程序测试 Java SayHello wangri dangkai编写java程序文件Liguori.java编译java程序文件Javac Liguori.java执行编译后的java文件Java Liguori2.4 java 开发工具安装MyEclips使用MyEclips 创建一个java程序第3章 Java基本语法3.1 变量 与 常量声明变量 数据类型 变量名;常量final double pai = 3.14;final String master = “金龟子”;3.2 数据类型数值型 byte(字节型) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度) -128127 -32768 32767 -20亿 20亿 很长 精确到小数点后7-8位 精确到27-28位8位 16位 32位 64位 32位 64位1字节 2字节 4 8 4 8字符型 char(字符型) String(字符串型) 波尔型 boolen true false类类型 class 3.3 运算符比较运算符 = = != = 数学运算符 + - * / + - %逻辑运算符 & | !3.4 控制语句3.4.1 条件语句if(条件)else3.4.2 分支语句switch(整数型变量) case值1:语句1; break;case值2:语句2; break;case值3:语句3; break;default:语句x;break;3.4.3 循环语句for (赋值初值;判断条件;赋值增减量) 语句 ; . while (判断条件) 语句1 ; 语句2 ; 3.5 数组数组变量可以存储多个值声明数组:数据类型 数组名 = new 数据类型个数 数据类型 数组名 = 初值0,初值1,初值n冒泡排序算法找出一个数组中的最大值 并且对数组进行排序数组名.length 获取数组中元素的个数Arrays.sort(数组名)对指定的数组进行排序;System.arraycopy(源,开始,目标,开始,个数); 数组间元素的复制二维数组数据类型 数组名 = new 数据类型行的个数列的个数 ;3.6 方法 就是函数 方法的声明 访问修饰符 返回值类型 方法名称(类型 参数1,类型参数2,) 程序语句; return 表达式;第4章 AWT 和Swing -图形化CS框架4.1 AWT框架最早的图形化框架 只包含简单的控件4.2 Swing框架最新的图形化框架 包含丰富的控件4.2.1 如何创建窗体导入java.swing.JFrame 类包 并声明 JFrame变量JFrame chuangti = new JFrame();4.2.2 如何添加控件导入java.swing.* 类包 并声明 控件变量JLabel 标签= new JLabel(); 声明标签JButton 标签= new JButton(); 声明按钮4.2.3 如何设置控件属性控件名.set属性名(参数值)例如 biaoqian.setSize(100,100); 设置标签宽度100 高度1004.3 GUI(图形化用户接口)事件处理机制4.3.1 事件源事件源就是发生了事件的控件4.3.2 监听器(ActionListener WindowAdapter)就是用来观察某个事件源的一个监听器4.3.3 事件处理程序就是当事件发生时的处理函数第5章 理解面向对象面向对象就是 用代码程序 来描述现实生活中的事物类 是对现实生活中具有相同特征的事物的统称对象(实例) 具体的一个真正的事物 类(class) + 对象/实例(object)类字段 (变量)属性 (变量+setget函数)方法(行为) (函数) 面向对象的三大机制 封装 继承 多态第6章 类的封装6.1 类的声明(封装类)访问修饰符 class 类名访问修饰符 数据类型 变量名1;访问修饰符 数据类型 变量名2;访问修饰符 数据类型 变量名3;访问修饰符 返回值类型 函数名1()语句;访问修饰符 返回值类型 函数名2()语句;访问修饰符 返回值类型 函数名3()语句;6.2 类的使用 类名 实例名 = new 类名();/实例化 实例名.属性 = 值; /给属性赋值 实例名.方法() /使用类的方法可以使用匿名实例(或者叫匿名对象)new 类名().成员6.3 构造方法 是在类实例化的时候调用的,利用构造方法的被调用最早的特点,用来给实例的属性成员赋初始值 定义格式: public 类名(参数1,参数2.) 使用方式: 类名 实例名 = new 类名(参数1,参数2.); 默认构造方法 给类的成员赋初始值构造方法的重载 (同名构造方法)根据构造方法的参数结构不同 可以声明多个构造方法6.4 this关键字 代表当前类区分局部变量和全局变量6.5 static 静态静态成员的好处 1. 使用方便2. 从设计上来说 静态成员是 所有类的实例共享的变量语法定义规则1.非静态成员 属于类的实例 2.静态成员 属于类 3.静态方法中只能使用静态成员6.6 包 package对类进行分组使类的管理更清楚通常用包对具有某一类功能的类进行分组包的正式命名 要求全部小写字母6.7 内部类 可以提供方便可以节省内存空间 提升系统性能标识符 class 外部类的名称 / 外部类的成员标识符 class 内部类的名称 外部类 / 内部类的成员 内部类6.8 属性 属性对比字段的好处是灵活 private 数据类型 变量名; /私有成员public 数据类型 get变量名() /get方法用来读取属性值 return 变量名;public void set变量名(数据类型 参数名) /set方法用来设置属性值 if(条件) /此处可以判断 十分灵活this.变量名 = 参数名;第7章 类的继承 7.1 继承的基本概念 实现复用代码 大量减少代码的编写量语法格式:访问修饰符 class 子类名extends 父类名类的成员继承是可以传递的一个子类只能有一个父类 ,一个父类可以有多个子类。Object 是所有类的父类所有默认继承了 Object类7.2 类的成员的访问修饰符7.2.1 private私有访问控制符 在前面已经介绍了private访问控制符的作用,如果一个成员方法或成员变量名前使用了private访问控制符,那么这个成员只能在这个类的内部使用。注意:不能在方法体内声明的变量前加private修饰符。7.2.2 default默认访问控制符 如果一个成员方法或成员变量名前没有使用任何访问控制符,就称这个成员所拥有的是默认的(default)访问控制符。默认的访问控制成员可以被这个包中的其它类访问。如果一个子类与其父类位于不同的包中,子类也不能访问父类中的默认访问控制成员。7.2.3 protected受保护访问控制符 如果一个成员方法或成员变量名前使用了protected访问控制符,那么这个成员既可以被同一个包中的其它类访问,也可以被不同包中的子类访问。7.2.4 public公开访问控制符 如果一个成员方法或成员变量名前使用了public访问控制符,那么这个成员可以被所有的类访问,不管访问类与被访问类是否在同一个包中。7.3 super 超(父)类关键字super.父类成员7.4 复写 (override)重新改写父类中的方法从父类继承来的方法不适合子类的时候 可以采用复写父类的方法7.5 抽象类(abstract)派生出的新的类不仅可以保留原有的类的功能,而且还可以拥有更多的功能。抽象类的作用有点类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。抽象类定义规则 l 抽象类和抽象方法都必须用abstract关键字来修饰。 l 抽象类不能被实例化。 l 抽象方法只需声明,而不需实现。l 含有抽象方法的类必须被声明为抽象类。l 抽象类的子类必须复写所有的抽象方法后才能被实例化。7.6 final关键字 在Java中声明类、属性和方法时,可使用关键字final来修饰。1、 final标记的类不能被继承。2、 final标记的方法不能被子类复写。3、 final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。7.7 接口(interface) 接口(interface)是Java所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同: 1、接口里的数据成员必须初始化,且数据成员均为常量。 2、接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。第8章 类的多态 通常用在设计模式中 / 23种设计模式 gof 四人组使用多态设计程序的好处l 可以让程序的整体结构的设计更清晰,有利于项目的管理l 在程序后期功能扩展过程中,减少对原有代码的修改量,从而提升系统的稳定性 和 可扩展行,最终达到降低系统维护的(人力)成本。8.1 方法的重载(同名方法)8.2 构造方法的重载8.3 抽象类的多态8.4 接口的多态第9章 Java的习惯 9.1 命名习惯(驼峰命名法)类的声明、方法的声明、常量的声明都是有一定规律的,规律如下: n 包名中的字母一律小写,如:demo.java。 n 类名、接口名应当使用名词,每个单词的首字母大写,如:TestPerson。 n 方法名,第一个单词小写,后面每个单词的首字母大写,如:talkMySelf。 n 常量名中的每个字母一律大写,如:COUNTRY。9.2 JAR包如果开发者开发了许多类,当需要把这些类提供给用户使用时,通常都会将这些类压缩到一个jar文件中,以jar包的方式提供给用户使用。只要别人的classpath环境变量的设置中包含这个jar文件,Java虚拟机就能自动在内存中解压这个jar文件,把这个jar文件当作一个目录,在这个jar文件中去寻找所需要的类及包名所对应的目录结构。使用Export 导出功能就可实现第10章 常用类10.1 String字符串类10.1.1 charAt方法该方法的作用是按照索引值(规定字符串中第一个字符的索引值是0,第二个字符的索引值是1,依次类推),获得字符串中的指定字符。10.1.2 compareTo方法该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。10.1.3 concat方法该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。10.1.4 endsWith方法该方法的作用是判断字符串是否以某个字符串结尾,如果以对应的字符串结尾,则返回true。10.1.5 equals方法该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false。10.1.6 getBytes方法该方法的作用是将字符串转换为对应的byte数组,从而便于数据的存储和传输。10.1.7 indexOf方法该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。10.1.8 lastIndexOf方法其作用是从字符串的末尾开始向前查找第一次出现的规定的字符或字符串 10.1.9 length方法该方法的作用是返回字符串的长度,也就是返回字符串中字符的个数。中文字符也是一个字符。例如:10.1.10 replace方法该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。10.1.11 split方法该方法的作用是以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后会获得一个字符串数组。10.1.12 startsWith方法该方法的作用和endsWith方法类似,只是该方法是判断字符串是否以某个字符串作为开始。10.1.13 substring方法该方法的作用是取字符串中的“子串”,所谓“子串”即字符串中的一部分。例如“23”是字符串“123”的子串。10.1.14 toCharArray方法该方法的作用和getBytes方法类似,即将字符串转换为对应的char数组。10.1.15 toLowerCase方法该方法的作用是将字符串中所有大写字符都转换为小写10.1.16 trim方法该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串。该方法不去掉字符串中间的空格10.1.17 valueOf方法该方法的作用是将其它类型的数据转换为字符串类型。需要注意的是,基本数据和字符串对象之间不能使用以前的强制类型转换的语法进行转换。10.2 日期时间类n Date 是早期用来处理时间的类n Calender 是新版的用来处理时间的类功能更多n SimpleDateFormat 就相当于一个模板,可以描述任意时间格式10.3 Math 数学 10.4 Random 随机数nextInt(最大值);10.5 集合类10.5.1 List结构 线型结构n ArrayList 异步的、线程不安全的l add() 添加元素l remove() l get(索引值) 查找元素n LinkedList 当集合的头部和尾部被频繁操作时 可选择此集合类l addFirst() l addLast() l removeFirst() l removeLast() l getFirst() l getLast()n Vector 同步的、更安全n Stack (堆) 先进后出l push() 添加到最前面l pop() 弹出最后一个10.5.2 Map结构 键值对 速度快 不允许有重复的键值n HashMap 异步、不安全、可以空l get(key) l containsKey(key) 判断是否存在l Iterator it = hm.keySet().iterator(); 获取所有键值n Hashtable同步的、更安全、不允许空10.5.3 Set结构n HashSet 可以无序存储n TreeSet 有顺序存储10.5.4 Queue队列结构n Queue接口 /有游标的特点第11章 异常处理11.1 基本结构我们通常会把可能出现错误的语句放入到try catch结构中,尽量保证程序正常运行。try要检查的语句 可能出错的语句 Catch(捕获异常信息)对发生的异常做出处理finally一定会运行的语句11.2 自定义异常throw tryint x = 20;int y = 0;if(y=0)throw new Exception(除数不能为0!);int z = x/y;catch(Exception ex)System.out.println(ex.getMessage();第12章 多线程12.1 基本概念进程:一个应用程序启动后,就会创建一个进程线程:一个应用程序中,并发执行的任务就是线程一个进程中可以包括多个线程.举例说明一下12.2 创建线程的方式12.2.1 继承Thread类实现 其实Thread也是继承了Runnable接口12.2.2 继承Runnable接口实现可以在继承Runnable接口的同时再继承其他的类多个线程资源共享Thread 本身也是继承自Runnable接口12.3 线程的同步由于线程不同步带来的问题为了保证多个线程在访问同一资源时不互相影响,可以采用同步代码块的方法.Synchronized(this)12.4 死锁两个线程相互等待对方12.5 线程间的通信线程间利用共享变量进行通信12.6 线程的五种基本状态创建就绪运行中仅1个结束阻塞第13章 IO操作(Input Output)IO 就是Input Output的缩写 即输入输出操作 主要应用在 磁盘文件的读写应用程序是中心 就是内存中的一段地址空间把任何数据读入到应用程序 就是input把任何数据从应用程序写出 就是output13.1 File类文件类,主要用来创建文件或文件夹,获取文件信息等实例化: File(String directoryPath) 例如: File f = new File(“D:/good/ok.txt”);常用方法:createNewFile() 创建文件mkdir() 创建文件夹mkdirs() 创建多级文件夹getName() 取得文件名getPath() 取得文件路径getAbsolutePath() 得到绝对路径名getParent() 得到父文件夹名exists() 判断文件是否存在canWrite() 判断文件是否可写canRead() 判断文件是否可读isDirectory() 判断是否是目录isFile() 判断是否是文件isAbsolute() 是否是绝对路径名称lastModified() 文件最后的修改时间length() 文件的长度13.2 RandomAccessFile类 文件自由读写类,主要用来对文件进行精确的写入与读取。实例化: new RandomAccessFile(f,rw); / 读写方式new RandomAccessFile(f,r); / 只读方式常用方法:writeChars(str) 写入字符串writeUTF(str); 写入字符串(支持中文)readUTF(); 读取字符串(支持中文)readLine(); 读取一行13.3 流类 101011101010010010101作用: 用来处理字节、二进制数据、字符、字符串分类:二进制 例如:0100 0001n 字节流 处理字节或二进制对象 每8位二进制就是一个字节 例如:65n 字符流 处理字符或字符串 例如: An 管道流 可以连接两个线程间的通信n 打印流 print和println方法,将基本数据类型的格式转化成字符串输出使用方法:1、使用File类找到一个文件2、通过File类的对象去实例化字节流或字符流的子类3、进行字节(字符)的读、写操作4、关闭文件流13.4 字节流 配合byte数组13.4.1 InputStream(输入字节流)抽象的13.4.2 OutputStream(输出字节流)抽象的13.4.3 FileInputStream(文件输入流) 继承自InputStream把文件中字节内容读入到应用程序时实例化:FileInputStream(String filepath) FileInputStream(File fileObj)例如:File f = new File(c:test.txt); InputStream f1 = new FileInputStream(f);13.4.4 FileOutputStream(文件输出流) 继承自OutputStream从应用程序向文件输出数据实例化:FileOutputStream(String filePath) FileOutputStream(File fileObj) FileOutputStream(String filePath, boolean append)File f = new File(c:test.txt); InputStream f1 = new FileInputStream(f);13.5 字符流 配合char数组13.5.1 Reader 读入到应用程序 抽象的13.5.2 Writer 写出到文件 抽象的13.5.3 FileReader 从文件读入到应用程序 继承自Reader实例化:FileReader(String filePath) FileReader(File fileObj)13.5.4 FileWriter 从应用程序写出到文件 继承自Writer实例化:FileWriter(String filePath) FileWriter(String filePath, boolean append) FileWriter(File fileObj)输入完整文件路径创建请编写内容:写入文件显示文件内容:读取文件13.6 管道流管道流主要作用是可以连接两个线程间的通信13.6.1 PipedInputStream (字节)从管道中读入13.6.2 PipedOutputStream(字节)向管道中写出数据13.6.3 PipedReader (字符)从管道中读入13.6.4 PipedWriter (字符)向管道中写出数据 线程1线程2OutPut输出流InPut输入流13.7 System.in和System.out13.7.1 System.in 从键盘输入13.7.2 System.out 输出到显示器13.7.3 字节流与字符流的转换BufferedReader in=new BufferedReader(new InputStreamReader(System.in);13.8 打印流13.8.1 PrintStream 字节打印 bytePrintStream(OutputStream out) 13.8.2 PrintWriter 字符打印 PrintWriter(OutputStream) PrintWriter(Writer) 第14章 Socket网络通信14.1 Socket(套接字)介绍socket的英文原义是“孔”或“插座”。作为计算机网络的进程通信机制,取后一种意思。通常也称作套接字,用于描述IP地址和端口Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递。利用Socket类的方法,就可以实现两台计算机之间的通讯一个是getInputStream()方法, getInputStream()方法可以得到一个输入流,客户端的Socket对象上的getInputStream()方法得到的输入流其实就是从服务器端发回的数据流。一个是getOutputStream()方法。getOutputStream()方法得到一个输出流,客户端Socket对象上的getOutputStream()方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。Sockets有两种主要的操作方式:14.2 面向连接(使用TCP协议)需要发送请求 并得到同意才可以发送数据ServerSocket 服务器套接字day9_SocketClient服务器Server客户端ClientsocketsocketServerSocketPrintWriter请求InInOutOutReader通讯示例:14.3 无连接的(使用UDP协议)发送端 不需要 接收端同意 直接发送数据发送端接收端DatagramSocketDatagramPacket|端口端口|DatagramSocketDatagramPacketIp:接收端口:发言第15章 JDBC(Java DataBase Compoment)数据库操作15.1 jdbc 介绍jdbc 是sun 公司定义的一套访问数据库的规范( 接口 + 类),主要是放在 java.sql 包javax.sql 包. 原理图:15.2 做jdbc开发的几个前提1. 把 jar 包导入到你的java项目2. 导入import java.sql.* 有时 import javax.sql.*;3. 连接信息 (驱动器类型 数据库服务器ip地址 数据库名)例如: jdbc:sqlserver:/localhost:1433;DatabaseName=cenglishdb15.3 访问数据库用到的类15.3.1 Class反射类使用反射类 导入驱动例如: Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver “);15.3.2 DriverManager(驱动管理类) 用来创建数据连接例如: DriverManager.getConnection(connStr, sa, 123);将尝试找到可与那个URL所代表的数据库进行连接的驱动程序。 DriverManager类存有已注册的驱动类的清单。当调用方法 getConnection()时,它将检查清单中的每个驱动程序,直到找到可与URL中指定的数据库进行连接的驱动程序为止。 使用方法DriverManager. getConnection(连接信息,登录名,密码)15.3.3 Connection数据连接Connection 对象代表与数据库的连接,也就在已经加载的驱动和数据库之间建立连接。 通过DriverManager.getConnection方法我们可以获得一个连接。连接一旦建立就可以使用这个连接来向数据库发送SQL语句了。创建方法: Connection conn = DriverManager.getConnection(connectString, user, pwd);Connection 对象也支持事务控制try conn.setAutoCommit(false); /将自动提交设置为false ps.executeUpdate(修改SQL); /执行修改操作 ps. executeUpdate (查询SQL); /再执行修改操作 mit(); /当两个操作成功后手动提交 catch (Exception e) conn.rollback(); /一旦其中一个操作出错都将回滚,使两个操作都不成功 15.3.4 Statement适配器(读取器)接口 我们一般用Statement类向数据库发送SQL语句。 1.StatementStatement:由方法 createStatement所创建。Statement对象提供两

温馨提示

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

评论

0/150

提交评论