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…