




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 高级的运行机制Java编译型&解释型(各自的特点)二、 Java的运行机制和JVM使用javac编译Java源文件生成 *.class文件(与平台无关)使用java解释执行(依靠java虚拟机(JVM)特定平台机器码经过先编译,后解释的步骤。三、 编译运行Java程序使用Javac命令。运行用java命令。四、 根据CLASSPATH环境变量定位类一旦设置了CLASSPATH环境变量,JRE将根据设置的变量来搜索java类。使用方法:java classpath dir1;dir2;dirn; Java类既不在当前路径搜索,也不再CLASSPATH指定的路径搜索。java classpath %CLASSPATH%;.; dir1;dir2;dirn; Java类指定当前路径既可以在当前路径搜索,也可以在CLASSPATH指定的路径搜索。五、 Java程序的基本规则1、 Java程序的组织形式Java程序是一种面向对象的程序设计语言,所以,程序必须以类的形式存在类是java程序的最小程序单位不允许可执行性语句、方法等成分独立存在,所有程序类部分放在类里面class TestJava解释器规定:如需某个类可以被解释器直接解释执行,则类必须包含mian方法,且main方法用public static void修饰,且main方法的形参一定是字符串数组类型String argsmain方法是java程序的入口其他方法被main方法直接或间接调用。2、 Java源文件的命名规则后缀为.java类定义用了public修饰,则源文件名必须与类名相同(一个源文件只能定义一个public类)建议:一个java源文件只定义一个类,不同的类用不同的源文件定义。让java源文件的主文件名与该源文件中定义的public类同名3、 初学者容易犯的错误CLASSPATH环境变量问题、大小写、路径包含空格六、 垃圾回收机制内存泄露:分配出去的内存的不到回收,引起系统运行速度降低,程序瘫痪。Java程序的内存分配与回收都由JRE后台自动进行。垃圾回收:JRE负责回收那些不使用的内存(堆内存的回收)。Java的堆内存是一个运行时的数据区,用于保护类的实例(对象),java虚拟机的堆内存中存储着正在运行的应用程序所建立的所有对象。可调用Runtime对象的gc()和System.gc()建议系统回收垃圾。原则:对于不再需要的对象,不要去引用。七、 何时使用IDE工具。Chapter2理解面向对象一、 面向对象程序设计简介类 生成 多个对象 映射成 客观世界的各种事物软件系统由多个类组成。类代表了客观世界中具有某种特征的一类事物(具有内部的状态数据)类定义=成员变量(状态数据)+方法(行为)-操作状态数据的方法二、 面向对象的基本特征封装、继承和多态-子类可以直接赋给父类变量(同一对象执行同一方法时,表现多种行为特征)软件复用(子类继承父类后,获得父类的属性和方法)隐藏实现细节,暴露功能抽象-只考虑部分特征Chapter3数据类型运算符一、 注释1) 单行/2) 双行/*/3) 文档注释-用javadoc工具提取一份系统的文档。API文档-用以说明应用程序接口的文档(通过调用应用程序接口(API)来编程)-说明类和方法的功能及用法。/*/二、 标识符与关键字三、 数据类型分类1) 基本类型整型:1、 默认值为int2、 将一个较小的整数值(byte或short范围内)赋给一个byte或short变量系统自动把这个整数值当成byte或short3、 如使用巨大数值(超过int),java不会把这个值当成long。(在这个数后面加l/L)字符型:浮点型:默认值double,要使为float在数值后家f/F。特殊的浮点类型:表示溢出和出错正无穷大(POSITIVE_INFINITY)-正浮点数/0负无穷大(NEGATIVE_INFINITY)-负浮点数/0非数(NAN)-0.0/0.0或者对负数开方所有正(负)无穷大相等、非数不等Double. POSITIVE_INFINITY=Float. POSITIVE_INFINITY注意:数值中使用下划线分割,便于阅读布尔型(boolean):true or false(占8个字节),使用boolean值与字符串连接(true+“ ”)boolean值转换为字符串2) 基本类型转换chardoublefloatlongintbyteeshort基本类型值和字符串值进行连接运算时,基本类型字符串类型System.out.println(3+4+Hello!);打印出“7 Hello!”System.out.println(Hello!+3+4); 打印出“Hello!34”3) 强制类型转换-(targetType)value(int)浮点数-取整数部分String a=45;int iValue=Integer.parseInt(a);/字符串转为基本类型4) 表达式的自动升级1、 byte、short、char提升到int2、 提升到与表达式中最高等级操作数同级5) 引用类型(类、接口和数组类型、null类型)=指针四、 直接量三种可以指定直接量的类型:基本类型、字符串、null类型1) Long后加l/L2) Float后加f/F3) Java支持一个类型的直接量赋给另一个类型的变量(自动类型转换)4) String类型的直接量不能直接赋给其它类型变量,null类型直接量可以赋给任何引用类型变量(包括String)5) 常量池-五、 运算符1) 算术运算符对0/0.0求余的结果是NaN2) 自加自减(注意左右的区别)3) 赋值运算符4) 位运算符(无符号右移)移位运算符规则1) 低于int型转为int型再移位2) int移位数b大于32是,先用b对32求余3) long型b大于645) 比较运算符1)(=)、4|b+10) 还会计算b+10if(a4|b+10) 不会计算b+107) 三目运算符(? :)Chapter4一、 顺序结构二、 分支结构1) if条件语句2) switch语句三、 循环结构1) while循环语句2) do while 循环语句3) for循环4) 嵌套四、 控制循环结构1) break-完全结束一个循环2) continue-忽略本次循环所剩下的语句3) return-结束方法五、 数组类型(引用类型)-一个数组只能存储一种数据类型-数组长度不能改1) 数组定义type arrayName;-未指向任何有效内存(不能定义长度)-没有内存空间来存储数组元素2) 数组的初始化-为数组元素分配内存空间,并为每个数组元素赋初值1) 静态初始化-程序员指定数组初始值,系统决定长度arrayName =new type -type可以是定义数组时的type,也可以是type的子类简化初始化:type arrayName=;2) 动态初始化-程序员指定长度,系统分配初始值arrayName =new typelength3) 使用数组ArrayNamen数组索引越界异常-java.lang.ArrayIndexOutOfBoundsException:N4) foreach循环for(type variableName: array/collection)5) 深入数组-数组元素和数组变量在内存中是分开存的-数组对象存储在堆内存中,数组引用变量存储在栈内存中-类型相互兼容,可以令一个数组变量指向另一个是指数组int a;a.length-数组长度1) 基本类型数组的初始化2) 引用类型数组的初始化-数组元素存储的还是引用,它指向另一块内存,这块内存里存储了有效数据。6) 没有多维数组-数组元素的类型是引用指向真实的内存1) 二维数组的定义及初始化type arrName;arrName=new typelength初始值为null例:int a;a0=new int 2;a01=6;同时初始化两个维数:int a=new int 34;使用静态方法初始化二维数组:String str1=new Stringnew String3,new String“he”;简化:String str1= new String3,new String“he”Chapter5-类可被认为是一种自定义的类型-类定义的变量都是引用变量(引用类的对象)-java使用类的构造器来创建该类的对象一、 类和对象-对象也被称为实例1) 定义类修饰符 class 类名0到多个构造器0到多个成员变量0到多个方法-修饰符可以是 public、final、abstract-成员之间可以相互调用,static修饰的成员不能访问没static修饰的成员1、 定义成员变量修饰符 类型 成员变量名=默认值-修饰符可以是public、protected、private、static、final 其中public、protected、private只能出现其中之一,可与static、final组合。2、 定义方法修饰符 返回值类型 方法名(形参列表)-修饰符可以是public、protected、private、static、final、abstract public、protected、private只能出现其中之一, final、abstract只能出现其中之一, 可与static组合。-定义了返回值类型,则方法体内必有return语句, 若一个方法无返回值,则用void声明。-static修饰的成员变量(方法)属于类本身,而不属于单个实例3、 构造器定义修饰符 构造器名(形参列表)-修饰符可以是public、protected、private中的一个。-构造器名必须与类名相同-可以将类的实例当成构造器的返回值-没有定义构造器时系统提供一个默认构造器2) 对象的产生和使用public class Personpublic String name;public int age;public void say(String content)System.out.println(content); 1、 创建对象Person p;p= new Person();或Person p= new Person();p的用途:-访问对象的实例变量-调用对象的方法-类或对象(实例)访问方法或成员变量的语法: 类.类变量|方法。实例.实例变量|方法-static修饰的方法和成员变量可以通过类也可以通过实例调用 无static修饰的只能通过实例调用2、 对象、引用和指针Person p= new Person();-产生了p变量及Person对象-Person需要内存(堆内存),p存储在栈内存并指向Person对象Person p2=p;指向同一个Person对象。3、 对象的this引用-this关键字总是指向调用该方法的对象 构造器中引用该构造器正在初始化的对象 方法中引用调用该方法的对象-this关键字的最大的作用就是让类中的一个方法访问该类的另一个或实例变量-this代表的只能是当前类的实例例子: public class Dogpublic void jump ()public void jump ()this.jumpthis可省略-static修饰的方法中不能使用this引用-static修饰的方法不能直接访问不使用static修饰的成员变量可用创作一个对象。new 类名().方法|变量-一般普通方法访问其他方法或成员变量无须this前缀但如果局部变量与成员变量同名时,而要访问被覆盖的成员变量必须用this前缀 -this在构造器中代表构造器正在初始化的对象,上一条适用-程序可以像访问普通引用变量一样来访问this引用,this可作为普通方法的返回值二、 方法详解1) 方法的所属性-方法只能在类里定义-方法属于类本身(static),或属于该类的一个对象-执行方法必须使用类或对象作为调用者-使用static修饰的方法可以使用类作为调用者,也可以使用对象作为调用者。 没用static修饰的方法只能使用对象作为调用者。2) 方法的参数传递机制-只有值传递(不影响参数本身)3) 形参个数可变的方法-最后一个形参的类型后加三点(),表示可以接受多个参数值。(当成数组)-一个方法只能有一个个数可变的形参(最后)4) 递归方法-一个方法体内调用它自身public static int fn(int n)Return 2*fn(n-1)+fn(n-2);-递归一定要向已知方向递归。-递归非常有用,例遍历某个路径下的所有文件5) 方法重载-一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同。 方法的其他部分与重载无关。-public void test(String msg) public void test(String books) 并不建议- /执行第二个test 。olv.test();olv.test(“aa”,”bb”); olv.test(new String“aa”); /执行第一个test 。olv.test(“aa”)三、 成员变量和局部变量-成员变量1) 实例变量(不以static修饰)-对应实例的生存时间2) 类变量(以static修饰)-作用域与这个类的生存的时间相同3)访问:类.类变量,实例.实例变量|类变量。-局部变量1) 形参(方法。)-整个方法内有效2) 方法局部变量-定义该变量到该方法结束时有效3) 代码块局部变量-定义该变量到该代码块结束时有效-局部变量除形参外,都要显式初始化。 成员变量则不用-局部变量可以和成员变量同名,但局部变量恢覆盖成员变量 可使用this(实例变量)或类名(类变量)1) 成员变量初始化和内存中的运行机制-当程序执行第一行代码Person p1=new Person();当系统第一次初始化这个类时加载这个类,并初始化。(为类变量分配内存空间指定默认初始值)类初始化完成后,系统会为Person类创建一个对象,并赋给p1(实例变量初始化)2) 局部变量初始化和内存中的运行机制局部变量存储在栈内存-栈内存中的变量无需垃圾回收系统,随着代码块或方法运行结束而结束3) 变量的使用规则-描述某个类或某个对象的固有信息则定义成员变量。-保存某个类或某个实例状态信息的的变量使用成员变量。-某个信息需要在某个类的多个方法之间进行共享,则使用成员变量保存这个信息-尽量减少局部变量的作用范围四、 隐藏和封装封装-将对象的状态信息隐藏在状态的内部,不允许外部程序直接访问对象的内部信息。-访问控制级别由小到大:private default(默认) protected public- private(当前类访问权限):类里的一个成员(构造器、成员变量、方法)使用private来修饰,则这个成员只能在这个类的内部被访问。(特别适合封装)- default(包访问权限):不使用任何修饰符,default访问控制的成员或外部类可以被相同包下的其他类访问。-protected(子类访问权限):可被包中的其他类访问,也可以被不同包中的子类访问-public(公共访问权限):可被所有类访问-对于外部类只能使用public和default(默认),使用public修饰的外部类可被所有类使用(声明变量、创建实例),默认修饰的外部类只能被同一包中的其他类访问。-原文件文件名必须与public修饰的类名相同-大部分成员变量应该用private修饰,只有一些用static修饰、类似全局变量的成员变量才考虑使用public-工具方法(辅助其他方法)用private修饰-某个类是其他类的父类,该类的大部分方法可能仅希望被子类重写,而不是直接调用,应用protected修饰。-希望暴露出来给其他类调用的方法应该使用public修饰,构造器通过使用public修饰,从而允许在其他地方创建该类的实例。1) package、import和import static-java引入包(package)机制,提供类的的层命名空间,用于解决类命名冲突、类文件管理等问题1、 将一个类放在指定的包结构下package packageName; -意味着源文件定义的所有类都属于这个包 -完整类名都应包含包名和类名的组合。2、 在lee包下在定义一个子包subPackage lee.subpublic class Apple();-必须使用 lee.sub. Apple来使用该类。创建处于其他包下的实例则调用构造器时要使用包前缀(lee.sub. Applea=new lee.sub. Apple()3、 import关键字-向某个java文件中导入指定包层次下的某个类或全部类。-import语句出现在package之后、类定义之前。-使用import导入某个类的用法:import lee.sub. Apple-使用import导入全部类的用法import lee.sub.*-一旦使用了import语句来导入指定类,源文件使用这些类时可以省略包前缀。-java默认为所有源文件导入java.lang包-有时使用了import语句也还需要使用类全名。(两个包下,有相同的类)4、 import static语句-用于导入指定类的某个精态成员变量、方法(或全部)1) 导入单个-import static package. subpackageClassName.fieldName|methodName2) 导入全部- import static package. subpackageClassName.*3) 使用import static语句可以省略类名5、 深入构造器(一般public)-用于创建实例时执行初始化。-初始化结果:基本类型的实例变量设为0,布尔型为false,引用类型实例变量设为null1) 构造器的重载-同一个类里里具有多个构造器,形参列表不同。-构造器B完全包含构造A(用this关键字)public Apple(String name,String color)public Apple(String name,String color,double weight)this(name,color);6、 类的继承-Java的继承具有单继承特点,每个子类只有一个直接父类(还有间接父类)修饰符 class SubClass extends SuperClass-子类不能父类的构造器1) 重写父类的方法-理由:如鸟类都包含了飞翔的方法,但鸵鸟是鸟的子类(但它不会飞翔)public class Bird。public class Ostrich extends Birdspublic void fly()。/重写原则:-两同:方法名相同、形参列表相同-两小:子类方法返回值类型比父类方法返回值类型更小或相等。子类方法声明抛出的异常类应比父类方法的声明抛出的异常类更小或相等 -一大:子类方法的访问权限应比父类方法的访问权限更大或相等。调用父类中的被覆盖的方法:super(被覆盖的:实例方法)或父类类名(类方法)作为调用者来调用父类中被覆盖的方法。 -父类方法具有pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版道德与法治四年级上册课堂教学实施计划
- 湘教版地理八年级下学期暑假预习计划
- 低保户补助申请书范文合集
- 如何签抖音公会合同协议
- 如何签宅基地的合同协议
- 宣传版制作合同范本模板
- 工人自愿合伙劳务协议书
- 土地才出让合同补充协议
- 康复护理院采购合同范本
- 婚纱店应聘模特协议合同
- 人工智能教学平台需求说明
- 井下支护工技能鉴定考试题及答案
- 汽车制造业生产与管理指南
- 重庆机场集团有限公司招聘笔试题库2024
- 2024年北京顺义九年级数学第一学期开学预测试题【含答案】
- 九年级化学下册 第十单元 酸和碱 10.1 常见的酸和碱教案1 (新版)新人教版
- 正常人体结构学电子教案 (中职教育)
- 不动产登记知识考试题库
- 液化天然气加气站安全检查表
- 太原极地海洋世界建设项目可行性研究报告-中咨国联
- 改革开放航天的成就课件
评论
0/150
提交评论