###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实现标准学生类及其测试
/*
* 学生类
*/
public class Student {
// 姓名
private String name;
// 年龄
private int age;
// alt+shift+s+c
public Student() {
super();
}
// alt+shift+s+o
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
// alt+shift+s+r
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
/*
* 测试类
*/
public class StudentDemo {
public static void main(String[] args) {
// 创建对象
Student s1 = new Student();
s1.setName("风清杨");
s1.setAge(22);
System.out.println(s1.getName() + "---" + s1.getAge());
s1.show();
Student s2 = new Student("刘青云", 40);
System.out.println(s2.getName() + "---" + s2.getAge());
s2.show();
}
}
###11.09_Java开发工具(Eclipse中接口抽象类具体类代码体现)(掌握)
* A:案例演示
* 用Eclipse实现接口抽象类具体类代码
抽象类:共性,需要进行执行的方法描述声明
接口:可扩展性功能
接口的示例代码:
public interface OneInterface { //接口1
public static final String oneName = "小明";//全局常量
public abstract void msgOne();//公共抽象方法,无return
}
interface TwoInterface{ //接口2
public static final String twoName = "小红";//全局常量
public abstract String msgTwo();//公共抽象方法,有return
}
要去实现接口的子类:
public class Test implements OneInterface,TwoInterface{ //多接口实现
@Override
public void msgOne() { //子类去实现接口1的方法
System.out.println(oneName);
}
@Override
public String msgTwo() { //子类去实现接口2的方法
System.out.println(twoName);
return twoName;
}
public static void main(String[] args){
Test t=new Test(); //子类实例对象
t.msgOne(); //对象调用方法
t.msgTwo();
}
}
抽象类代码例子:
public abstract class Abstract {
String oneName="小明";
String twoName="小红";
public abstract void msgOne(); //抽象类自己的不能实现的方法
public abstract String msgTwo();
static void test(){ //抽象类自己的可以实现的方法
System.out.println("小明\n小红");
}
public static void main(String[] args){
test(); //抽象类不能创建对象,所以用static修饰方法,方便调用
}
}
继承抽象类的子类:
public class Test extends Abstract{ //继承抽象类
@Override
public void msgOne() { //重写了抽象类的方法
System.out.println(oneName);
}
@Override
public String msgTwo() { //重写了抽象类的方法
System.out.println(twoName);
return twoName;
}
public static void main(String[] args){
Test t=new Test(); //子类实例对象
t.msgOne(); //对象调用方法
t.msgTwo();
}
}
###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中参数传递问题
/**
* 通过Debug查看程序执行流程
*/
class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b);
change(a, b);
System.out.println("a:" + a + ",b:" + b);
int[] arr = { 1, 2, 3, 4, 5 };
change(arr);
System.out.println(arr[1]);
}
/**
* 基本类型
*/
public static void change(int a, int b) {
System.out.println("a:" + a + ",b:" + b);
a = b;
b = a + b;
System.out.println("a:" + a + ",b:" + b);
}
/**
* 引用类型
*/
public static void change(int[] arr) {
for (int x = 0; x < arr.length; x++) {
if (arr[x] % 2 == 0) {
arr[x] *= 2;
}
}
}
###11.14_常见对象(API概述)(了解)
* A:API(Application Programming Interface)
* 应用程序编程接口
* B:Java API
* 就是Java提供给我们使用的类,这些类将底层的实现封装了起来,
* 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
* 文档说明书就是存放API的工具,如:JDK_API_1_6_CN.CHM,API是具体的类,如String,Object等。
###11.15_常见对象(Object类的概述)(了解)
* A:Object类概述
* 类层次结构的根类
* 所有类都直接或者间接的继承自该类
* B:构造方法
* public Object()
* 回想面向对象中为什么说:
* 子类的构造方法默认访问的是父类的无参构造方法
###11.16_常见对象(Object类的hashCode()方法)(了解)
作用:返回该对象的哈希值,返回的是一个int类型的值。
* public int hashCode()
* a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
* b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
Student st1 = new Student("hhaa",3);
Student st2 = new Student("ha",4);
s1.hashCode()和s2.hashCode() 哈希值不同,因为new出来了2个对象,且地址值不同。因为哈希值是根据对象的地址值来计算的。
###11.17_常见对象(Object类的getClass()方法)(在反射的时候掌握)
作用:
* public final Class getClass()
* a:返回此 Object 的运行时类。
* b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
* public String getName()
意义:
* 在反射中掌握使用
* public final Class getClass(){}
* 可以通过Class类中的一个方法,获取到对象真实类的全名称。
* public String getName();
例子:
Student st = new Student("xixi", 2);
Class clazz1 = st.getClass(); // 获取该对象的字节码文件
String name = clazz1.getName(); // 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
System.out.println(name); // com.zj.day11.two.bean.Student 返回的是该类的全名称。
Class类中的getName()方法:
* 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
###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()方法)(掌握)
作用:
* 指示某个对象是否与此对象 “相等”
意义:
* 默认情况下比较的是两个对象的引用(地址值)是否相等
* 由于比较对象的引用(地址值)没有意义,所以一般重写该方法
equals
a.Object类中的equal()比较对象的地址值,没意义。【Object中equals的底层是“==”来做比较,所以 用== 还是 equals 来比较对象的地址值,都是无意义的。】
b.在开发中我们比较的往往是【对象的属性(name,age...)】,判断是否相等,这时我们需要重写equals方法。
c.比较的是引用数据类型,用equals, 当比较的是基本数据类型时,只能用 == 。
例子:
前提:Student类中重写了equals方法。
即:
public boolean equals(Object obj) { // 相当于:s1.equals(s2);
Student s = (Student)obj;
return this.name.equals(s.name) && this.age == s.age ; //引用数据类型name用equals来比较, 基本数据类型age用 == 来比较。
main方法中:
Student str1 = new Student("hh",4);
Student str2 = new Student("hh",4);
System.out.println(str1.equals(str2)); //false 因为底层采用的是 == 来作比较的。不重写该方法是没有意义的,因为比较的是地址值。
System.out.println(str1 == str2); // == 比较的是对象中的属性值,
###11.20_常见对象(==号和equals方法的区别)(掌握)
共同:
* 都是用来做比较的,且返回的都是Boolean类型。
异同:
* ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
* equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性