java基础理论知识串讲_第1页
java基础理论知识串讲_第2页
java基础理论知识串讲_第3页
java基础理论知识串讲_第4页
java基础理论知识串讲_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、Java基础理论知识串讲,第一章 Java概述,Java程序的编写、编译和执行,编写代码 可使用任何文本编辑软件编写,比如记事本 源代码文件的扩展名为.java 编译 使用JDK的编译命令javac进行编译 如:javac Hello.java 编译后生成扩展名为.class的字节码 运行 使用JDK的解释器java运行 如:java Hello,application vs. applet不同点,Java application 由Java解释器独立运行字节码 程序中包含main方法 Java applet 不能独立运行,字节码必须嵌入HTML文档(有标记) 源程序必须是java. appl

2、et. Applet 类或javax.swing.JApplet类的子类,一个简单的 application,/Welcome.java public class Welcome public static void main(String args) System.out.println(“Hello World!”); ,源文件名要和该 public类相同,注意String和 System要大写,编写Java源程序的注意事项,Java语言区分大小写,包括文件名 源文件的名字必须和源代码中被public修饰的类相同,如果没有public类可以可以任意命名(不推荐)。 源文件扩展名必须为.ja

3、va,第二章 基本语法,标识符,是用户定义的用于表示变量名、类名、接口名、方法名、方法的参数名等符号。,标识符的命名规则,由字母、数字、下划线_、美元符号$组成 首字母不能是数字 不能是保留字(50个) 标识符区分大小写,练习,下列哪些是合法的标识符: a ,4abc , _test, class 123abc, $test , a,Mr.wang import ,abc#d ,半径, a1,基本数据类型,Java中共八种基本数据类型: 数值型(四种整型,两种浮点型) 字符型(char一种) 布尔型(boolean一种),数值数据类型,类型名称 位数 表示范围 byte 8 bit -128

4、127 short 16 bit -32768 32767 int 32 bit long 64 bit float 32 bit 七位小数(单精度浮点数) double 64 bit 十五位小数(双精度浮点数) char 16bit 16位的Unicode编码,类型转换,精度由高到底排序: double float long int short byte,数值类型转换,总可以将低精度的值赋给高精度类型的变量。 比如:double i=10; 但是,如果不进行强制类型转换,就不能将高精度类型的值赋给低精度类型的变量。,类型转换,类型转换是一种操作,它把一种数据类型的值转换成另一种数据类型。 用

5、于由高精度向低精度要进行强制类型转换; 例如: float f = 10.1;(错,浮点型数默认为double型。) float f = (float)10.1; int i = (int)f;,数值类型转换,Java中当两个类型不同的运算对象进行二元运算时,Java 自动 把精度较低的类型转换成另一个精度较高的类型。 见书17页类型转换基本规则,算术运算符,算术运算符包括:+, -, *, / 和 %。 整数除法的结果是整数,如5/2= 2而不是2.5,1/20。 运算符%得出除法的余数,如5%2=1 。,赋值运算符,基本赋值运算符(=) 复合赋值运算符(如+=) 注意:赋值运算符=的左边只

6、能是变量,不能是表达式,而右边可以是数值也可以是表达式 如a=a+3 (正确) a=b=2(正确) a=a+5=9(错误,=的左边不能是表达式),增量运算符和减量运算符,前置增量/减量运算符:变量先加1或减1,再参与表达式中的运算。 +x 或者 x 后置增量/减量运算符:变量先参与表达式的运算,再加1或减1。 x+ 或者 x,比较运算符,运算符名称例结果 大于12false =大于等于1=2false =等于1=2false !=不等于1!=2true,逻辑运算符,运算符 名称描述 ! 非 逻辑否定,取反 break; case 值2: 语句组2; break; case 值N: 语句组N;

7、break; defalut:缺省语句组; ,注意:表达式结果类型: byte,short,int或者char,while 循环,while循环的语法如下: while (循环条件) / 循环体; ,do循环,do循环是while循环的变体。 do / Loop body; while (循环条件); (注意最后的分号!),for 循环,for循环的语法如下: for (循环变量初始化;循环条件;调整语句) /循环体; ,for循环,如果循环条件省略,就意味着条件为真。 下述语句也是正确的 for(;),break和continue关键字,语句break和语句continue,可以用在循环语句

8、中为循环提供附加控制。 break:立刻终止包含它的最内层循环。 continue:只结束当前迭代,将程序控制转移到循环的下一次迭代。,要求会封装方法,不要把所有的代码都写在main方法中,main方法一般都是进行调用方法的。 比如编写方法判断一个数是否是水仙花数。(考察大家编写实现某功能的方法,并在main方法中调用该方法),第三章 面向对象思想,对象,对象的要素 对象的属性(特征、状态、组成) 对象的行为(改变状态、传递消息) 对象的标识 (每个对象都有个标号),对象和类型之间的关系,对象是具体的,类型是抽象的 创建的是类型,使用的是对象,第四章 类与对象,类的定义,修饰符 class 类

