Java 核心编程讲义1.doc_第1页
Java 核心编程讲义1.doc_第2页
Java 核心编程讲义1.doc_第3页
Java 核心编程讲义1.doc_第4页
Java 核心编程讲义1.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1 Java编译环境配置和JVM1.1 JDK JDK Java Development Kit JRE Java Runtime Environment1.2 配置环境变量 JAVA_HOME=JDK根目录 PATH=%JAVA_HOME%bin; %PATH% CLASSPATH=.; %JAVA_HOME%/lib/dt.jar; %JAVA_HOME%/lib/tools.jar;1.2 JVM Java Virtual Machine JVM Java Virtual Machine Java class 的运行example:编译并运行Haha.Java2 Java面向对象基础2.1 一切都是对象 Java是基于C+,但是相比之下,Java是一种更“纯粹”的面向对象的程序设计语言。 Java中的对象是通过统一的对象标识符来操纵,这个标识符实际上就是对象的一个“引用”(reference)。创建对象的引用的方法:String s; 使用对象之前必须要创建类的实例:Integer i = new Integer(10);2.2 基本数据类型 Java中的特殊数据类型,不使用new创建。使用new创建一个很小的、简单的对象,往往不是很有效的。由于这些基本数据类型在程序中是频繁使用的,所以Java采取与C和C+相同的方法,不用new来创建基本类型的变量,而是直接创建一个变量,这个变量拥有值,因此更加高效。基本数据类型:基本类型大小最小值最大值包装器类型boolean-true or falseBooleanchar16-bitUnicode 0Unicode 215 - 1Characterbyte8-bit-2727 1Byteshort16-bit-215215 1Shortint32-bit-231231 1Integerlong64-bit-263263 1Longfloat32-bitIEEE754IEEE754Floatdouble64-bitIEEE754IEEE754Double每种基本类型所占的存储空间的大小是不变的,不随机器的硬件架构的变化而变化,这也是Java具有可移植的原因之一。特例:String也可以作为基本类型来对待。String s = “abc”;2.3 Java永远不需要销毁对象 对象引用的生命期在作用域的终点就结束了,因此对象无法被访问到了,这时对象所占的内存空间就成为内存中的“垃圾”。但是Java中根本不必担心内存回收的问题,内存垃圾的回收是由JVM自动完成的,从而避免了程序员因忘记释放对象的内存而产生的“内存泄漏”的问题。2.4 类和对象 类和对象类:定义某一系列对象的属性和行为。对象(实例instance):实际的个体。创建某个类的具体对象:类名欲创建的对象名 new 类名(参数列表);Integer s new Integer(10); 基本结构:class 类名 变量(数据成员data member or域field or 属性)定义;方法(method)定义; 变量和方法一旦定义了一个类,就可以在类中设置两种类型的元素:变量(域field,or数据成员data member)和方法(or 成员函数member function) 方法签名(signature)名称、参数列表main方法签名,主动类,类运行的起点。 构造函数1 与类同名2 new一个类时自动调用,对类实例进行初始化3 无返回值和类型,也无void4 若无显示定义,编译器自动生成默认构造函数(没有参数的构造函数)example: Car.java and UseCar.java2.5 编码风格 类名的首字母要大写,如果类名由几个单词构成,那么把它们并在一起(不推荐使用下划线来分隔),其中每个内部的单词的首字母都采用大写 变量、方法以及对象引用的名称,首字母小写,其它与类的风格一样。由于构造函数的名称必须与类名完全相同,所以“每个方法首字母小写”的编码风格并不适用于构造函数 常量一般采用全部大写,多个单词间用下划线分隔(不强制)3 对象初始化和清理3.1 Java通过构造函数确保初始化调用对象的方法前,必须初始化对象,否则抛出NullPointerException3.2 方法重载(overloading) 大多数程序设计语言(尤其是C)要求你为每个函数都提供一个独一无二的标识符 构造函数方法重载,用多种方式创建一个对象 普通方法的重载example:Tree.java区分重载方法:方法名相同,每个重载的方法都必须有一个独一无二的参数类型列表。甚至形式参数顺序的不同也足以区分两个方法(不过,一般情况下别这么做,因为这会使代码让人费解和难以维护)。不能以返回值区分重载方法。3.3 this关键字 在方法的内部获得对当前对象的引用(reference)。这个引用是由编译器传入:this 如果在方法内部调用同一个类的方法,就不必使用this,直接调用即可example:Person.java (方法中调用this) 构造函数中调用构造函数如果你为一个类写了多个构造函数,有时可能想在一个构造函数中调用另一个构造函数,以避免重复代码。你可用this 关键字做到这一点。example:Flower.java (构造函数中调用this)1 尽管你可以用this 调用一个构造函数,但你却不能用相同的方法调用两个构造函数。此外,你必须将构造函数调用置于最起始处,否则编译器会报错。2 除构造函数之外,编译器禁止你在其他任何方法中调用构造函数。3 static方法中不能调用this3.5 变量初始化 类的变量初始化example:InitialValues.java 初始化的顺序1static变量(只在class 加载时初始化一次)2成员变量(实例变量)3构造方法4缓式初始化(方法调用时,方法内的变量初始化)example:OrderOfInitial.java3.6 数组 相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号索引操作符 来定义和使用的。要定义一个数组,只需在类型名后加上一对空方括号即可:String ss; or String ss(类似C和C+)前一种格式或许更合理特点:类型相同,长度固定 基本数据类型数组初始化int a1 = 1, 2, 3, 4, 5 ;example:Arrays.javaa) 对象数组初始化example:ArrayInit.javab) ArrayIndexOutOfBoundsException4 封装在面向对象的设计中经常要考虑的一个问题就是如何隐藏实现的细节。4.1 包(package):程序库单元 将一组java文件组织在一起 强内聚 弱耦合example:Pac.javaJava 包的命名规则全部使用小写字母,包括中间的字也是如此无论何时你创建包,你都已经在给定包的名称的时候隐含地指定了目录结构。 创建独一无二的包名按照惯例,package名称的第一部分是反顺序的类的创建者的Internet 域名。Internet 域名应是独一无二的,因此你的package 名称也将是独一无二的,也就不会出现名称冲突的问题了example:Date.java 导入包(import)example:TestImport.java4.2 Java 访问权限修饰词(access specifier) public:公共(接口)访问权限,包内包外都可以调用 private:私有访问权限,只能在类的内部调用 example:IceCream.java,getter&setter方法 “default”:default package,默认访问权限,包内访问 protected:继承访问权限,包内可以调用,可以被包外的子类继承 example:Parent.java Child.java类的访问权限:public和default类(普通类,非内部类)既不可以是private的(这样会使得除该类之外再无其他类可以访问它)也不可以是protected的 。所以对于类的访问权限,仅有两个选择:包访问权限或是public5 继承继承是所有 OOP 语言和 Java 语言的组成部分。当你在创建一个类时,你总是在继承,因此,除非你已明确指出要从其他类中继承,否则你就是在隐式地从Java 的标准根源类java.lang.Object 进行继承。目标:代码的复用。按照现有类的类型来创建新类。你无需改变旧有类的形式,仅仅只是采用它的形式并在其中添加新代码,对父类进行扩展。表示“is-a”关系5.1语法5.2方法覆盖(overriden)example:TestEmp.java 比较overloading & overriddenOverloading:方法名相同,参数列表不同,方法体不同Overridden:不同类中,方法名相同,参数列表也相同(signature相同),方法体不同Override java.lang.Object.toString() 方法example: Apple.java5.3 super关键字直接父类对象的引用1 访问父类的成员变量和方法2 显式的调用父类的构造函数example:TestSuper.java5.4 upcasting(向上转型) 和downcast(向下转型)6 多态多态(polymorphism)通过分离“做什么”和“怎么做”。多态不但能够改善代码的组织结构和可读性,还能够创建“可扩展的”程序,即无论在项目最初创建时,还是在需要添加新功能时,都可以进行扩充。多态也称为动态绑定 dynamic binding、后期绑定 late binding 或运行时绑定 run-time binding)6.1基本含义接口定义“做什么”,子类定义“怎么做”example:TestMan.java6.2异类集合(共同的父类)与多态参数(简化接口)example:Music.java 类图可扩展性:Music.java Woodwind extend

温馨提示

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

评论

0/150

提交评论