Java基础学习第十一天——Object类

文档版本开发工具测试平台工程名字日期作者备注
V1.02016.03.03lutianfeinone
V1.12016.04.11lutianfei对第一版笔记的整理补充

Eclipse的概述

  • Eclipse是一种可扩展的开放源代码的IDE。
  • Eclipse的特点描述
    • 免费
    • 纯Java语言编写
    • 免安装
    • 扩展性强

MyEclipse概述

  • 在Eclipse基础上追加的功能性插件,对插件收费
  • 在WEB开发中提供强大的系统架构平台

Eclipse的基本使用

HelloWorld案例
  • 1、File-> New ->Project 选Java Project

  • 2、 命名工程后选择Finish

  • 3、 新建一个包

  • 4、新建一个类

  • 5、 编译

    • 自动编译,在保存的那一刻帮你做好了
  • 6、运行

    • 点击Run菜单下的run。也可以使用快捷键Ctrl+F11
    • 选择要运行的文件或者在要运行的文件内容中
    • 一般情况下:右键 – Run as - Java Application即可
    • 看到Console即可,它就是Eclipse自带的控制台


源代码语法检查
  • 红色波浪线 :错误的源代码
  • 黄色波浪线 :未使用的成员或有安全隐患的成员
大纲视窗的使用
  • 根据大纲视窗中的不同图标,判断不同的变量状态。

  • 选中某个类后按F4可以看到=该类的继承状态。

基本环境设置
字体颜色和大小
  • 代码区:
    window -> Preferences -> General -> Appearance -> Colors And Fonts -> Java Edit Text Font
  • 控制台:
    Debug -> Console font

  • 其他文件
    Basic -> Text Font

窗口还原

window ->Perspective-> Reset Perspective

控制台还原

WindowShow ViewConsole

常用快捷键
  • 内容辅助键

    • Alt+/ 起提示作用
    • main+alt+/,syso+alt+/,给出其他提示
  • 格式化 ctrl+shift+f

  • 导入包 ctrl+shift+o
  • 单行注释 ctrl+/
  • 多行注释: ctrl+shift+/
  • 多行去注释:ctrl+shift+\
  • 代码上下移动 选中代码alt+上/下箭头
  • 查看源码 选中类名(F3或者Ctrl+鼠标点击)
提高开发效率的快捷键
  • 自动生成构造方法
    • 无参构造方法 :Alt + Shift+s+c
    • 带参构造方法 : Alt + Shift+s+o
  • 自动生成get/set方法 : Alt + Shift+s+r

  • 继承抽象类,或者实现接口

    • 如下设置可将重写方法模板直接给出
package cn.itcast_03;

public class Cat extends Animal {

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("Hello Cat");
    }

}
  • 注:这里@Overide是注解的意思,即这个方法是重写父类的,如果和父类名字不一致就会报错。
生成并使用jar包
  • jar是什么?
    • jar是多个class文件的压缩包。
  • jar有什么用?
    • 用别人写好的东西
  • 打jar包
    • 选中项目–右键–ExportJavaJar–自己指定一个路径和一个名称–Finish
      • step1:
      • step2:
      • step3:
  • 使用jar包
    • 复制到项目路径下并添加至构建路径。
      • step1:
      • step2:


Eclipse中如何制作帮助文档
  • 选中项目–右键–Export–Java–Javadoc—Finish
删除和导入项目
  • 删除项目
    • 选中项目 – 右键 – 删除
      • 从项目区域中删除
      • 从硬盘上删除
  • 导入项目
    • 在项目区域右键找到import
    • 找到General,展开,并找到
      • Existing Projects into Workspace
    • 点击next,然后选择你要导入的项目
      • 注意:这里选择的是项目名称
修改项目名称
  • 除了项目文件夹名字要修改,不要忘记了配置文件.project中的部分修改。
高级(Debug)调试
  • 单步调试:F6

  • 断点查看基本数据类型和引用数据类型的参数传递问题



Object类

Object类的成员方法
  • public int hashCode()

    • A:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算
    • B:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同
    • C:不是对象的实际地址值,可以理解为逻辑地址值
  • public final Class getClass()

    • A:返回此 Object 的运行时类。
    • B:可以通过Class类中的一个方法,获取对象的真实类的全名称
      • eg:
Student s = new Student();
Class c = s.getClass();
String str = c.getName();
System.out.println(str); // cn.itcast_01.Student

//链式编程
String str2  = s.getClass().getName();
System.out.println(str2);


  • public String toString()
    • 返回该对象的字符串表示,默认是全路径+@+哈希值十六进制表示。
    • 直接输出一个对象的名称,其实就是调用该对象的toString方法。
    • 其返回值等价于:getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
      • toHexStringInteger类下的一个静态方法:把一个整数转成一个十六进制表示的字符串
    • eg:
    //两行代码结果一致
    System.out.println(s.getClass().getName() + '@'
    + Integer.toHexString(s.hashCode()));

System.out.println(s.toString());


  • public boolean equals (Object obj) : 指示其他某个对象是否与此对象“相等”。

    • 默认情况下比较的是地址值
  • protected void finalize(): 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。

  • protected Object clone():创建并返回此对象的一个副本

    • Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。
    public class Student implements Cloneable {
        private String name;
        private int age;

        public Student() {
        super();
    }

    public class StudentDemo {

    public static void main(String[] args) throws CloneNotSupportedException {
        //创建学生对象
        Student s = new Student();
        s.setName("林青霞");
        s.setAge(27);

        //克隆学生对象
        Object obj = s.clone();
        Student s2 = (Student)obj;
        System.out.println("---------");

        System.out.println(s.getName()+"---"+s.getAge());
        System.out.println(s2.getName()+"---"+s2.getAge());

        //以前的做法
        Student s3 = s;
        System.out.println(s3.getName()+"---"+s3.getAge());
        System.out.println("---------");

        //其实是有区别的
        s3.setName("刘意");
        s3.setAge(30);
        System.out.println(s.getName()+"---"+s.getAge());
        System.out.println(s2.getName()+"---"+s2.getAge());
        System.out.println(s3.getName()+"---"+s3.getAge());
    }
}


toString 与 equals 方法的重写
  • toString方法的重写

    • 右键->Source -> Generate toString()…
    • 快捷键: Alt + Shift+s+s
  • equals方法的重写:

    • 方式一:手动重写(如下)
    • 方式二:自动生成:
      • 右键->Source -> Generate hashCode and equals()…
      • 快捷键: Alt + Shift+s+h
  • Eg: 重写equals方法:

@Override
public boolean equals(Object obj) {
    //name是String类型的,而String是引用类型的,所以,在这里不能直接用==比较,应该用equals()比较
    //String的equals()方法是重写自Object类的,比较的是字符串的内容是否相同
    //this -- s1
    //obj -- s2
    //我们要使用的是学生类的特有成员变量,所以要向下转型
    Student s = (Student)obj; //s -- obj -- s2;
    if(!(obj instanceof Student)){
                return false;
            }
            //如果是就继续

            Student s = (Student)obj;
            //System.out.println("同一个对象,还需要向下转型并比较吗?");
            return this.name.equals(s.name) && this.age == s.age;
}


==equals的异同
  • ==的用法:
    • 基本类型:比较的就是值是否相同
    • 引用类型:比较的就是地址值是否相同
  • equals 只能比较引用类型,默认情况下比较的是地址值是否相同,但可以根据需求重写该方法。

  • instanceof: 判断对象名是否是该类名的一个对象

    • 格式:对象名 instanceof 类名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值