9、名 属性定义 构造方法定义 方法定义 ,属性定义,语法: 表示可有可无 修饰符 类型 属性名= 初值 ; 类型可以是任何类型,包括8种基本数据类型或自定义的引用类型(即属性可以由一个类的对象充当)。 属性有默认值。,方法定义,语法: 修饰符 返回值类型 方法名(参数列表) 语句(组); return语句; ,构造方法用于对象的初始化,构造方法名与类名一致 构造方法没有返回值类型 如果没有定义构造方法,系统会生成一个默认的无参的构造方法 构造方法只能用new在创建对象时调用,不能通过对象名调用,练习,定义一个矩形类,该类有长和宽两个属性,试定义构造方法,包括:默认无参的构造方法,为长和宽指定初值

10、的构造方法。,创建对象,创建对象的语法: 类名 对象名 /这是对象的声明 对象名 new 类名();/真正创建对象 调用对象属性和方法的语法: 对象名.属性名 对象名.方法名,练习,定义一个教师类,属性有教师的名字,性别,年龄,教师都是有头发的且默认是黑颜色的。试定义构造方法及显示教师基本信息的方法,并定义一个对象将信息显示出来。,方法的重载(概念一定要理解掌握),重载:一个类中如果同时存在多个方法名相同,参数列表不同的方法,则他们之间的关系称为重载。 要求重点掌握该知识点,方法重载,例: int max(int a , int b) double max(double a , double

11、b) int max(int a , int b , int c) 要点:方法名相同、参数列表不同(包括参数数目,参数出现的顺序或参数的类型不同)。返回值类型可以相同也可以不同。,构造方法的重载,构造方法的重载与方法的重载相同,关键字this,this代表类的当前对象 利用“this.”可以调用当前对象的成员 this可以实现构造方法的调用 利用this(参数)可以调用构造方法 必须写在构造方法的第一条,对象做方法的参数,基本数据类型做方法的参数传递的是数值。 对象也可做方法的参数传递的是引用(即地址),变量和属性的作用域,属性是定义在类中所有方法外的变量(有默认值);而方法内定义的变量是局部

12、变量(无默认值)。 属性不管在何处声明,它的作用范围是整个类; 局部变量的使用范围是从声明它的那一点到距离它最近的右大括号之间。,包(包中放着好多类),声明包的方法 package 包名称; 注意:package必须写在程序的第一条,引入包中的类,使用其他包中的public类 常用是:关键字 import 包名.类名; 如:import java.applet.Applet; 也可以引入整个包 例如: import java.util.*;,访问控制修饰符(要掌握),类成员的访问控制修饰符 public:包内包外可访问 protected:包内包外子类可访问 默认:包内可访问 private:

13、类内可访问,访问器方法,设置方法 void set属性名(属性类型的参数) 比如:对属性radius void setRadius(double radius) 获取方法 属性类型 get属性名() 比如:double getRadius(),static,静态属性 用static修饰的属性,也称为类属性 用于描述一类对象共享的属性 比如:员工的最低工资,学生的学校名称等等,static,静态方法 用static修饰的方法,也叫类方法 写静态方法时要注意,方法中不能访问非静态成员,注意:,不加static修饰的属性或方法,必须用对象去调用。 被static修饰的属性或方法可通过类名直接调用,也

14、可通过对象调用 比如:Teacher例子中可设学校名的属性为静态的,试考虑可以如何调用该属性。,第5章 继承,继承的语法,修饰符 class 子类名 extends 父类名 类体; 例如:class Apple extends Fruit ,【注】Java只支持类单重继承,即只有一个父类的继承关系,要点,在继承中: 子类可以得到父类的属性和方法。 子类可以添加新的属性和方法。 子类可以重新定义父类的属性和方法。 (子类中的内容比父类丰富),属性隐藏,子类可以定义与父类同名的属性,称为属性隐藏。即子类可以重新定义父类的属性。,调用属性的规则:,先在当前类中找,如果没有再到其父类中找。 如果想要调

15、用被隐藏的父类属性,静态属性可以使用“类名.属性名”;非静态属性可以用“super.属性名” 用法见课后习题P156,10题,方法的覆盖,在子类中可以定义与父类方法头相同的方法,称为方法的覆盖。 也可以说,通过方法覆盖,子类可以重新定义父类的方法。,方法覆盖要注意:,子类在重新定义父类中的已有方法时,应保持和父类中该方法相同的方法头,即有完全相同的方法名、返回值类型和参数列表。 方法覆盖时,子类方法不能缩小父类方法的访问权限。比如:父类的方法如果是protected,子类方法只能是protected或者public,继承关系中的构造方法,在创建子类对象时,先调用父类构造方法,然后再调用子类构造

16、方法 默认情况下,子类调用父类无参的构造方法,super,在子类中调用父类的属性和方法 super指当前类的父类对象,所以不能在静态方法中使用。 在子类构造方法中显示调用父类的构造方法。 必须写在子类构造方法的第一条。,总结:this 和super的用法,this代表当前类的对象;super代表当前类的父类对象。 this可以调用当前类当中的其他构造方法,而super可以在子类中调用其父类中的构造方法。 注意:this和super都不能用在static修饰的方法内;并且this和super不能同时使用,因为都需要放在第一条语句上。,Final使用要点,final可以修饰: 属性或局部变量,不能

