10.01_面向对象(package关键字的概述及作用)(了解)
A:为什么要有包
* 将字节码(.class)进行分类存放
* 包其实就是文件夹
B:包的概述
举例:
学生:增加,删除,修改,查询
老师:增加,删除,修改,查询
...
方案1:按照功能分
com.heima.add
AddStudent
AddTeacher
com.heima.delete
DeleteStudent
DeleteTeacher
com.heima.update
UpdateStudent
UpdateTeacher
com.heima.find
FindStudent
FindTeacher
方案2:按照模块分
com.heima.teacher
AddTeacher
DeleteTeacher
UpdateTeacher
FindTeacher
com.heima.student
AddStudent
DeleteStudent
UpdateStudent
FindStudent
10.02_面向对象(包的定义及注意事项)(掌握)
A:定义包的格式
* package 包名;
* 多级包用.分开即可
B:定义包的注意事项
* A:package语句必须是程序的第一条可执行的代码
* B:package语句在一个java文件中只能有一个
* C:如果没有package,默认表示无包名
C:案例演示
* 包的定义及注意事项
10.03_面向对象(带包的类编译和运行)(掌握)
A:如何编译运行带包的类
* a:javac编译的时候带上-d即可
* javac -d . HelloWorld.java
* b:通过java命令执行。
* java 包名.HellWord
10.04_面向对象(不同包下类之间的访问)(掌握)
* A:案例演示
* 不同包下类之间的访问
10.05_面向对象(import关键字的概述和使用)(掌握)
* A:案例演示
* 为什么要有import
* 其实就是让有包的类对调用者可见,不用写全类名了
* B:导包格式
* import 包名;
* 注意:
* 这种方式导入是到类的名称。
* 虽然可以最后写*,但是不建议。
* C:package,import,class有没有顺序关系(面试题)
10.06_面向对象(四种权限修饰符的测试)(掌握)
- A:案例演示
- 四种权限修饰符
- B:结论
-
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y
10.07_面向对象(类及其组成所使用的常见修饰符)(掌握)
A:修饰符:
* 权限修饰符:private,默认的,protected,public
* 状态修饰符:static,final
* 抽象修饰符:abstract
B:类:
* 权限修饰符:默认修饰符,public
* 状态修饰符:final
* 抽象修饰符:abstract
* 用的最多的就是:public
C:成员变量:
* 权限修饰符:private,默认的,protected,public
* 状态修饰符:static,final
* 用的最多的就是:private
D:构造方法:
* 权限修饰符:private,默认的,protected,public
* 用的最多的就是:public
E:成员方法:
* 权限修饰符:private,默认的,protected,public
* 状态修饰符:static,final
* 抽象修饰符:abstract
* 用的最多的就是:public
F:除此以外的组合规则:
* 成员变量:public static final
* 成员方法:
* public static
* public abstract
* public final
10.08_面向对象(内部类概述和访问特点)(了解)
* A:内部类概述
* B:内部类访问特点
* a:内部类可以直接访问外部类的成员,包括私有。
* b:外部类要访问内部类的成员,必须创建对象。
* 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
* C:案例演示
* 内部类极其访问特点
10.11_面向对象(成员内部类的面试题)(掌握)
* A:面试题
*
要求:使用已知的变量,在控制台输出30,20,10。
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(?);
System.out.println(??);
System.out.println(???);
}
}
}
class InnerClassTest {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
10.12_面向对象(局部内部类访问局部变量的问题)(掌握)
A:案例演示
* 局部内部类访问局部变量必须用final修饰
* 局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
但是jdk1.8取消了这个事情,所以我认为这是个bug
10.13_面向对象(匿名内部类的格式和理解)
A:匿名内部类
* 就是内部类的简化写法。
B:前提:存在一个类或者接口
* 这里的类可以是具体类也可以是抽象类。
C:格式:
*
new 类名或者接口名(){
重写方法;
}
D:本质是什么呢?
* 是一个继承了该类或者实现了该接口的子类匿名对象。
E:案例演示
* 按照要求来一个匿名内部类
10.14_面向对象(匿名内部类重写多个方法调用)
* A:案例演示
* 匿名内部类的方法调用
10.15_面向对象(匿名内部类在开发中的应用)
- A:代码如下
//这里写抽象类,接口都行 abstract class Person { public abstract void show(); } class PersonDemo { public void method(Person p) { p.show(); } } class PersonTest { public static void main(String[] args) { //如何调用PersonDemo中的method方法呢? PersonDemo pd = new PersonDemo (); } }
10.16_面向对象(匿名内部类的面试题)
A:面试题
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”
11.01_Java开发工具(常见开发工具介绍)(了解)
* A:操作系统自带的记事本软件
* B:高级记事本软件
* C:集成开发环境 IDE
* (Integrated Development Environment)
* D:Eclipse和MyEclipse的区别
* a:Eclipse是一种可扩展的开放源代码的IDE。
* b:Eclipse的特点描述
* 免费
* 纯Java语言编写
* 免安装
* 扩展性强
* c:MyEclipse
* 在Eclipse基础上追加的功能性插件,对插件收费
* 在WEB开发中提供强大的系统架构平台
* E:下载 http://eclipse.org/
* org是非盈利团体
* F:安装
* 绿色版 解压就可以使用(Eclipse)
* 安装版 双击运行,一路next即可(JDK)
* G:卸载
* 绿色版 直接删除文件夹即可
* 安装版 专业卸载软件或者控制面板添加删除程序
11.02_Java开发工具(Eclipse中HelloWorld案例以及汉化)(了解)
* A:选择工作空间
* 工作空间 其实就是我们写的源代码所在的目录
* B:用Eclipse来完成一个HelloWorld案例
* 代码以项目为基本单位
* 创建项目
* 创建包
* 创建类
* 编写代码
* C:编译和运行
* D:Eclipse的汉化
* 从Eclipse3.5开始,安装目录下就多了一个dropins目录,只要将插件解压后放到到该目录即可。
* 同理,这种方式卸载插件也是特别的方便,推荐这种方式
* E:语法检查提示
* 红色波浪线
* 必须处理,否则编译通不过
* 黄色波浪线
* 可以不搭理他
11.03_Java开发工具(Eclipse的视窗和视图概述)(了解)
* A:视窗 每一个基本的窗体被称为视窗
* PackageExplorer 显示项目结构,包,类,及资源
* Outline 显示类的结构,方便查找,识别,修改
* Console 程序运行的结果在该窗口显示
* Hierarchy 显示Java继承层次结构,选中类后F4
* B:视图 是由某些视窗的组合而成的
* Java视图
* Debug视图
11.04_Java开发工具(Eclipse工作空间的基本配置)(掌握)
* A:程序的编译和运行的环境配置(一般不改)
* window -- Preferences -- Java
* 编译环境:Compiler 默认选中的就是最高版本。
* 运行环境:Installed JREs 默认会找你安装的那个JDK。建议配置了Java的环境变量。
* 问题:
* 低编译,高运行。可以。
* 高编译,低运行。不可以。
* 建议,编译和运行的版本一致。
* B:如何去掉默认注释?
* window -- Preferences -- Java -- Code Style -- Code Templates
* 选择你不想要的内容,通过右边Edit编辑。
* 注意:请只删除注释部分,不是注释部分的不要删除。
* C:行号的显示和隐藏
* 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
* 隐藏:把上面的动作再做一次。
* D:字体大小及颜色
* a:Java代码区域的字体大小和颜色:
* window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font
* b:控制台
* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
* c:其他文件
* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
* E:窗体给弄乱了,怎么办?
* window -- Reset Perspective
* F:控制台找不到了,怎么办?
* Window--Show View—Console
* G:取消悬浮提示
* window -- Preferences -- Java--Editor--Hovers。右边将Combined Hover勾去掉。
* 这样代码的悬浮框就不会自动出现了。如果想看提示,将光标悬浮在代码上,按F2即可。
11.05_Java开发工具(Eclipse中内容辅助键的使用)(掌握)
* A:Alt+/ 起提示作用
* B:main+alt+/,syso+alt+/,给出其他提示
* C:补充输出语句,选中需要输出的部分,alt+/选择最后一项即可
* C:定义自己的alt + /
* windows--perference-Java-Editor-Templates--New
11.06_Java开发工具(Eclipse中快捷键的使用)(掌握)
* A:新建 ctrl + n
* B:格式化 ctrl+shift+f
* C:导入包 ctrl+shift+o
* D:注释 ctrl+/,ctrl+shift+/,ctrl+shift+\
* E:代码上下移动 选中代码alt+上/下箭头
* F:查看源码 选中类名(F3或者Ctrl+鼠标点击)
* G:查找具体的类 ctrl + shift + t
* H:查找具体类的具体方法 ctrl + o
* I:给建议 ctrl+1,根据右边生成左边的数据类型,生成方法
* J:删除代码 ctrl + d
* K:抽取方法alt + shift + m
* L:改名alt + shift + r
*
11.07_Java开发工具(Eclipse中如何提高开发效率)(掌握)
* alt + shift + s
* A:自动生成构造方法
* B:自动生成get/set方法
11.08_Java开发工具(Eclipse中一个标准学生类及其测试)(掌握)
* A:案例演示
* 用Eclipse实现标准学生类及其测试
11.09_Java开发工具(Eclipse中接口抽象类具体类代码体现)(掌握)
- A:案例演示
* 用Eclipse实现接口抽象类具体类代码
11.10_Java开发工具(Eclipse中如何生成jar包并导入到项目中)(了解)
A:jar是什么?
* jar是多个class文件的压缩包。
* B:jar有什么用?
* 用别人写好的东西
* C:打jar包
* 选中项目--右键--Export--Java--Jar--自己指定一个路径和一个名称--Finish
* D:导入jar包
* 复制到项目路径下并添加至构建路径。
11.11_Java开发工具(Eclipse中如何删除项目和导入项目)(掌握)
* A:删除项目
* 选中项目 – 右键 – 删除
* 从项目区域中删除
* 从硬盘上删除
* B:导入项目
* 在项目区域右键找到import
* 找到General,展开,并找到
* Existing Projects into Workspace
* 点击next,然后选择你要导入的项目
* 注意:这里选择的是项目名称
11.12_Java开发工具(Eclipse中断点调试的基本使用)(了解)
A:Debug的作用
* 调试程序
* 查看程序执行流程
* B:如何查看程序执行流程
* 什么是断点:
* 就是一个标记,从哪里开始。
* 如何设置断点:
* 你想看哪里的程序,你就在那个有效程序的左边双击即可。
* 在哪里设置断点:
* 哪里不会点哪里。
* 目前:我们就在每个方法的第一条有效语句上都加。
* 如何运行设置断点后的程序:
* 右键 -- Debug as -- Java Application
* 看哪些地方:
* Debug:断点测试的地方
* 在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。
* Variables:查看程序的变量变化
* ForDemo:被查看的源文件
* Console:控制台
* 如何去断点:
* a:再次双击即可
* b:找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。
11.13_Java开发工具(Eclipse查看Java中参数传递问题)(了解)
* A:断点演示
* 断点查看Java中参数传递问题
11.14_常见对象(API概述)(了解)
* A:API(Application Programming Interface)
* 应用程序编程接口
* B:Java API
* 就是Java提供给我们使用的类,这些类将底层的实现封装了起来,
* 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
11.15_常见对象(Object类的概述)(了解)
* A:Object类概述
* 类层次结构的根类
* 所有类都直接或者间接的继承自该类
* B:构造方法
* public Object()
* 回想面向对象中为什么说:
* 子类的构造方法默认访问的是父类的无参构造方法
11.16_常见对象(Object类的hashCode()方法)(了解)
* A:案例演示
* public int hashCode()
* a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
* b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
11.17_常见对象(Object类的getClass()方法)(在反射的时候掌握)
* A:案例演示
* public final Class getClass()
* a:返回此 Object 的运行时类。
* b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
* public String getName()
11.18_常见对象(Object类的toString()方法)(掌握)
* A:案例演示
* public String toString()
* a:返回该对象的字符串表示。
*
public Stirng toString() {
return name + "," + age;
}
* b:它的值等于:
* getClass().getName() + "@" + Integer.toHexString(hashCode())
* c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
* B:最终版
* 自动生成
11.19_常见对象(Object类的equals()方法)(掌握)
* A:案例演示
* a:指示其他某个对象是否与此对象“相等”。
* b:默认情况下比较的是对象的引用是否相同。
* c:由于比较对象的引用没有意义,一般建议重写该方法。
11.20_常见对象(==号和equals方法的区别)(掌握)
* ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
* equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性