类库
Attach source ---->extrenal File或者Folder---->找到源码所在的目录即可
- Api就是别人写好的一些类型。编译之后,就是.class文件。
- 将字节码文件打包之后,生成一个jar包(java专用的压缩包)
- 将来只要导入jar包,就可以使用这个jar包中全部的类型。
- 各种jar包合成一个类库。
- 自己创建的工程,默认导入了一个JAR System Libary,里面包含了jdk提供的常用的jar包
- 如何生成jar包
- 在eclipse中,选中要导出的内容,右键export---->java---jar File,弹出以下窗口,填写生成jar存放的地址,起上jar包名称,点击finish
?? - 第三方jar包:
- Jdk开发商是第一方,程序员作为用户是第二方,开源社区、组织者或其他公司都可以人为是第三方。
- 一旦将第三方的jar包导入到咱们的工程中类,就可以使用第三方开发好的所有功能。
- 导入第三方jar包
- 在工程下新建一个目录(专门用于存放第三方jar),命名为lib
- 将下载好的第三方jar,拷贝到lib目录中。
- 将导入的jar包添加到build path中(鼠标右键选择build path-->add to build path)
- 看到奶瓶状的标记出现,就说明该jar包中的所有类型可以直接使用了
-
- 使用第三方jar包,查看源码使用鼠标右键,选择open declaration
- 使用快捷键F3
- 使用键盘ctrl + 鼠标左键
- 关联源码
Object类型的概述
object类是所有类型的顶层父类,所有类型的直接或间接的父类,所有类型中(包括数组)都含有object类中的所有方法。 随意定义一个类,不手动显式其父类,那么这个类的父类就是Object Object类的构造方法:object()
- 可以让自己创建对象
- 让子类访问,所有的子类都会直接或者间接的访问到这个顶层父类的构造方法
- Object类在执行构造方法时,不去访问自己的父类,因为没有父类。
导包
getClass方法
- 不需要导包的情况
- Java.lang
- 同一个包下
- 返回当前对象的运行时类
- 运行时类:真正创建对象所使用的那个子类类型,写代码的时候可能使用的是父类类型的引用或者是接口类型的引用。
- 返回值类型:class类型的对象(不详细解释),就是加载到方法区的那个字节码对象
- 其中class类型中有一个getName()方法,可以返回当前运行时类的全类名。
- 代码示例
hashCode方法
- 根据对象的情况,生成一个整数,就是哈希码值,生成数字的方法就是hashCode()方法;
- 生成数字的原则:
- 同一个对象多次调用hashCode方法,必须返回相同的整数(程序多次运行不要求哈希码值保持一致)
- Object类型的hashCode方法,确实会根据不同的对象生成不同的整数
- 代码示例
toString方法
- 重写的原则:返回对象中的所有成员变量的值(对象的属性)
- 最终操作:
- 不需要手动重写,可以直接使用快捷键生成。Alt + shift + s s
equals方法
- 用于比较两个对象是否相等的方法,比较的就是”调用者”和”参数”这两个对象。
- 性质:
- 自反性:自己和自己相等
- 对称性:(A和B相等,那么B和A就相等. A.equals(b)为true,那么B.equals(a)也就是为true
- 传递性: A.equals(B)如果为true,并且B.equals(C)为true,那么A.equals(C)就为true
- 一致性:A多次调用equals方法用于和B对象进行比较,应该返回相同的判断结果。
- 在object类型中,比较的是两个引用是否都指向同一个对象,如果是,才返回true,相当于是比较的两个对象的地址值是否相等。
- 在实际生活中,比较两个对象的内存地址,没有什么意义。因此在自定义的子类中,都要重写这个方法。
- 重写的原则:一般是比较两个对象中的所有属性是否都全部相同。
- 操作:
- 不需要手动自己重写equals方法,直接使用eclipse中的快捷键即可
==和equals的区别
- ==和equals都是用于比较数据是否相等的方法
- 不同点:
- 比较内容的不同
- ==可以比较任意数据类型,既可以比较基本数据类型,也可以比较引用数据类型。
- equals方法只能比较引用数据类型
- 比较规则不同:
- ==在比较基本数据类型的时候,比较的是数据的值,比较引用数据类型时,比较的是地址值。
- equals方法在重写之前,比较的是两个对象的地址值,在重写之后比较的是属性的值。
Scanner
- Scanner就是一个扫描器,可以扫描指定设备的基本数据类型和字符串。
- 构造函数
- Scanner(inputStream is)扫描指定的输入流
- Scanner(File f)扫描指定文件
- Scanner(String path)扫描一个指定的字符串路径
- 扫描器可以解析基本数据类型和字符串
- 录入基本数据类型
- nextByte():获取一个byte数据
- nextShort():获取一个short数据
- nextInt():获取一个int数据
- nextLong():获取一个long数据
- nextFloat():获取一个float数据
- nextDouble():获取一个double数据
- nextboolean():获取一个boolean数据
- 注意事项
- 没有nextChar()这个方法,一般都是直接录入字符串
- 键盘录入的数据,不是java代码,所以float类型的常量不需要加f
- 录入字符串类型
- next():可以录入下一个完整的标记,返回一个字符串,通过空格分隔各个标记。
- nextLine():可以录入一个完整的标记,返回一个字符串,通过换行符来分隔各个标记。
- 注意事项:
- 当你调用完以空格作为分隔符方法之后,在调用一个以换行符为分隔符的方法式,这个方法不会等待你继续录入,而是直接结束了程序。
String
- String就是字符串类型,属于java.lang包,不需要导包。
- 所有的字符串常量(“Hello World”,”abc”....)都属于String类型的对象
- 字符串字面值属于常量,存储在方法区的常量池里面。
- String类型是一个常量,在创建之后无法更改(是一个不可变的字符序列)
- 不变可变的原因是String类型只提供了构造方法,没有提供set方法,因此只能在创建对象的时候,初始化成员变量,将来对象创建完成之后,无法通过方法来修改。
String类型的构造方法
- String():创建一个空字符串
- String(String str):创建参数字符串的一个副本(参数字符串是在常量池中,构造方法创建的字符串是在堆内存中)
- 返回当前对象的字符串表示形式。
- Object类型中,这个方法的实现:全类名+ @+哈希码值的十六进制表示
- getClass().getName() + "@" + Integer.toHexString(hashCode());
- 打印结果内容简称为:对象的内存地址
- 对象返回这样的一个地址值的字符串,没有什么意义。因此对于子类而言,需要重写父类的这个方法。
??
|