17、被修改(常量) 方法,不能被覆盖(最终方法) 类,不能被继承(最终类),abstract使用要点,abstract类 不能实例化,只能用于继承 abstract方法 只有方法头,没有方法体 只能定义在抽象类中 注意: 抽象类中可以有具体方法 抽象类中的抽象方法在其非抽象子类中必须实现(覆盖),父子类对象的使用和转化,父子类的对象在某些情况下可以相互转化。,转化原则,子类对象可以当作父类对象使用 父类对象不能当作子类对象使用 如果父类引用实际指向的是子类对象,那么该父类引用可以通过强制转换成子类对象使用,说明,比如父类是:A,子类是:B B b= new B();/创建子类对象 A a= new

18、 B();/创建子类对象但把它定义成父类类型的,它就可以当成父类的对象来用 (类似于:double i=12,整型的12可以当成浮点数来用),说明,但反过来int i=12.5可以么? 只能int i=(int)12.5。 同理B b=new A()/也不可以,父类的对象不能把他当成子类类型的 除非:A a=new B() B b=(B)a; a仍然还是父类类型的,但可以当成子类对象来用。,说明,如果一个方法的形式参数定义的是父类的对象,那么在调用这个方法时可以使用子类的对象来作为实际的参数;(因为子类对象就可以当成父类对象来用) 见书139页例题,多态性与方法的动态绑定,多态:一种功能有多种

19、实现。通过方法的重载和覆盖可以实现多态。 动态绑定:方法体的调用是在程序执行时动态决定的。即调用一个方法时看到底是哪个对象在调用方法。而属性不能动态绑定。,练习,定义一个Fruit类,属性有颜色color,产地place,质量quality,该类有一个方法eat,可用打印语句描述水果能吃。该类有子类Apple类,它有自己特有的属性:品种variety,也有eat方法表示苹果能吃。,第6章 接口和内部类,接口的作用,提供功能规范的、能够多重继承的、特殊的抽象类。 接口中只能定义静态常量和抽象方法。,接口定义的语法,public interface 接口名 extends 父接口列表 / 属性声明

20、 public static final 属性类型 属性名 = 常量值 ; / 方法声明 public abstract 返回值类型 方法名 ( 参数列表 ) ; 注意: 1修饰接口的修饰符只有public和默认修饰符两种。 2接口可以是多重继承。接口只能继承接口,不能继承类。 3属性必须是常量(有初值),方法必须抽象(无方法体)。,接口的实现,类通过implements关键字来实现接口。 类必须实现(覆盖)接口中描述的方法。 这就体现接口的好处,会强制实现它的类必须得有并且实现接口中定义的方法,否则该类就不能实例化,类实现接口的语法,class 类名 extends 父类 implement

21、s 接口列表 覆盖所有接口中定义的方法; 注意: 1、一个类可以同时实现多个接口,但只能继承一个类 2、类中必须覆盖接口中的所有方法,而且,都是公开的,内部类,也叫做内嵌类,是一种定义在其他类内部的类。 内部类相当于外部类的一个成员 可以访问外部类的所有其他成员 使用受到外部类的限制,第7章 异常处理,异常处理的作用,为程序员提供一种解决运行时错误的方法。以保证程序的正常运行。 当程序遇到运行错误时,会产生并抛出一个信号(异常),然后通过try-catch语句捕获这个信号(异常),这样就可以根据这个信号(异常)的不同进行相应的处理。,异常处理语法,try 可能抛出异常的语句组; catch (

22、 异常类1 e) 异常处理语句组1; . catch ( 异常类n e) 异常处理语句组n; finally 语句组; ,异常处理流程,未产生异常情况: try语句结束后,不再执行catch语句 产生异常并捕获成功情况: try语句在产生异常处中断,转到catch语句执行; 产生异常未捕获情况: 所在方法中断; 写在finally子句中的语句无论异常是否产生,无论产生的异常是否捕获成功都要执行,异常的抛出语法,在某个方法中 if(条件判断) throw (new 异常类名); ,异常声明(异常报告),如果一个方法中可能会存在异常,则需要在该方法头上用throws关键字声明该异常。 如果某方法头

23、部有throws声明异常,则调用该方法时建议强制用try catch捕获,或用throws声明。,String类,Java中使用String类的对象表示字符串,定义字符串两种方法: 例如: String s1 = “ this is a string”; String s2 = new String(“another”); String s3 = s1+s2;,String类中常用方法,boolean equals(Object o) 判断该字符串是否与目标字符串相等,String类中常用方法,int length() 获取字符串的长度 char charAt(int index) 获取指定位

24、置的字符,index从0开始 String substring(int from,int end) 包括from,不包括end位置上的字符 String substring(int from) 获取字符串的子串,String类中常用方法,int indexOf(char c) int indexOf(char c,int from) int indexOf(String s) int indexOf(String s,int from) 查找指定字符或者字符串的位置,如果未找到返回1,StringBuffer,String构造的字符串一旦创建不能修改 StringBuffer的内容可以修改 常用方法append(Stri

温馨提示

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

最新文档

评论

0/150

提交评论