万丈高楼平地起之Java基础二

160 阅读5分钟

1. 权限修饰符的使用范围?

一图胜千言


2. 继承的注意事项?

A、尽量隐藏父类的内部数据,不要让子类直接访问到父类的成员变量。

B、子类不得随意访问、修改父类的方法;如果父类中的某些方法使用final修饰,子类不能继承。

C、不要在父类构造器中调用将要被子类重写的方法。

3. == 与 equals差别?

== : 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。

equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

  • 情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
  • 情况2:类覆盖了 equals() 方法,覆盖 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true (即认为这两个对象相等)。

4. 为什么使用ArryList数组(ArryList源码分析将在后文详细介绍)?

arrylist是可动态调整大小的数组,在我们不知道新建数组具体容量时,采用arrylist可以有效使用内存空间,不会浪费。

5.枚举类的使用?

枚举类可以看作是一组固定的常量值,在工作中你是怎样使用枚举类去比较和判断的,位置的不同,是否会影响到程序的运行,报错的异常是什么?

6.你对反射的理解?

通过反射,Java代码可以发现有关已加载类的字段,方法和构造函数的信息,并可以在安全限制内对这些字段,方法和构造函数进行操作。(还是不太理解反射,我熟练理解反射后,会就这一问题,再次详细描述)

对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;

有一篇好的文章:www.jianshu.com/p/607ff4e79…

7.深拷贝和浅拷贝的差别?

对于基本类型来说,浅拷贝是对值的复制;对于引用类型来说,浅拷贝是对对象地址的复制,即两个对象同时指向同一个内存地址,拷贝对象更改内存地址里面的实际数据,原对象也会更改。深拷贝是在栈中新生一个空间,两个对象指向不同的内存地址,是两个不同的对象,一个对象的改变不会对另一个对象产生影响。

8.内部类、成员内部类、局部内部类以及匿名内部类?

内部类就是一个类中还定义一个类,与全局属性或者方法处于同一级别就是成员内部类;定义在方法内的的类就是局部内部类;不定义类的名字,在使用的地方直接定义对象就是匿名内部类。

成员内部类举例说明:将医院看成一个类,各个科室看作一个成员和属性,院长看作为一个成员内部类,院长可以访问各个科室的医生,调用各个科室的设备与器材;当有一个科室和院长的技能相符合时,直接找院长,不去这个科室;科室主任要使用院长的工具,需通过院长才可以获取;术语:

成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括静态成员和私有成员);

成员内部类和外部类的属性和方法名同名时,外部类的属性和方法会隐藏;但可以通过外部类.this.成员变量的方式访问外部类的属性和方法;

外部类必须通过成员内部类的对象来访问内部类的属性和方法;

成员内部类对象会隐式的引用一个外部类对象;

成员内部类可以有public\private\protected以及默认访问权限。

局部成员内部类举例说明:把病人看作一个类,心胸肺科医生看作一个类,需要心脏搭桥的病人是型胸肺科医生方法的一个内部类,只有具备资格的心胸肺科医生才可以见到需要搭桥的心脏,不可能是一个医生就把病人开胸搭桥心脏。术语;

不能有private、public、protected和static等修饰符,与局部变量类似。

只能在定义局部内部类的方法或者作用域中实例化;

局部内部类的对象不能使用该内部类所在方法或者作用域的非final局部变量;

只能通过内部类对象来访问局部内部类对象的属性与方法。

匿名内部类举例说明:医院人手不够,刚好有另外一家医院的医生在这里,请他来帮忙,对于外界来说,这个病人得到救护,就是医院提供的,至于这个医生是不是这家医院的人,用了什么方法,不必理会。术语:

唯一一种没有构造器的类;匿名内部类在编译时,编译器会自动起名xxx$1.class;

匿名内部类不能存在任何静态的变量、方法等;

匿名内部类是局部内部类的特例;

大部分匿名内部类用于接口返回;

9.为什么 Java 中只有值传递?


值传递和引用传递的区别在于,实参是否复制一份给形参,而不是实际传递的内容。这道题我将在不日内重新画图配合对其他文章的理解,再次详细描述下个人理解。

有篇文章分析的透彻:mp.weixin.qq.com/s/F7Niaa7nD…