黑马程序员-java基础篇

时间:2022-08-27 10:42:02

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1.

内部类,匿名内部类,包,受保护protectedObject

l 内部类,匿名内部类,书写格式

l 包:包定义和使用 javac -d , 多个包之间类的访问

l 受保护的权限,特点是什么,4个权限的汇总

l Object类:特点,重写toString()equals()方法

2.

内部类

  在一个类的内部,定义了一个类,就是内部类

  内部类,可以直接使用外部类的成员,包括私有的

  但是,外部类,要使用内部类的成员,建立内部类对象

  直接访问内部类成员方法的格式:

l 内部类是非静态的,内部类的方法非静态的

 外部类.内部类 变量 = new 外部类().new 内部类();

Outer . Inner  in = out . new  Inner()

 变量.内部类的方法();

l 内部类是静态修饰的,内部类的方法是非静态的

  外部类.内部类 变量 = new 外部类.内部类();

Outer . Inner in=new Outer . Inner()

  变量.内部类方法();

l 内部类是静态修饰,内部类的方法是静态修饰

  外部类.内部类.内部类方法();

Outer . Inner . Fun()

   局部内部类,类是定义在外部类的方法中!!

   访问局部内部类的方法,必须通过外部类方法

   局部内部类,继承类,或者实现接口

   具备内部类方法,访问局部变量,变量被final修饰,生命周期问题,变量跟随方法的声明周期走,类的对象生命长于方法。加上finall修饰以后,编译的时候,就直接将变量的值进行了赋值操作,赋值给了局部内部类的方法

 

3.

 匿名内部类

  实现匿名内部类,前提,必须有继承或者实现

  作用:简化书写用的,简化了接口的实现类,简化建立实现类对象操作

  匿名内部类,写在方法中:

  格式:  new 父类或者接口(){

              重接接口中的抽象方法

         };

4.

包的特点和作用

  对类文件进行分类管理

  对类提供多层命名空间,类名变成了,包名.类名

  包就是系统中的文件夹

  定义包,定义的代码,写在文件第一行,定义包的关键字 package 包名(全部小写)

  

5.

带包编译

l javac -d 目录 XXXX.java

l classpath环境变量,用于JVM寻找class文件使用的,临时配置

6.

包与包之间类的访问

l 包与包之间类的方法,注意的事项

l 保证类的名字别写错了,全类名 包名.类名

l 保证类中的权限,方法的全足够大,可以被外包程序访问

 包与包之间的类,能否进行继承

    第四种权限,受保护权限 protected 修饰的成员,只能被子类使用

    四种权限的使用图表

                 public   protected   default  private

    同一个类      OK       OK        OK     OK

    同一个包      OK       OK        OK

    子类中        OK       OK        

    不同包        OK

 

7.

导入包

如果使用外包中的类,没有必要每次都写包名,进行导入就可以了

导入包,导入的是包中的类

关键字import 包名.类名必须写在类的声明之前,定义包之后

 

java.lang程序的核心包,所有的类,不需要导入

JDK1.0-1.3版本,必须导入核心包lang

JDK1.4开始,lang包默认导入

8.

Jar

  Java中的压缩包,

  jar -cvf 压缩后的文件名  包名

  jar- xvf jar的文件名

 

9.

Object

 java.lang.Object类,是所有类的父类,Java中所有的类,都直接或者间接的继承Object类。构造方法是空参数的,第一行不是super

 JDK的源代码

 

 private static native void registerNatives();

 static{ registerNatives();}

 

 native 本地,运行的时候在本地方法栈中

 凡是Java中,见到native 方法非Java代码编写,这个方法的源代码是c++

 本地方法,作用是调用操作系统的中的功能。不公开成员的原始代码,程序人员不需要知道原始代码。

10.

Object类中的方法

l public String toStrng()

  返回String类型

  输出语句中,默认调用对象的toString()方法

  分析方法的原始代码

    getClass().getName() 获取到类的名字

  hashCode() 运算结果是十进制数

  Integer.toHexString 将十进制转成十六进制

  我们需要做的是覆盖toString()方法,返回自定义的字符串表示形式

  覆盖的依据是,类中的成员变量

  在重写toString()方法中,返回成员变量的值 -- 目的,方便观看类中成员变量的值,仅此而已

  如果类中,有成员变量,基本上要覆盖toString(),方便别人使用,提高用户体验

l public boolean equals(Object obj)

  Java认为所有的对象,都具备比较性,比较性的方法equals(),作用就是对象之间做比较

  方法的原始代码:

  public boolean equals(Object obj){

        return this == obj ;

  }

方法中,比较对象的实际内存中地址,对象都是new出来的,地址肯定不同,比较两个对象的地址是没有实际意义的!

重写equals方法,建立自己的对象比较形式,不比较地址,比较的是类中的成员变量的具体数值

 

覆盖equals建立对象自己的比较形式,这个方法equalsJava中做成了规范,对方调用一个类的equals方法,就是在比较对象中成员变量的值

对方法的参数,进行严格的判断

 

11.

 ==  equals区别

  == 比较运算符

  equals 是方法

 == 如果是基本类型,比较的是具体的数值

 == 是引用数据类型,比较的是实际的内存地址值

 equals方法,是Object类的一个比较对象的方法,默认比较两个对象的实际内存地址,重写equals方法,建立对象自己的比较方法,比较对象的成员变量