挖穿Android第十一天

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方法比较的是对象中的属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值