java 面试基础

1.什么是面对对象?

面向对象编程是使用类,对象,继承性、多态性、封装性和抽象的一种程序设计方法。

注意“基于对象”和“面向对象”的区别

1.基于对象,通常是指的是对数据的封装,以及提供一组方法对封装过的数据操作。

2.面向对象,则是基于对象的基础上增加了多态性。所谓的多态,就是可以用统一的方法对不同的对象进行同样操作。

2.什么是多态?

多态即事物在运行过程中存在不同的状态。多态可以分为编译时多态和运行时多态,编译多态是指方法重载,运行多态是指方法重写

对于运行多态需要满足以下三点:

1.要有继承关系

2.子类重写父类方法

3.父对象的引用指向子类对象

多态实现的机制

其实就是依靠静态分配和动态分配

动态分配是指在运行期间才能确定变量的实际类型,典型的就是方法重写。只有在运行期间。根据实例化子类的不同,调用不同子类中重写的方法。

静态分配是指在编译时期就能完全确定,在类加载的解析阶段就会把涉及的符号转化为可确定的直接引用,不会延迟到运行期再去完成,典型的例子就是方法重载。

3.接口与抽象类的区别?

抽象类是一个包含具体方法和抽象方法的(方法未被实现)的类,抽象方法必须被该抽象类的子类实现。抽象类是可以继承的。

接口是描述类的一站蓝图或者说是类的一种契约,他包含了许多空方法,这代表着它的所有子类都应该拥有共同点。他的子类应该提供这些方法的具体实现。一个类需要用implement来实现接口,接口可以用extends集成其它接口。

4.int与integer的区别

a.Integer和new Integer()两者不会相等,因为他们在做比较的时候,不会经历拆箱过程,前者是指向栈(例如Integer =7),后者指向堆(例如Integer number=new Intager(7)),他们的内存地址不一样,所以不会相等。

b.如果两个都是new出来的则不相等,为false。

c.两个都是非new出来的Integer,如果数在-128-127之间,则为true,否则为false,java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);JDK本身会对-128到127之间的数进行缓存

d.int和Integer(无论new与否),Integer都会自动拆箱成Int再去比较,因此为true。

相关地址链接:https://blog.csdn.net/why15732625998/article/details/79437930

5.父类的静态方法能否被子类重写?

严格来说不存在静态方法重写,当一个子类继承父类,写同样的方法,只会将父类的静态方法隐藏。

6.静态属性和静态方法是否可以被继承,是否可以重写,为什么?

可以被继承,但不能重写。静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成的,不需继承机制就可以调用如果子类里面定义了静态方法和属性,那么这时候父类的静态方法 或属性称之为“隐藏”,你如果想要调用父类的静态方法和属性,直接通过父类名.方法名或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是 跟实例方法和属性不太一样,存在“隐藏”的这种情况。 

7.==与equals 和HashCode的区别?

1.==该操作符生成的是一个Boolean结果 ,它是应用用于操作数的值之间的问题。例如常见的(int、double、float、byte、char、short、long等);

2.Object对象的实例方法,比较两个对象的content。(如果是实例对象必须重写其equals方法)

8.String为什么设计成不可变的?

1.字符串常量池的需要,字符串常量池的是Java堆内存中一个特殊的区域,当创建一个String对象时,假如此时已经存在于创量池中,则不会再创建一个新的对象,而是引用已经存在的对象。

2.允许String对象缓存HashCode,Java中String对象的哈希码被频繁地使用,比如在HashMap等容器中。字符串不变性保证了hash码的唯一性。

3.安全性 String被许多的Java类用来当做参数,例如 网络链接地址URL,文件路径path,还有反射机制需要的String参数等,假若String不是固定不变的会引起安全隐患。

9. String 转换成 Integer 的方式及原理?

Integer.parseInt(String string)方法调用Integer内部的parseInt(String string)方法默认基数为10,parseInt内部首先判断字符串是否包含符号(-或者+),则相对应的negative和limit进行赋值,然后再循环字符串,对单个的char进行数值计算Character.digit(char ch,int radix),在这个方法中,函数肯定进入到0-9字符的判断,(相对于string转到int),否则会抛出异常,数字就是如上面的拼接然后生成的int类型数值。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值