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:下载 http://eclipse.org/
org是非盈利团体
F:安装
绿色版解压就可以使用(Eclipse)
安装版 双击运行,一路next即可(JDK)
G:卸载
绿色版直接删除文件夹即可
安装版 专业卸载软件或者控制面板添
11.02_Java开发工具(Eclipse中HelloWorld案例以及汉化)
A:选择工作空间
工作空间 其实就是我们写的源代码所在的目录
B:用Eclipse来完成一个HelloWorld案例
代码以项目为基本单位
创建项目
右键/Package Explore 空白区/new /Java Project/输入项目名称如day11/
创建包
打开上面建立的day11项目/右键/new/package/在弹出的对话框的name中输入名称
com.ziyang.eclipse/finish
创建类
创建一个java类:右击报名/new/class/在对话框的name中输入类名/finish,详细信息如下:
编写代码
举个栗子:HelloWorld代码如下:
package com.ziyang.eclipse;
public class HelloWorld {
/
@param args
/
public static void main(String[] args) {
System.out.println("aaaa!!!!!");
int num = 10;//如果没有下面的输出语句来输出num的话,在num下面就会有黄色的波浪线
System.out.println(num);
}
}
上面的案例,保存后会在bin目录中对应的文件路径下自动生成HelloWorld.class文件,而且每次对HelloWorld代码修改保存(自动编译,而且编译时对对语法进行检查,如果有错误,会有红色警告)后,会自动生成一份新的.class文件。
运行上面的代码的方式:F11或者右键/Run As /Java Application或者点运行按钮
C:编译和运行
D:Eclipse的汉化
从Eclipse3.5开始,安装目录下就多了一个dropins目录,只要将插件解压后放到到该目录即可。
同理,这种方式卸载插件也是特别的方便,推荐这种方式
E:语法检查提示
红色波浪线
必须处理,否则编译通不过
黄色波浪线(如定义了一个变量,但是没有使用,就会有黄色波浪线的提示)
可以不搭理他
11.03_Java开发工具(Eclipse的视窗和视图概述)
A:视窗
每一个基本的窗体被称为视窗
PackageExplorer(包资源管理器) 显示项目结构,包,类,及资源
Outline(大纲视窗,相当于看书的目录) 显示类的结构(成员变量,成员方法,构造方法),方便查找,识别,修改
Console 程序运行的结果在该窗口显示
Hierarchy 显示Java继承层次结构,选中类后F4
B:视图
是由某些视窗的组合而成的
Java视图
Debug视图
举个栗子:查看Outline的效果
package com.ziyang.eclipse;
public class HelloWorld {
/
@param args
/
public static void main(String[] args) {
System.out.println("aaaa!!!!!");
int num = 10;// 如果没有下面的输出语句来输出num的话,在num下面就会有黄色的波浪线
System.out.println(num);
}
private int num1 = 10;
int num2 = 20;
protected int num3 = 30;
public int num4 = 40;
private void method1() {
System.out.println(num1);
}
void method2() {
System.out.println(num2);
}
protected void method3() {
System.out.println(num3);
}
public static void method4() {
}
public static final void method5() {
}
}
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中如何提高开发效率)
alt + shift + s -->c(生成无参构造,或者alt+/) -->o(生成有参构造)–>r(set和get方法)
A:自动生成构造方法
B:自动生成get/set方法
举个栗子:生成标准的Person类
package com.ziyang.bean;
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();
this.name = name;
this.age = age;
}
public String getName() { //alt + shift + s 再 + r 生成get和set方法
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
11.08_Java开发工具(Eclipse中一个标准学生类及其测试)
A:案例演示
用Eclipse实现标准学生类及其测试
举个栗子:标准学生类及测试类
package com.ziyang.bean;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
}
package com.ziyang.eclipse;
import com.ziyang.bean.Student;
public class StudentTest {
public static void main(String[] args) {
Student stu = new Student("张三", 30);
System.out.println(stu.getName()+"....."+stu.getAge());
}
}
11.09_Java开发工具(Eclipse中接口抽象类具体类代码)
A:案例演示
用Eclipse实现接口抽象类具体类代码
举个栗子:Animal(重新建立一个新的项目Animal)
//抽象类Animal
package com.ziyang.animal;
public abstract class Animal {
public abstract void eat();
public abstract void sleep();
}
//子类Cat
package com.ziyang.animal;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void sleep() {
System.out.println("侧着睡");
}
}
注意:此时在day11项目中无法直接使用上面的Cat类因为不是同一个项目, 需要用到下面的知识点,生成jar包
右键项目/new/fold/输入名称为lib,
然后将jar包放入lib中重新进行Build Path
//对上面的内容进行测试
package com.ziyang.eclipse;
import com.ziyang.animal.Cat;
public class AnimalTest {
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat();
cat.sleep();
}
}
标题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,并点击,然后看到所有的断点,最后点击那个双叉。
举个栗子:
package com.ziyang.debug;
public class Demo1 {
public static void main(String[] args) {
int sum = 0;
for(int i=0;i<6;i++) {
sum+=i;
}
System.out.println("sum="+sum);
}
}
11.13_Java开发工具(Eclipse查看Java中参数传递问题)
A:断点演示
断点查看Java中参数传递问题
举个栗子:
package com.ziyang.debug;
public class Demo2 {
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提供给我们使用的类,这些类将底层的实现封装了起来,
我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
11.15_常见对象(Object类的概述)
A:Object类概述
类层次结构的根类
所有类都直接或者间接的继承自该类
B:构造方法
public Object()
回想面向对象中为什么说:
子类的构造方法默认访问的是父类的无参构造方法
11.16_常见对象(Object类的hashCode()方法)
A:案例演示
public int hashCode()
a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
举个栗子:
package com.ziyang.object;
import com.ziyang.bean.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();
System.out.println(hashCode);
Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 24);
// ctrl+alt+向下的箭头,快速复制当前行
// 有的电脑上按照上面的快速复制方式会讲屏幕倒过来,解决方法:右击屏幕/图形选项/快捷键,选择禁用
System.out.println(s1);
System.out.println(s2);
}
}
11.17_常见对象(Object类的getClass()方法)
A:案例演示
public final Class getClass()
a:返回此 Object 的运行时类。
b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
public String getName()
小写的class是用来描述类的信息的(属性和行为)
大写的Class是用来描述编译后生成的字节码文件的(.class文件)
举个栗子:
package com.ziyang.object;
import com.ziyang.bean.Student;
public class Demo2_GetClass {
public static void main(String[] args) {
Student student = new Student("张三",24);
Class clazz = student.getClass(); //获取该对象的字节码文件
String name = clazz.getName(); //获取名称:即类的全名称
System.out.println("name="+name);
}
}
11.18_常见对象(Object类的toString()方法)
A:案例演示
public String toString()
a:返回该对象的字符串表示。
public Stirng toString() {
return name + "," + age;
}
b:它的值等于:
getClass().getName() + "@" + Integer.toHexString(hashCode())
c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
B:最终版
自动生成
举个栗子:
package com.ziyang.object;
import com.ziyang.bean.Student;
public class Demo3_ToString {
/
运行结果:
com.ziyang.bean.Student@40671416
通过查看源码(ctrl+单击"toString方法")返现,上述结果中@符号前是给对象所属类的全名称,
.@符号后面是该对象hashCode值的十六进制的字符串表现形式,toString()源码如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
问题:在实际使用时直接打印出类全名称@hashCode值的十六进制的字符串表现形式,是没有意义的
而实际上我们是想看到对象的具体的详细信息,这样就需要子类重写父类的toString方法
重写toString方法的意义用用:可以更方便显示属性值,而getXxx()方法获取值可以进行其它运算,可以显示或做其它操作
@param args
/
public static void main(String[] args) {
//在重写toString方法前后分别运行改程序,看结果
Student student = new Student("张三",23);
//String str = student.toString();
//System.out.println(str);
//上面的两句话,可以写成下面的一句
System.out.println(student.toString());
System.out.println(student); //直接打印对象的引用,默认调用toString方法
System.out.println("我的姓名是:"+student.getName()+",我的年龄是:"+student.getAge());
}
}
重写Student类的toString方法:
package com.ziyang.bean;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
//eclipse自动生成,alt+shift+s ->s->enter
@Override
public String toString() { //重写
return "Student [name=" + name + ", age=" + age + "]";
}
}
11.19_常见对象(Object类的equals()方法)
A:案例演示
a:指示其他某个对象是否与此对象“相等”(判断两个对象是否相等)。
b:默认情况下比较的是对象的引用是否相同。
c:由于比较对象的引用没有意义,一般建议重写该方法。
举个栗子:
package com.ziyang.object;
import com.ziyang.bean.Student;
public class Demo4_Equals {
public static void main(String[] args) {
//观察重写equals方法前后的结果
Student s1 = new Student("张三",23);
Student s2 = new Student("张三",23);
boolean b = s1.equals(s2); //比较两个对象是否相等
//当Student类没有重写equals方式时,下面两个输出都是false
System.out.println(s1 == s2);
System.out.println(b);
}
}
重写Student类中的equals方法:
package com.ziyang.bean;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
@Override
public boolean equals(Object obj) {
//认为当姓名相同并且年龄也相同时为同一对象
//所以要先比较姓名是否相同,而姓名是String类型,通过查看api发现String类型重写了equals方法,
//而且比较的是字符串中的字符序列是否相同,正好符合要求,可以直接使用
/
Student s = (Student)obj;
return this.name.equals(s.name)&&this.age==s.age;//age是基本数据类型,不能直接调用方法
/
if(obj instanceof Student){
Student s = (Student)obj;
return this.name.equals(s.name)&&this.age==s.age;
}
return false;
}
}
11.20_常见对象(==号和equals方法的区别)
“==”
是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
"equals"方法
是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性