Day11
标签(空格分隔): java基础
day1-5:熟悉java 的语法规则
day6-10:思想(自定义类) Scanner System Math
day11-day14:API 系统常用类
day11: eclipse工具 Object类
day12: String类 字符串类
day13:StringBuffer和StringBuilder
day14:正则表达式 很多很多常用类
常用开发工具
记事本 Editplus eclipse MyEclipse
Eclipse:免费
MyEclipse:插件收费
JBuilder(现在不流行)
内容辅助键
Alt + /
快捷键
新建 Ctrl + N
格式化 Ctrl + shift + f(有可能被占用)
导包ctrl + shift + O (重要)
查看源码: F3 或者 Ctrl + 左键点击
抽取方法 Alt + shift + M (重要)
改名:Alt + shift +R (重要)
写完右边代码自动补全左边: Ctrl+2 —>松手 + L 自动补全
不同项目下的类相互访问问题
怎么解决?
我们需要把要使用的项目的工程 打成jar包
方法:右键工程–选择Export –选择java–jar File—选择导出的目录 –finish 完成
如果要在不同项目下使用,就需要导入
对着导出来的jar包右键复制—到要使用的项目下,点击右键–paste(粘贴)–如果要让这个jar包生效,这个时候需要把jar添加到classPath路径
步骤:在jar包右键—BuildPath —add To BuildPath
怎么导入工程 怎么删除工程(重要)
A:删除项目
* 选中项目 – 右键 – 删除
* 从项目区域中删除
* 从硬盘上删除
* B:导入项目
* 在项目区域右键找到import
* 找到General,展开,并找到
* Existing Projects into Workspace
* 点击next,然后选择你要导入的项目
* 注意:这里选择的是项目名称
关于debug调试错误的方法
(1)在需要调试的代码位置打上断点,断点怎么打?在行号的左侧,双击,双击完之后会出现一个小蓝点,这个代表一个断点,如果想打多个断点?在就多行代码处双击即可.
注意:我们打断点的时候,要在有效的代码行去,不能在注释的代码的地方打断点
(2)打完断点要进入debug模式
两种方案:
1,在代码处右键—选择DebugAs —>java Application—>提示问是否进入—>YES
进入后,在右上方可以看到有variables(变量处)和BreakPoints(你打的多少个断点),变量处可以看到程序涉及的变量的编号,断点处,是所打的断点,以后可以在之里清除断点
2,点左上方的小甲虫子处就可以
- 断点的使用
进入下一步 : 按F6
跳进所执行的方法:按F5即可
如果要切换会来JAVA视图,要自己手动点击右上角的java处,这个时候就可以切换回来.
API
API: Application Programming Interface 应用程序编程接口
JAVA API:java 给我们提供的一些应用程序编程接口,其实就是一些类/接口,以后我们在API的时候,指的是文档说明书.但不代表API就是那本文档说明书
Object
所有的类都直接或者间接继承了Object类,意味Object的非私有方法我们的子类都有.
toString方法 (练习)
Object类的toString()返回的是什么?返回的字符串由什么组成?
字符串
包名.类名 @ 十六进制的hashCode值
对于我们的类而言,这个方法没有太大的意义,能不能让这个方法继承过来的时候变得有意义?
怎么才算有意义?
如果说,这个方法能够帮我们输出成员变量的赋值信息,这个时候我们认为有意义,通过观察,我们需要重写toString让这个方法变得有意义.
重写有两种方案:
第一种:自己重写,按你自己想输出什么信息就输出什么信息
第二种:由Eclipse帮我们重写,需要使用Alt+shift +S –>(松手) S
重写完之后,我就可以用对象名来调用toString方法,也就变得更有意义了.这个时候不会再使用父类的了,因为我们重写了.
Object类里面的equals方法 (练习)
我一个类在没有重写equals方法之前,这个equals方法比较的是地址值.
任意一个类从父类Object里面继承过来的equals方法都是比较地址值的,而我们希望的是能够比较对象的属性(成员变量)信息.这个时候需要怎么做?重写equals方法来帮我们实现这个目的.
//重写equals方法
public boolean equals(Object obj) {
Student s = (Student)obj;
//this.name 是一个字符串,用字符串对象来调用equals方法
//在字符串里面也重写了这个equals方法,比较的是内容
//this.age == s.age 这个为什么用==号呢,因为age是基本数据类型,基本数据类型==号不再比较地址值,是比较值
return this.name.equals(s.name) &&this.age == s.age;
}
==号和equals的区别(非常非常重要)
==和equals方法的区别
共同点:都可以做比较,返回值都是boolean
区别:1,==是比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
2,equals方法只能比较引用数据类型,equals方法在没有重写之前,比较的是地址值,底层依赖的是==号,但是比较地址值是没
有意义的,我们需要重写equals方法比较对象中的属性值。