• 学习面试题Day04


    1、简述Java派生类中的构造方法如何为父类传递参数。
         在Java中,使用super关键字加括号()的形式来为父类的构造方法提供参数,通过参数的数目和类型来决定调用哪个构造方法。如果调用
    的是父类的默认的无参数构造方法,则可以不必显式地使用super()。
    2、简述接口和抽象类的区别。
         抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是
    一种特殊形式的抽象类,在Java语言中,抽象类表示一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
    3、简述一下内部类的实质是什么。
         内部类根据定义的情况可以分为以下4种:
         (1)静态内部类:它相当于外部类的静态成员一样,使用static修饰的内部类,它隶属于外部类,使用起来相当于一个独立的外部类;
         (2)成员内部类:它相当于外部类普通的成员一样,隶属于外部类的具体对象,在定义它的时候,需要先创建外部类对象,再创建它的实
    例;
         (3)局部内部类:它定义在一个方法的方法体中,它往往仅作为方法短暂的使用,只能访问用final修饰的局部变量;
         (4)匿名内部类:它也定义在方法体中,但是它没有一个具体的名字,具有非常大的灵活性,工作本质与局部内部类类似。
    4、包应该如何被创建及使用。
         包是Java程序中关于命名空间的一种手段,它可以有效的解决类重名的问题。当需要把一个类定义在某个包下的时候,需要使用package关
    键字进行定义;当需要使用其他包下的类的时候,则需要使用import关键字进行导入。
    5、说明private,protected,public和default的区别。
         它们都是访问控制符,他们的区别如下:
         (1)public:可以被所有其他类访问;
         (2)private:只能被自身访问和修改;
         (3)protected:自身,子类及同一个包中类可以访问;
         (4)default(默认):同一个包中的类可以访问,声明时没有加修饰符,认为是friendly。
    6、int和Integer有什么区别?
         int是基础数据类型,字节长度为4,它的创建不会在堆内存中开辟空间,一般保存在栈内存里,可以用算术运算符进行加减乘除等操作。在
    参数传递的时候,直接传递它的值。
         Integer是int的包装类,而本质是一个类,它的创建会在堆内存中开辟一块新的空间。它的含义也表示一个整型的数字,但是,算术运算符
    不能操纵它。在参数传递的时候,传递的是它所代表的对象的一个引用。
    7、如何用八进制和十六进制来表示整型数据?
         Java中八进制字面量采用0开头,十六进制采用0x开头。
    8、如何用BigDecimal类进行精确运算?
         使用BigDecimal类来进行精确的算术计算,也就是使用它所提供的一系列的API,主要分为以下步骤。
         (1)用float或double变量构建BigDecimal对象。通过构造方法或valueOf()方法;
         (2)通过调用BigDecimal的加、减、乘、除等,相应的方法进行算术运算;
         (3)把BigDecimal对象转换成float、double、int等类型,通过类似xxxValue()等方法进行转换。
    9、boolean和它的包装类的区别在哪里?
         boolean是基础数据类型,Boolean是类;
         boolean一般存于栈空间中,Boolean对象存放在堆空间中;
         boolean有true和false两种值,Boolean除了true和false以外,还有null;
         Java5.0以前,不能把Boolean用于条件语句,需要转换为boolean以后在使用。
    10、char能否存储汉字?
         char是可以存储汉字的,每个中文字符都有对应的Unicode编码。
    11、字符串字面量是否自动生成一个String对象?
         答案是肯定的。字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自动的创建一个String对象,并返回这个对象的引用。
    12、字符串对象池的作用是什么?
         对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来一个字符串的代码时,会到String的对象池
    中去检查是否有一个字符序列相同的对象。如果有,就取现成的对象,如果没有,则在对象池中创建一个对象,并返回。
    13、StringBuffer和StringBUilder存在的作用是什么?
         在Java程序中,如果有大量拼接字符串的需要的话,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的产生
    ,以提高程序的性能。它们两者的作用相似,只不过StringBuilder线程是安全的。
    14、如何输出反转过后的字符串?
         实现字符串的反转一般来说有两种手段,第一是利用字符串存储字符数据的原理,取出它的char数组,进行重新排列并保存;第二则是生成
    StringBuffer对象,直接使用StringBuffer的reverse()方法。
    15、如何使用指定的字符集创造String对象?
         使用带有字符集编码的String的构造方法就可以用指定的字符集来重新创造字符串对象了,该方法的参数包括两个:一个是byte数组;另一
    个则是字符集编码的字符串形式,例如,UTF-8、GBK、ISO-8859-1等。

  • 相关阅读:
    Java并发2
    使用Redis锁可能出现的问题
    社区项目前端vue总结
    社区项目Redis分布式锁穿透击穿雪崩
    社区项目遇到的问题
    html2canvas 下载的图片有空白 Amy
    html2canvas 支持backgroundClip:text Amy
    查看nacvicate连接数据库密码
    CPU飙升问题排查
    vue3 学习笔记
  • 原文地址:https://www.cnblogs.com/android-blogs/p/5622301.html
Copyright © 2020-2023  润新知