java-打印.docx_第1页
java-打印.docx_第2页
java-打印.docx_第3页
java-打印.docx_第4页
java-打印.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

Java 复习资料第一章 Java 语言基础知识一 java 的特点与优点:特点: (1)面向对象安全性a) Java不支持指针b) Java的内部安全措施(2)平台无关性c) 编译后的字节码对应于Java虚拟机,因此可在不同平台上运行(3)多线程d) Java是第一个在语言级提供内至多线程支持的高级语言(4)内存管理e) Java对内存自动进行管理并进行垃圾回收l Java 语言的优点 易于学习 代码效率高 代码质量高 开发程序快 体系结构中立,纯Java程序不依赖于平台 一处编写,各处运行 软件易于发布二 变量定义:l Applet的优点 Web 浏览器软件包括很多小应用程序运行所需的功能l Applet的局限性 在客户端主机的文件系统中读/写受限 不能运行客户端主机的任何程序 仅能在服务器和客户端之间建立联系三 常见运算符标识符: 标识符是一个名称,与内存中的某个位置(地址)相对应 标识符的第一个字符必须是下列字符之一: l 大写字母 (A-Z) l 小写字母 (a-z) l 下划线(_) l 美元符号 ($) 标识符的第二个字符及后继字符必须是: l 上述列表中的任意字符 l 数字字符 (0-9) 第二章 类与对象的基本概念 一 类的定义:l 类 将属性及行为相同或相似的对象归为一类 类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为 在面向对象的程序设计中,每一个对象都属于某个特定的类, 二 访问权限:l 单继承 任何一个派生类都只有单一的直接父类 类层次结构为树状结构l 多继承 一个类可以有一个以上的直接父类 类层次结构为网状结构,设计及实现比较复杂l Java语言仅支持单继承l 声明形式public abstract | final class 类名称 extends 父类名称 implements 接口名称列表 变量成员声明及初始化; 方法声明及方法体;l 修饰符 可以有多个,用来限定类的使用方式 publicl 表明此类为公有类 abstractl 指明此类为抽象类 finall 指明此类为终结类 l 类声明体 变量成员声明及初始化l 可以有多个 方法声明及方法体l 可以有多个l 对象的创建 生成实例的格式:new () 例如: aclock=new Clock()其作用是:l 在内存中为此对象分配内存空间l 返回对象的引用(reference ,相当于对象的存储地址) 引用变量可以被赋以空值例如:aclock=null; 声明格式public | protected | private static finaltransient volatile变量数据类型 变量名1=变量初值, 变量名2=变量初值, ; 格式说明l public、protected、private 为访问控制符l static指明这是一个静态成员变量l final指明变量的值不能被修改l transient指明变量是临时状态l volatile指明变量是一个共享变量l 类变量 也称为静态变量,声明时需加static修饰符 不管类的对象有多少,类变量只存在一份,在整个类中只有一个值 类初始化的同时就被赋值 适用情况l 类中所有对象都相同的属性l 经常需要共享的数据l 系统中用到的一些常量值 引用格式.l 实例变量和类变量都可被声明为finall final实例变量必须在每个构造方法结束之前赋初值,以保证使用之前会被初始化l final类变量必须在声明的同时初始化 声明格式public | protected | private static finalabstract native synchronized返回类型 方法名(参数列表) throws exceptionList方法体 格式说明l 方法修饰 public、protected、private 为存取控制符 static指明方法是一个类方法 final指明方法是一个终结方法 abstract指明方法是一个抽象方法 native用来集成java代码和其它语言的代码 synchronized用来控制多个并发线程对共享数据的访问l 类的访问控制 类的访问控制只有public(公共类)及无修饰符(缺省类)两种 访问权限符与访问能力之间的关系如表类型无修饰public同一包中的类yesyes不同包中的类noyesl 类成员的访问控制 公有(public)l 可以被其他任何对象访问(前提是对类成员所在的类有访问权限) 保护(protected)l 只可被同一类及其子类的实例对象访问 私有(private)l 只能被这个类本身访问,在类外不可见 默认(default)l 仅允许同一个包内的访问;又被称为“包(package)访问权限”三 构造方法的调用l 构造方法 一种和类同名的特殊方法 用来初始化对象 Java中的每个类都有构造方法,用来初始化该类的一个新的对象 没有定义构造方法的类,系统自动提供默认的构造方法l 构造方法的特点 方法名与类名相同 没有返回类型,修饰符void也不能有 通常被声明为公有的(public) 可以有任意多个参数 主要作用是完成对象的初始化工作 不能在程序中显式的调用 在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化第三章 类的方法一 流程控制:(*)l 程序举例:例3.1 输入一个年份,判断它是不是闰年。 闰年: 能被4整除但不能被100整除,或者能被400整除。public class ex3_1 public static void main(String args) throws IOException int year; boolean IsLeapYear; System.out.println(Enter the year:); BufferedReader in =new BufferedReader( new InputStreamReader(System.in); year=(new Integer(in.readLine().intValue(); IsLeapYear=(year%4=0 & year%100 != 0)|(year%400 = 0); if (IsLeapYear) System.out.print(year); System.out.println( is a leap year); else System.out.print(year); System.out.println( is not a leap year); l 例3.2输入两个整数比较大小import java.io.*;public class ex3_2 public static void main(String args)throws IOException int x,y; BufferedReader in = new BufferedReader( new InputStreamReader(System.in); System.out.println(Enter x and y:); x=(new Integer(in.readLine().intValue(); y=(new Integer(in.readLine().intValue(); if (x!=y) if (xy) System.out.println(xy); else System.out.println(x= 90) grade = A; else if (testscore = 80) grade = B; else if (testscore = 70) grade = C; else if (testscore = 60) grade = D; else grade = F; System.out.println(Grade = + grade); 程序输出:Grade = Cl 使用switch结构计算每个月的天数static int daysInMonth(int month) int days; switch(month) case 2: days = 28; break; case 4: case 6: case 9: case 11: days = 30; break; default: days = 31; return(days); l 用switch语句实现成绩分类的功能public class Grade public static char gradeLevel(double g)int n = (int) (g/10);switch (n) case 10: case 9 : return(A); case 8 : return(B); case 7 : return(C); case 6 : return(D); default: return(E); public static void main(String args) System.out.println(gradeLevel(100)=+gradeLevel(100); System.out.println(gradeLevel(95.5)=+gradeLevel(95.5); System.out.println(gradeLevel(88)=+gradeLevel(88); System.out.println(gradeLevel(72)=+gradeLevel(72); System.out.println(gradeLevel(68.5)=+gradeLevel(68.5); System.out.println(gradeLevel(60)=+gradeLevel(60); System.out.println(gradeLevel(59.5)=+gradeLevel(59.5); System.out.println(gradeLevel(35)=+gradeLevel(35); l ex3_3 输入06之间的某一个整数,然后把它转换成星期 输出。(0对应星期日)import java.io.*;public class ex3_3 public static void main(String args)throws IOException int day; BufferedReader in =new BufferedReader( new InputStreamReader(System.in); day=(new Integer(in.readLine().intValue(); switch (day) case 0: System.out.println(Sunday); break; case 1: System.out.println(Monday); break;case 2: System.out.println(Tuesday); break; case 3: System.out.println(Wednesday); break; case 4: System.out.println(Thursday); break; case 5: System.out.println(Friday); break; case 6: System.out.println(Saturday); break; default: System.out.println(Day out of range Sunday .Saturday ); break; 例:public class MultiTable public static void main(String args) for (int i=1; i=9;i+) for (int j=1; j=i;j+) System.out.print( +i+*+j+=+i*j); System.out.println(); l 运行结果如下: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81l 输入一个整数,输出它所有的因数import java.io.*;public class ex3_7 public static void main(String args) throws IOException int n,k; BufferedReader in =new BufferedReader( new InputStreamReader(System.in); System.out.println(Enter a positive integer: ); n=(new Integer(in.readLine().intValue(); System.out.print(Number +n+ Factors ); for (k=1; k = n; k+) if (n % k = 0) System.out.print(k + ); System.out.println(); l 逗号运算符 可用在 for 循环控制表达式的初始化和递增两部分。在这两部分中可以存在多个由逗号分隔的语句,这些语句会被依次计算public class ex3_8 public static void main(String args) for(int i = 1, j = i + 10; i 5; i+, j = i * 2) System.out.println(i= + i + j= + j); l 运行结果如下:l i=1 j=11l i=2 j=4l i=3 j=6l i=4 j=8例:计算数列1,2,10 的和。public class ex3_4 public static void main(String args) int i=1, sum=0; while(i=10) sum+=i; i+; System.out.println(sum=+sum); l 计算存款收益:假设银行中存款10000元,按11.25%的利率,一年后连本带利将变为11125元。你若将此款继续存入银行,试问多长时间就会连本带利翻一番import java.text.*;public class Examp3_4 public static void main(String args) double original,money,interest; int years = 0; original = money= 10000; interest = 11.25 / 100; System.out.println(year money); while (money 2 * original) years = years + 1; money = money + (interest * money); System.out.println( + years + + new DecimalFormat(0.00).format(money); System.out.println(); System.out.println( 第 + years + 年存款额达到 + new DecimalFormat(0.00).format(money) + 元。); l 运行结果year money 1 11125.00 2 12376.56 3 13768.93 4 15317.93 5 17041.20 6 18958.33 7 21091.14 第 7 年存款额达到 21091.14元l 输入一个整数,然后输出它的翻转形式import java.io.*;public class ex3_5 public static void main(String args)throws IOException int n, right_digit, newnum = 0; BufferedReader in = new BufferedReader( new InputStreamReader(System.in); System.out.println(Enter the number: ); n=(new Integer(in.readLine().intValue(); System.out.print(The number in reverse order is ); do right_digit = n % 10; System.out.print(right_digit); n /= 10; while (n != 0); System.out.println(); l 简单break应用举例public class BreakTest public static void main( String args ) String output = ; int i; for ( i = 1; i = 10; i+ ) if ( i = 5 ) break; / break loop only if count = 5 output += i + ; output += nBroke out of loop at i = + i; System.out.println(output); l 运行结果1 2 3 4Broke out of loop at i = 5l 在嵌套循环中使用break语句:使用下面的程序来实现例3-4的九九乘法表public class Examp3_6public static void main(String args) for (int i=1; i=9;i+) for (int j=1; j i) break; System.out.print( +i+*+j+=+i*j); System.out.println(); l break与label一同使用举例public class Examp3_7public static void main(String args)outer:for (int i=1; i=9;i+) for (int j=1; j i) break; if (i=6) break outer; System.out.print( +i+*+j+=+i*j); System.out.println(); l 运行结果 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25l 简单的continue语句举例public class ContinueTestpublic static void main( String args ) String output = ; int i; for ( i = 1; i = 10; i+ ) if ( i = 5 ) continue; / skip remaining code in this loop output += i + ; output += nUsing continue to skip printing 5; output += ni = + i; System.out.println(output); l 运行结果1 2 3 4 6 7 8 9 10Using continue to skip printing 5i = 11l 打印2到9之间的偶数的平方,但是不包括偶数6的平方public class Examp3_9public static void main (String args) for (int i=2; i=9; i+=2) if (i=6) continue; System.out.println(i*i); l 九九乘法表也可用下面的程序来实现public class Examp3_10public static void main (String args) outer: for (int i=1; i10; i+) inner: for (int j=1; j10; j+) if (ij) System.out.println(); continue outer; System.out.print( +i+*+j+=+i*j); l 当执行到满足条件ij时,跳出inner循环,直接跳到outer循环,计算并修改i的值,进行下一轮的循环二 异常处理:java处理错误的方法 抛出(throw)异常l 在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常 捕获(catch)异常l 运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止l Java预定义的一些常见异常 ArithmeticExceptionl 整数除法中除数为0 NullPointerException l 访问的对象还没有实例化 NegativeArraySizeException l 创建数组时元素个数是负数 ArrayIndexOutOfBoundsExceptionl 访问数组元素时,数组下标越界 ArrayStoreExceptionl 程序试图向数组中存取错误类型的数据 FileNotFoundExceptionl 试图存取一个并不存在的文件 IOExceptionl 通常的I/O错误其中前五个为非检查性异常,后两个为检查性异常l 捕获异常说明 try 语句 l 其后跟随可能产生异常的代码块 catch语句l 其后跟随异常处理语句,通常用到两个方法 getMessage() 返回一个字符串对发生的异常进行描述。 printStackTrace() 给出方法的调用序列,一直到异常的产生位置 finally语句l 不论在try代码段是否产生异常,finally 后的程序代码段都会被执行。通常在这里释放内存以外的其他资源l 注意事项 在类层次树中,一般的异常类型放在后面,特殊的放在前面第四章 类的重用一 object类:l Object类 Java程序中所有类的直接或间接父类,类库中所有类的父类,处在类层次最高点 包含了所有Java类的公共属性,其构造方法是Object( )二 终结类与终结方法 被final修饰符修饰的类和方法 终结类不能被继承 终结方法不能被当前类的子类重写三 抽象类 代表一个抽象概念的类 没有具体实例对象的类,不能使用new方法进行实例化 类前需加修饰符abstract 可包含常规类能够包含的任何东西,例如构造方法,非抽象方法 也可包含抽象方法,这种方法只有方法的声明,而没有方法的实现l 抽象方法 声明的语法形式为public abstract (.); 仅有方法头,而没有方法体和操作实现 具体实现由当前类的不同子类在它们各自的类声明中完成 抽象类可以包含抽象方法名称解释String replace(char oldChar, char newChar); 将接收者字符串的oldChar替换为newCharint compareTo(String s); 将接收者对象与参数对象进行比较boolean equals(String s);接收者对象与参数对象的值进行比较String trim( ); 将接收者字符串两端的空字符串都去掉String toLowerCase()将接收者字符串中的字符都转为小写String toUpperCase()将接收者字符串中的字符都转为大写l StringBuffer类 其对象是可以修改的字符串l 字符的个数称为对象的长度(length)l 分配的存储空间称为对象的容量(capacity) 与String类的对象相比,执行效率要低一些该类的方法不能被用于String类的对象l 生成StringBuffer类的对象 new StringBuffer(); l 生成容量为16的空字符串对象 new StringBuffer(int size); l 生成容量为size的空字符串对象 new StringBuffer(String aString); l 生成aString的一个备份,容量为其长度 +16名称解释int length ( )返回字符串对象的长度int capacity( )返回字符串对象的容量void ensureCapacity(int size)设置字符串对象的容量void setLength(int len)设置字符串对象的长度。如果len的值小于当前字符串的长度,则尾部被截掉char charAt(int index)返回index处的字符名称解释void setCharAt(int index, char c)将index处的字符设置为cvoid getChars(int start, int end, char charArray, int newStart)将接收者对象中从start位置到end-1位置的字符拷贝到字符数组charArray中,从位置newStart开始存放StringBuffer reverse( )返回将接收者字符串逆转后的字符串StringBuffer insert(int index, Object ob)将ob插入到index位置StringBuffer append(Object ob)将ob连接到接收者字符串的末尾l Calendar类 一个抽象的基础类,支持将Date对象转换成一系列单个的日期整型数据集,如YEAR、MONTH、DAY、HOUR等常量 它派生的GregorianCalendar类实现标准的Gregorian日历 由于Calendar是抽象类,不能用new方法生成Calendar的实例对象,可以使用getInstance()方法创建一个GregorianCalendar类的对象l Calendar类中声明的常量 Calendar.SUNDAY Calendar.MONDAY Calendar.TUESDAY Calendar.SATURDAY Calendar.JANUARY Calendar.FEBRUARY Calendar.AM l Calendar类中的方法 isLeapYear(int year) 返回给定的年份是否是润年 get(int field) 取得特定Calendar对象的信息l aCalendar.get(java.util.Calendar.YEAR); l aCalendar.get(java.util.Calendar.MONTH); l aCalendar.get(java.util.Calendar.DAY_OF_WEEK); l aCalendar.get(java.util.Calendar.MINUTE);l . set(int field, int value) 给日期域设定特定的值l aCalendar.set(Calendar.MONTH, Calendar.JANUARY); l aCalendar.set(1999, Calendar.AUGUST, 15); l Java.util.GregorianCalendar类 用于查询及操作日期 构造方法l new GregorianCalendar() / 当前日期 l new GregorianCalendar(1999, 11, 31) / 特定日期 l new GregorianCalendar(1968, 0, 8, 11, 55) / 日期和时间 getTime()方法 返回Date对象,显示日历l System.out.println(new GregorianCalendar().getTime(); l System.out.println(new GregorianCalendar(1999, 11, 31).getTime(); l System.out.println(new GregorianCalendar(1968, 0, 8, 11, 55).getTime(); 第五章 接口与多态接口,多重继承:l 接口的语法 声明格式为接口修饰符 interface 接口名称 extends 父接口名/方法的原型声明或静态常量 接口的数据成员一定要赋初值,且此值将不能再更改,允许省略final关键字 接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字第六章 输入/输出流和文件一 字符的输入与输出:l 面向字符的抽象类Reader和Writer java.io包中所有字符流的抽象基类 Reader提供了输入字符的API Writer提供了输出字符的API 它们的子类又可分为两大类l 节点流:从数据源读入数据或往目的地写出数据l 处理流:对数据执行某种处理 多数程序使用这两个抽象类的一系列子类来读入/写出文本信息l 例如FileReader/FileWriter用来读/写文本文件l InputStream和OutputStream 是用来处理8位字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息 分为两部分l 节点流l 处理流l 在C盘根目录创建文本文件Hello.txt,并往里写入若干行文本import java.io.*; class Ex6_2 public static void main ( String args ) throws IOException /main方法中声明抛出IO异常 String fileName = C:Hello.txt; FileWriter writer = new FileWriter( fileName ); writer.write( Hello!n); writer.write( This is my first text file,n ); writer.write( You can see how this is done.n ); writer.write(输入一行中文也可以n); writer.close(); l 打开C盘根目录下的Hello.txt文件换行有些问题,例6_4中将解决这个问题每次运行这个程序,都将删除已经存在的”Hello.txt”文件,创建一个新的同名文件FileWriter的构造方法有五个,本例是通过一个字符串指定文件名来创建FileWriter类的write方法向文件中写入字符l Writer类的流可实现内部格式到外部磁盘文件格式的转换 “Hello.txt”是一个普通的ASCII码文本文件,每个英文字符占一个字节,中文字符占两个字节 close方法清空流里的内容并关闭它。如果不调用该方法,可能系统还没有完成所有数据的写操作,程序就结束了l 处理IO异常import java.io.*; class Ex6_3 public static void main ( String args ) String fileName = c:Hello.txt ; try /将所有IO操作放入try块中 FileWriter writer = new FileWriter( fileName ,true ); writer.write( Hello!n); writer.write( This is my first text file,n ); writer.write( You can see how this is done. n ); writer.write(输入一行中文也可以n); writer.close(); catch ( IOException iox) System.out.println(Problem writing + f

温馨提示

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

最新文档

评论

0/150

提交评论