###11.01_Java开发工具(常见开发工具介绍)(了解)
A:操作系统自带的记事本软件
B:高级记事本软件
C:集成开发环境 IDE
(Integrated Development Environment)
D:eclipse和MyEclipse的区别
a:Eclipse是一种可扩展的开放源代码的IDE,里面可以安装很多插件。是IBM花了4000万美金研发的,Eclipse凭借IBM火起来了,IBM借助Eclipse让公司更加强大了。
b:Eclipse的特点描述
免费
纯Java语言编写
免安装
扩展性强
c:MyEclipse
在Eclipse基础上追加的功能性插件,对插件收费
在WEB开发中提供强大的系统架构平台
E:下载
org是非盈利团体
F:安装
绿色版 解压就可以使用(Eclipse)
安装版 双击运行,一路next即可(JDK)
G:卸载
绿色版 直接删除文件夹即可
安装版 专业卸载软件或者控制面板添加删除程序
###11.02_Java开发工具(Eclipse中HelloWorld案例以及汉化)(了解)
package com.i; public class HelloWorld { / @param args / public static void main(String[] args) { Sy("aaaa!!!!!"); int num = 10;//如果没有下面的输出语句来输出num的话,在num下面就会有黄色的波浪线 Sy(num); } }A:选择工作空间
工作空间 其实就是我们写的源代码所在的目录
B:用Eclipse来完成一个HelloWorld案例
代码以项目为基本单位
创建项目
右键/package Explore 空白区/new /Java Project/输入项目名称如day11/
创建包
打开上面建立的day11项目/右键/new/package/在弹出的对话框的name中输入报名如"com.i;/finish
创建类
创建一个java类:右击报名/new/class/在对话框的name中输入类名/finish,详细信息如下图:
编写代码
案例:HelloWorld代码如下
上面的案例,保存后会在bin目录中对应的文件路径下自动生成HelloWorld.class文件,而且每次对HelloWorld代码修改保存(自动编译,而且编译时对对语法进行检查,如果有错误,会有红色警告)后,会自动生成一份新的.class文件。
运行上面的代码的方式:F11或者右键/Run As /Java Application或者点运行按钮
C:编译和运行
D:Eclipse的汉化
从Ecli开始,安装目录下就多了一个dropins目录,只要将插件解压后放到到该目录即可。
同理,这种方式卸载插件也是特别的方便,推荐这种方式
E:语法检查提示
红色波浪线
必须处理,否则编译通不过
黄色波浪线(如定义了一个变量,但是没有使用,就会有黄色波浪线的提示)
可以不搭理他
###11.03_Java开发工具(Eclipse的视窗和视图概述)(了解)
package com.i; public class HelloWorld { / @param args / public static void main(String[] args) { Sy("aaaa!!!!!"); int num = 10;// 如果没有下面的输出语句来输出num的话,在num下面就会有黄色的波浪线 Sy(num); } private int num1 = 10; int num2 = 20; protected int num3 = 30; public int num4 = 40; private void method1() { Sy(num1); } void method2() { Sy(num2); } protected void method3() { Sy(num3); } public static void method4() { } public static final void method5() { } }A:视窗 每一个基本的窗体被称为视窗
PackageExplorer(包资源管理器) 显示项目结构,包,类,及资源
Outline(大纲视窗,相当于看书的目录) 显示类的结构(成员变量,成员方法,构造方法),方便查找,识别,修改
Console 程序运行的结果在该窗口显示
Hierarchy 显示Java继承层次结构,选中类后F4
B:视图 是由某些视窗的组合而成的
Java视图
Debug视图
案例:查看Outline的效果
###11.04_Java开发工具(Eclipse工作空间的基本配置)(掌握)
A:程序的编译和运行的环境配置(一般不改)
window -- Preferences -- Java
编译环境:Compiler 默认选中的就是最高版本。
运行环境:Installed JREs 默认会找你安装的那个JDK。建议配置了Java的环境变量(不配找不到)。
问题:
低编译(编译的版本比较低),高运行(运行的版本比较高)。可以。
高编译,低运行。不可以。
建议,编译和运行的版本一致。
B:如何去掉默认注释?
window -- Preferences -- Java -- Code Style -- Code Templates--Code
选择你不想要的内容,通过右边Edit编辑。
注意:请只删除注释部分,不是注释部分的不要删除。
C:行号的显示和隐藏
显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
隐藏:把上面的动作再做一次。
D:字体大小及颜色
a:Java代码区域的字体大小和颜色:
window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font--edit进行修改
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+/,给出其他提示,for+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中如何提高开发效率)(掌握)
package com.; public class Person extends Object{ private String name; private int age; public Person() { //alt + shift + s 再 + c 生成空参构造 super(); } public Person(String name, int age) { //alt + shift + s 再 + o 根据本地字段(成员变量)生成有参构造 super(); = name; = age; } public String getName() { //alt + shift + s 再 + r 生成get和set方法 return name; } public void setName(String name) { = name; } public int getAge() { return age; } public void setAge(int age) { = age; } }alt + shift + s -->c(生成无参构造,或者alt+/) -->o(生成有参构造)-->r(set和get方法)
A:自动生成构造方法
B:自动生成get/set方法
案例:生成标准的Person类
###11.08_Java开发工具(Eclipse中一个标准学生类及其测试)(掌握)
package com.it; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { super(); = name; = age; } public String getName() { return name; } public void setName(String name) { = name; } public int getAge() { return age; } public void setAge(int age) { = age; } } package com.i; import com.it.Student; public class StudentTest { public static void main(String[] args) { Student stu = new Student("张三", 30); Sy()+"....."+()); } }A:案例演示
用Eclipse实现标准学生类及其测试
案例:标准学生类及测试类
###11.09_Java开发工具(Eclipse中接口抽象类具体类代码体现)(掌握)
//抽象类Animal package com.i; public abstract class Animal { public abstract void eat(); public abstract void sleep(); } //子类Cat package com.i; public class Cat extends Animal { @Override public void eat() { Sy("猫吃鱼"); } @Override public void sleep() { Sy("侧着睡"); } }A:案例演示
用Eclipse实现接口抽象类具体类代码
案例:Animal(重新建立一个新的项目Animal)
//在day11项目中对上面的内容进行测试 package com.i; import com.i.Cat; public class AnimalTest { public static void main(String[] args) { Cat cat = new Cat(); cat.eat(); cat.sleep(); } }注意:此时在day11项目中无法直接使用上面的Cat类因为不是同一个项目, 需要用到下面的知识点,生成jar包
按照下面的方法生成jar包,并复制到day11项目中,但是发现在写测试类时,仍然不能使用,因为jar包里放的都是class文件,得告诉day11项目jar的classpath的路径,之前没告诉过,因为之前都是把当前路径作为classpath,现在这些文件得重新告诉Eclipse它们的classpath,方法右键/jar包/Build Path/Add to Build Path/(将添加的jar包,添加到classpath,当jar包变成像奶瓶一样的东西证明已经导入进来了),在项目中由于jar包比较多,不是简单的赋值到项目中并添加到构建路径就可以的,需要对jar包进行管理,右键项目/new/fold/输入名称为lib,
然后将jar包放入lib中重新进行Build Path
###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中断点调试的基本使用)(了解)
package com.i; public class Demo1 { public static void main(String[] args) { int sum = 0; for(int i=0;i<6;i++) { sum+=i; } Sy("sum="+sum); } }A:Debug的作用
调试程序
查看程序执行流程
B:如何查看程序执行流程
什么是断点:
就是一个标记,从哪里开始。
如何设置断点:
你想看哪里的程序,你就在那个有效程序的左边双击即可。
在哪里设置断点:
哪里不会点哪里。
目前:我们就在每个方法的第一条有效语句上都加。
如何运行设置断点后的程序:
右键 -- Debug as -- Java Application
看哪些地方:
Debug:断点测试的地方
在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。
Variables:查看程序的变量变化
ForDemo:被查看的源文件
Console:控制台
如何去断点:
a:再次双击即可
b:找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。
案例:
断点调试图如下:
###11.13_Java开发工具(Eclipse查看Java中参数传递问题)(了解)
package com.i; public class Demo2 { public static void main(String[] args) { //第一部分,先演示这部分,测试上面快捷键的功能 / int a = 10; int b = 20; Sy("a:" + a + ",b:" + b); change(a, b); Sy("a:" + a + ",b:" + b);/ //第二部分,再演示这部分,进行同样的测试 int[] arr = { 1, 2, 3, 4, 5 }; change(arr); Sy(arr[1]); } public static void change(int a, int b) { Sy("a:" + a + ",b:" + b); a = b; b = a + b; Sy("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; } } } }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()方法)(了解)
package com.i; import com.it.Student; public class Demo1_HashCode { public static void main(String[] args) { // 创建Object类型的对象object Object object = new Object(); // 获取object的hashCode,按住ctrl+单击/hashCode()方法查看其源码 // 返现hashCode()是个抽象方法,但是前面用native(本地)修饰符修饰 // 意思是借助本地系统资源帮我们计算的hashCode值,现在jvm是在window系统中运行的,就会借助window系统计算hashCode值 int hashCode = object.hashCode(); Sy(hashCode); Student s1 = new Student("张三", 23); Student s2 = new Student("李四", 24); // ctrl+alt+向下的箭头,快速复制当前行 // 有的电脑上按照上面的快速复制方式会讲屏幕倒过来,解决方法:右击屏幕/图形选项/快捷键,选择禁用 Sy(s1); Sy(s2); } }A:案例演示
public int hashCode()
a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
案例:
###11.17_常见对象(Object类的getClass()方法)(在反射的时候掌握)
A:案例演示
public final Class getClass()
a:返回此 Object 的运行时类。
b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
public String getName()
小写的class是用来描述类的信息的(属性和行为)
大写的Class是用来描述编译后生成的字节码文件的(.class文件)
案例:
package com.i; import com.it.Student; public class Demo2_GetClass { public static void main(String[] args) { Student student = new Student("张三",24); Class clazz = (); //获取该对象的字节码文件 String name = clazz.getName(); //获取名称:即类的全名称 Sy("name="+name); } }###11.18_常见对象(Object类的toString()方法)(掌握)
package com.i; import com.it.Student; public class Demo3_ToString { / 运行结果:com.it.Student@40671416 通过查看源码(ctrl+单击"toString方法")返现,上述结果中@符号前是给对象所属类的全名称, .@符号后面是该对象hashCode值的十六进制的字符串表现形式,toString()源码如下: public String toString() { return getClass().getName() + "@" + In(hashCode()); } 问题:在实际使用时直接打印出类全名称@hashCode值的十六进制的字符串表现形式,是没有意义的 而实际上我们是想看到对象的具体的详细信息,这样就需要子类重写父类的toString方法 重写toString方法的意义用用:可以更方便显示属性值,而getXxx()方法获取值可以进行其它运算,可以显示或做其它操作 @param args / public static void main(String[] args) { //在重写toString方法前后分别运行改程序,看结果 Student student = new Student("张三",23); //String str = (); //Sy(str); //上面的两句话,可以写成下面的一句 Sy(()); Sy(student); //直接打印对象的引用,默认调用toString方法 Sy("我的姓名是:"+()+",我的年龄是:"+()); } }A:案例演示
public String toString()
a:返回该对象的字符串表示。
public Stirng toString() {
return name + "," + age;
}
b:它的值等于:
getClass().getName() + "@" + In(hashCode())
c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
B:最终版
自动生成
案例:
重写Student类的toString方法:
package com.it; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { super(); = name; = age; } public String getName() { return name; } public void setName(String name) { = name; } public int getAge() { return age; } public void setAge(int age) { = age; } /@Override public String toString() { return "我的姓名是:" + name + ", 我的年龄是:" + age; }/ //上面的toString是自己写的,也可以让eclipse自动生成,alt+shift+s ->s->enter @Override public String toString() { //重写 return "Student [name=" + name + ", age=" + age + "]"; } }###11.19_常见对象(Object类的equals()方法)(掌握)
package com.i; import com.it.Student; public class Demo4_Equals { / equals方法:比较两个对象是否相等,下面是Object中的equals方法,比较的是地址值,没有什么意义 public boolean equals(Object obj) { return (this == obj);//是调用的对象与传入的对象的比较,比较的是地址值 } 思考:equals方法比较两个对象的地址值是没有意义的,需要重写,因为在开发中通常比较的是对象中的属性值, 我们认为相同属性认为是同一个对象,这要需要在Student类中需要重写equals方法 @param args / public static void main(String[] args) { //观察重写equals方法前后的结果 Student s1 = new Student("张三",23); Student s2 = new Student("张三",23); boolean b = (s2); //比较两个对象是否相等 //当Student类没有重写equals方式时,下面两个输出都是false Sy(s1 == s2); Sy(b); } }A:案例演示
a:指示其他某个对象是否与此对象“相等”(判断两个对象是否相等)。
b:默认情况下比较的是对象的引用是否相同。
c:由于比较对象的引用没有意义,一般建议重写该方法。
案例:
package com.it; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { super(); = name; = age; } public String getName() { return name; } public void setName(String name) { = name; } public int getAge() { return age; } public void setAge(int age) { = age; } @Override public boolean equals(Object obj) { //认为当姓名相同并且年龄也相同时为同一对象 //所以要先比较姓名是否相同,而姓名是String类型,通过查看api发现String类型重写了equals方法, //而且比较的是字符串中的字符序列是否相同,正好符合要求,可以直接使用 / Student s = (Student)obj; return .equals)&&==s.age;//age是基本数据类型,不能直接调用方法 / if(obj instanceof Student){ Student s = (Student)obj; return .equals)&&==s.age; } return false; } }重写Student类中的equals方法:
###11.20_常见对象(==号和equals方法的区别)(掌握)
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性