Java面试题---Java基础(二)

11、静态变量和实例变量的区别?

语法上:静态变量前加static,实例变量不需要加;

运行上:静态变量不属于某个实例对象,而是属于类,也称作类变量,只要程序加载了字节码文件,静态变量就会被分配空间,可以直接使用类名来引用;实例变量属于某个对象的属性,必须创建实例对象,其中的实例变量才会被分配空间,通过实例对象来引用。

12、是否可以从一个static方法内部发出对非static方法的调用?

不可以,非static方法是要与对象关联在一起的,必须创建一个对象之后才能使用,二static方法调用时不需要创建对象,可以直接调用。当一个static方法被调用时可能还没有创建实例对象,那么这个非static方法不知道要关联在哪个对象上,逻辑不成立。

Java自动装箱和拆箱

装箱就是自动将基本数据类型转换为包装类型;调用方法Integer的valueOf(int)方法

拆箱就是自动将包装类型转换为基本数据类型;调用方法Integer的intValue()方法

13、Integer和int的区别

int是Java的八大基本数据类型之一,Java为基本数据类型提供了封装类,Integer是int的封装类;

int的默认值为0,Integer的默认值为null;

Integer可以表示出赋值和值为0的区别,int不能;

Integer中还定义了表示整数的最大值和最小值(-128~127),如果数值在-128到127之间便返回指向IntegerCache.cache中已存在的对对象的引用,否则创建一个新的Integer对象。

14、Math.round(11.5)等于多少,Math.round(-11.5)等于多少

Math中提供了三种取整方法,ceil,floor,round,ceil意思为天花板,向上取整;floor意思为地板,向下取整;round为四舍五入,算法为Math.floor(x+0.5),将数字加上0.5再向下取整;

Math.round(11.5)=12;Math.round(-11.5)=-11

15、请说出作用域public,private,protected,以及不写时的区别?

不写时表示friendly

作用域当前类同一package子孙类其他package
publictruetruetruetrue
protectedtruetruetruefalse
friendlytruetruefalsefalse
privatetruefalsefalsefalse

16、Overload 和 Override 的区别。Overload 的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是重写的意思。

重载Overload表示同一个类中可以有多个名称相同的方法,但是这些方法的参数列表不同(参数个数或类型不同);

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类调用这个方法时,将直接调用子类中重写的这个方法,相当于将父类中这个方法覆盖了,这也是面向对象编程中多态性的一种表现。重写的方法只能抛出比父类更少的异常,另外,如果父类中的方法修饰符为private,子类则不存在覆盖机制,相当于子类中一个全新的方法。

如果两个方法的参数列表完全一样,不可以让他们的返回值不同来实现重载。编程者通过方法名和参数列表调用参数,不一定要获取方法的返回值,所以不能通过返回值来判断编程者需要的是哪个方法。

17、构造器Construtor是否可以被重写?

构造器不能被继承,因此不能被重写Override,但是可以被重载overload

18、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的 main 方法?

接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的main方法。

抽象类和普通类的唯一区别就是不能创建实例化对象和允许有abstract方法。

19、写clone()方法时通常有一行代码,是什么?

super.clone();clone有缺省行为,首先要先把父类中的成员复制到位,然后才是复制自己的成员

Java中创建对象有几种方式?

①new 创建新对象

②通过反射机制

③采用clone机制

④通过序列化机制

20、向对象的特征有哪些方面

面向对象的编程语言有封装、继承 、抽象、多态等 4 个主要的特征。

①封装

封装的目标是实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。对象是封装的最基本单位。

让变量和访问这个变量的方法放在一起,将一个类中的成员变量全部定义成私有的,只有这个类自己的方法才可以访 问到这些成员变量,这就基本上实现对象的封装,就很容易找出要分配到这个类上的方法了,就基本上算是会面向对象的编程了。把握一个原则: 把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中。

②抽象

抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。

③继承

在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若 干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。

④多态

多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个 引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运 行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即 不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性多态性增强了软件的灵活性和扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值