1、8.Java开发程序环节? 编写源代码 (2)编译 (3)执行9.Java环境变量1)JAVA HOME jdk安装途径2)CLASSPATH jvm转载class字节码文献时搜索途径3)PATH 是系统环境变量、命令搜索途径10.JVM :Java Virtual Machine 是一种逻辑操作系统、它屏蔽了硬件和平台信息、jvm能将字节码文献解释并执行、正是这种独立执行方式是Java 具备与平台无关特性。11.类加载过程:类加载器加载字节码文献到内存、jvm内存数据区将对象状态放置在堆区、各线程使用变量放在栈区、类特性放在办法区、然后进行字节码验证再执行。12.惯用Java命令:Javac
2、、java、javadoc、jar13.类语法与规范一种源文献只能有一种public类Public源文献可以有各种类定义源文献名必要与public类名保持一致包名必要放在第一行包名可以有0个或1个但不能有各种源文献如果带包话 最佳存储在包构造相应目录下标记符 程序语言用于标记 变量名 类名 办法名 字符串就是标记符。标记符必要字母 下划线 美元符开头 大小写敏感。类名规定首字母大写办法名首字母小写 每个单词首字母大写常量名所有字母大写 如果有两个或几种字母联合用下划线连接核心字:程序语言中、程序已经所有顾客不能再使用单词 普通核心字都是小写14 .数据类型: 基本数据类型:整 型(byte、s
3、hort、int、long)默认是int浮点型(float、double)、默认是double布尔型(boolean)、字符型(char) 引用类型:类、接口、数组15 .main()办法执行过程 1)先到办法区搜索student、如果搜索不到则去加载student字节码文献 2) 通过classpath查找相应student字节码文献 找不到就返回错误(ClassNotFound) 3)将字节码文献二进制数据转换为class对象放置于办法区( class对象描述了student类办法特性及静态成员等) 加载完毕 4)验证字节码文献 5)在堆区中划分空间放置student对象 6)在栈区放置应
4、用类型变量 stu 、stu指向student对象地址 7)student对象存储了class对象地址 8) 通过student stu引用类型变量值找到student对象 、通过student对象 存储class对象地址找到相应study()办法然后执行。 9)释放资源 jvm运营结束16 .基本类型和引用类型区别 引用类型存储是对象地址、基本类型存储是变量实际值 引用类型变量可用指向复杂数据构造 引用类型变量可使用“.”操作来访问它所指向办法或属性17 .表达式运算符和操作数按照一定规则构成语句.赋值运算符“=”比较运算符 “”“=”相等运算符“=”位运算符 :取反、 :异或、| :或、&
5、 :与 逻辑运算符 “&” “|” 条件运算符 a ?b :c18. 变量作用域(1)类成员变量: 静态成员变量:生命周期 从类加载开始到类被卸载结束 初始化后被放在办法区 实例成员变量:变量初始化放在堆区、生命周期从生成对象开始到对象被回收时结束(2)局部变量:办法或代码块中定义变量、局部变量从栈区弹出结束、局部变量在使用前必要初始化(3)办法参数(4)异常参数19 .数组:是相似类型元素线性集合 是一种指向数组引用对象20. 集合框架Iterator是一种迭代器接口ListIterator继承自Iterator是子接口 只能用于list接口Collection是集合框架顶层接口 List
6、有序可重复 ArrayList 实现了可变数组数据构造 LinkedList 实现了双向链表数据构造Set 无序不可重复 HashSet 实现了无序不可重复 LinkedHashSet 有序不可重复(插入顺序) TreeSet 升序不可重复 Map 是一种key 、value 对映射 HashMap 按照key无序 LinkedHashMap 按照key 有序 TreeMap 按照key升序 Collections是集合框架辅助类(工具类)里边所有办法都是static Arrays是对数组工具类Comparable、Comparator是做比较排序21.Vector和ArrayList区别:
7、1)Vector是线程安全(同步)ArrayList不是 ArrayList效率高某些 2)当时始容量满时候Vector增长本来一倍、ArrayList增长本来一半22.HashTable和HashMap区别: 1)HashTable是线程安全HashMap不是 HashMap效率会高某些 2)HashMap容许nullkey存在 HashTable不容许23.Set set=Map.keySet(); Iterator it=set.iterator(); While(it.hasnext()24.类构造 类名、属性名(静态属性、实例属性)、办法(静态办法、实例办法)、构造器(缺省构造器、带
8、参构造器) 静态代码块 static、 实例代码块 this.25 .参数传递 对于基本类型将实际变量值原样赋值以便传值 对于引用类型将引用类型变量地址赋值给实参26.this核心字都在什么地方使用 1)实例变量与局部变量同名 用this区别实例变量名与局部变量名 2)在构造器重载时、用this调用其他构造器 3)在实例办法中 用来当作当前对象引用传给其他办法27.办法重载 办法名要相似、在同一类中各种办法有不同办法签名 办法签名具备参数类型 参数个数和参数顺序、返回类型不做规定28.类初始化过程1)在堆区别配空间 new过程2)给对象属性赋默认值3)调用构造办法进一步赋值29.构造器 类中提
9、供用于初始化对象特殊办法、这个办法于类同名无返回值、类中没有提供构造器 jvm会提供一种不带参缺省构造器、类中有带参构造器jvm就不提供了30.详细阐明封装、继承、和多态 封装:将类实现细节隐藏起来、对外提供一致接口、提高系统维护性 继承:定义:一种类自动获得另一种类属性或者办法过程 使用方面 :extends核心字、单根继承、所有类都是Object类子类 、构造器不能被继承 、子类初始化时会默认状况下调用父类缺省构造器、子类调用父类带参构造器 则父类可以不提供缺省构造器 否则一定要有个缺省构造器如何使用继承? 1)区别has -a 和is -a2)子类要扩充父类功能3)子类需要大量置换父类功
10、能时不能使用继承4)不要从工具类中继承优缺陷: 长处:继承是最容易复用代码形式、修改父类功能时子类可以自动获得新功能 缺陷:打破了封装、只是类型复用 多态: 编译时编译器检查声明类型和办法信息 运营时jvm对实例办法和引用变量和实际引用对象动态绑定,对静态办法和引用变量声明类型静态绑定 类属性在编译阶段绑定31. instanceof: 判断实例与否为某个类型或子类型(1)只能在父子类进行比较(2)Null可以进行比较 成果为false(3)判断实例类型时,普通从子类开始,然后父类32. override:办法覆盖。子类重写父类中办法子类重写父类中办法条件:(1)办法名相似(2)办法签名相似(
11、参数)(3)返回值相似(4)子类修饰符要不不大于等于父类修饰符(5)子类抛出异常要不大于等于父类抛出异常33. 依赖关系 (1)一种类中办法,其局部变量类型是另一种类,则这两个类具备依赖关系(2)一种类中办法调用另一种类中静态办法,则这两个类具备依赖关系(3)一种类中办法中参数是另一种类静态办法,则这两个类具备依赖关系34. 多态运营机制(1) 在类编译阶段,编译器会检查类型与否匹配(2) 在运营阶段,jvm会调用实例相应办法,先检查父类办法,然后检查子类办法,然后会检查实例声明类型35Super调用父类属性和办法、子类和父类有同名办法时,子类可用super区别是父类办法36. final(1
12、)final修饰类不能被继承(2)final修饰办法不能被覆盖(3)final修饰变量是常量,常量不可修改但有例外 实例常量:若定义时没有赋值,则可以在构造器或实例代码块中赋值,构造器或者代码块赋值只能有一种 静态常量:若定义时没有赋值,则可以在静态代码块中赋值,37. 抽象类具备某些实现类。使用时注意事项:(1)不能实例化(2)可有0到各种抽象办法(3)可有构造器(4)详细类继承抽象类时必要实现所有抽象办法(5)抽象类可以间接被子类调用其构造器,并在内存中分派空间,间接实例化(6)抽象类可以有静态办法,可以返回其子类实例如何使用抽象类?(1)把各个类中可以共用办法和逻辑放到抽象父类中,越多越
13、好(2)属性应尽量放到子类中38 接口 定义:从宏观角度说是一种规范,从面向对象角度说,接口是一种抽象类型(1)属性是常量,一定要赋值(2)办法是抽象办法(3)没有构造器(4)接口支持casting(强制类型转换)(5)接口可以继承自各种接口(6)实现接口类必要要实现所有办法,如果是抽象类可以选取实现某些办法 为什么要使用接口?(1)可插拔性保证,可以随意更换接口实现类(2)接口可以解决多继承问题(3)接口使规范制定者、实现者、使用者分开39. 接口和抽象类区别(1)接口没有任何实现,而抽象类可以有某些实现也可以没有(2)如果需要复用或者共享代码,应当用抽象类而不是接口(3)继承无法解决类型转换问题,接口是为解决这问题而产生40. 访问控制 作用域 当前类 同一package 子孙类 其她packagepublic protected default private 41. static修饰符(1)可以修饰属性,称为静态属性,全类公有常叫做类变量,和详细对象无关,无多态,类名去访问,类加载时候初始化(2)修饰办法,静态办法中只能访问静态成员,非静态办法可以访问静态成员,工具类对象都是static(3)修饰代码块,初始代码块是在类中,而不在任何办法之内代码块,被static修饰代码块称为