Java 面试题集锦 (一)

Q1:面向对象的特征有哪些方面?

A1:面向对象的特点是:封装,继承,多态;
    封装:把数据和操作数据的方法绑定起来,对数据的访问只通过已定义的接口。
    继承:子类在原有基础上功能的扩展,继承让变化中的软件系统有了一定的延续性,同时,继承也是封装程序中可变因像的重要手段;
    多态:不同类型的子类对同一消息做出不同的响应,多态又分为编译时多态和运行时多态,方法重载实现编译时多态,方法覆写实现运行时多态,其中运行时多态最为核心。

Q2:String 是最基本的数据类型吗?

A2:不是,基本数据类型有八种,分别是byte,short,int,long,float,double,boolean,char;

Q3:float f=3.4;是否正确?

A3:不正确,3.4是双精度数,将双精度数(double)赋值给浮点数(float)属于向下转型,可能会造成精度流失,因此需要强制类型转化,float f=(float) 3.4或 float f=3.4F;

Q4:short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

A4:s1 = s1 + 1中,1是int 型,s1+1 的结果是int型,不能直接赋值给shot型,需要进行强转 S1=(shot)S1+1;
     s1 += 1 中本身隐藏了一个类型强转,因此,没有错。

Q5:&和&&的区别?

A5:&有两种算法,按位与和逻辑与,&&是短路与;逻辑与和短路与差别非常大,虽然两者都要求运算符两边都是true才能保证结果为true,&&之所以为称为短路与是因为一旦运算符左边出现false,就会短路该运算,直接为false。比如在验证用户登录时判定用户名不是null而且不是字符串的表达式为:username!=null&&username.equals(" "),表达式顺序不可变。

Q6:int和Integer有什么区别?

A6:int为基本数据类型,int的包装类是Integer,大小比较时使用"==".
      Integer 是引用数据类型,范围在-128~127之间,大小比较可以使用"==",但超出范围后,超出的数据会在堆上重新开辟空间,就必须使用"equals()"比较大小。

Q7:解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

A7:内存中的栈(stack):基本类型变量定义,对象引用,函数调用的现场保存;
      堆(heap):通过new关键字和构造器创建的对象保存在堆中;
      静态区(static area):字面量和常量放在静态区;
      栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。 

    
     


 

猜你喜欢

转载自blog.csdn.net/fayfayfaydyt/article/details/82141899