首页 > 编程语言 > 详细

Java基础知识03

时间:2019-10-13 11:01:51      阅读:81      评论:0      收藏:0      [点我收藏+]

一、Java面向对象3

1. 数组
(1) 数组:存储同一种数据类型的多个元素的容器。

二、Java面向对象4

1. 形式参数和返回值的问题
(1) 形式参数:
  类名:需要该类的对象
  抽象类名:需要该类的子类对象
  接口名:需要该接口的实现类对象
(2) 返回值类型:
  类名:返回的是该类的对象
  抽象类名:返回的是该类的子类对象
  接口名:返回的是该接口的实现类的对象
(3) 链式编程
  对象.方法1().方法2().......方法n();
  这种用法:其实在方法1()调用完毕后,应该返回一个对象;
    方法2()调用完毕后,应该返回一个对象。
    方法n()调用完毕后,可能是对象,也可以不是对象。

2. 包
(1) 其实就是文件夹
(2) 作用:
  A:区分同名的类
  B:对类进行分类管理
    a:按照功能分
    b:按照模块分
(3) 包的定义
  package 包名;
  多级包用.分开。
(4) 注意事项:
  A:package语句必须在文件中的第一条有效语句
  B:在一个java文件中,只能有一个package
  C:如果没有package,默认就是无包名
(5) 带包的编译和运行
  A:手动式
  B:自动式
    javac -d . HelloWorld.java

3. 导包
(1) 我们多次使用一个带包的类,非常的麻烦,这个时候,Java就提供了一个关键字import。
(2) 格式:
  import 包名...类名;
  另一种:import 包名...*;(不建议)
(3) package,import,class的顺序
  package > import > class

4. 权限修饰符
(1) 权限修饰符

  本类 同一个包下 不同包下的子类 不同包下的无关类
private Y      
默认 Y Y    
protected Y Y Y  
public Y Y Y Y


(2) 这四种权限修饰符在任意时刻只能出现一种。
  public class Demo {}

5. 常见的修饰符
(1) 分类:
  权限修饰符:private,默认,protected,public
  状态修饰符:static,final
  抽象修饰符:abstract
(2) 常见的类及其组成的修饰
  类:
    默认,public,final,abstract
    常用的:public
  成员变量:
    private,默认,protected,public,static,final
    常用的:private
  构造方法:
    private,默认,protected,public
    常用的:public
  成员方法:
    private,默认,protected,public,static,final,abstract
    常用的:public
(3) 另外比较常见的:
  public static final int X = 10;
  public static void show() {}
  public final void show() {}
  public abstract void show();

6. 内部类
(1) 把类定义在另一个类的内部,该类就被称为内部类。
  举例:把类B定义在类A中,类B就被称为内部类。
(2) 内部类的访问规则
  A:可以直接访问外部类的成员,包括私有
  B:外部类要想访问内部类成员,必须创建对象
(3) 内部类的分类
  A:成员内部类
  B:局部内部类
(4) 成员内部类
  A:private 为了数据的安全性
  B:static 为了访问的方便性
  成员内部类不是静态的:
    外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
  成员内部类是静态的:
    外部类名.内部类名 对象名 = new 外部类名.内部类名();
(5) 成员内部类的思考题
30,20,10

class Outer {
    public int num = 10;
    class Inner {
        public int num = 20;
        public viod show() {
          int num  = 30;

            System.out.println(num);
            System.out.println(this.num);
            System.out.println(Outer.this.num);
      }
    }
} 

(6) 局部内部类
  A:局部内部类访问局部变量必须加final修饰。
  B:为什么呢?
    因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。
    所以,堆内存还是用该变量,而改变量已经没有了。为了让该值还存在,就加final修饰。
    通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。
(7) 匿名内部类
  A:是局部内部类的简化形式
  B:前提
    存在一个类或者接口
  C:格式:
    new 类名或者接口名() {
      重写方法;
    }
  D:本质:
    其实是继承该类或者实现接口的子类匿名对象
(8) 匿名内部类在开发中的使用
  我们在开发的时候,会看到抽象类,或者接口作为参数。
  而这个时候,我们知道实际需要的是一个子类对象。
  如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。

interface Person {
    public abstract void study();
}

class PersonDemo {
    public void method(Person p) {
        p.study();
    }
}

class PersonTest {
    public static void main(String[] args) {
        PersonDemo pd = new PersonDemo();
        pd.method(new Person() {
            public void study() {
                System.out.println("好好学习,天天向上");
            }
        });
    }
}

(9) 匿名内部类的思考题

interface Inter {
    void show();
}

class Outer {
    //补齐代码
    public static Inter method() {
        return new Inter() {
            public void show() {
                System.out.println("HelloWorld");
            }    
        };
    }
}

class OuterDemo {
    public static void main(String[] args) {
        Outer.method().show(); //"HelloWorld"
    }
}

7. Object类
(1) Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。
(2) Object类的构造方法有一个,并且是无参构造
这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造
(3) 要掌握的方法:
  A:toString()
    返回对象的字符串表示,默认是由类的全路径+‘@‘+哈希值的十六进制表示。
    这个表示其实是没有意义的,一般子类都会重写该方法。
    如何重写呢?过程我也讲解过了,基本上就是要求信息简单明了。
    但是最终还是自动生成。
  B:equals()
    比较两个对象是否相同。默认情况下,比较的是地址值是否相同。
    而比较地址值是没有意义的,所以,一般子类也会重写该方法。
    重写过程,我也详细的讲解和分析了。
    但是最终还是自动生成。
(4) 要了解的方法:
  A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。
  B:getClass() 返回对象的字节码文件对象,反射中我们会详细讲解
  C:finalize() 用于垃圾回收,在不确定的时间
  D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。
(5) 两个注意问题;
  A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。
  B:思考题 
    == 和 equals() 的区别?
    A:==
      基本类型:比较的是值是否相同
      引用类型:比较的是地址值是否相同
    B:equals()
      由Object类提供的,可以由子类来进行重写。只能比较引用类型。默认情况下,比较的是地址值是否相同, 这个时候和 “==”是等价的。
      但是,我们可以根据自己的需要重写该方法。Java中很多类(String类、Date类、File类等)都对equals方法进行了重写。

Java基础知识03

原文:https://www.cnblogs.com/nomad1c/p/11665142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!