java面试基础题(一)

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

 抽象、继承、封装、多态                                                                                                                                                  

2、访问修饰符public,private,protected,以及不写(默认)时的区别? 

修饰符    当前类   同包 子类       其他包
public       √     √           √               √
protected      √     √      √            ×
default       √     √           ×            ×
private       √     ×           ×            ×
不写时默认default                                                                                   

3、String 是最基本的数据类型吗?      

 不是                                                                                                                                         

4、float f=3.4;是否正确?                                                             

  不正确,精度不准确,应该强制类型转换,如下所示:float f=(float)3.4                                                                                          

5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?                      

shorts1 = 1; s1 = s1 + 1;s1+1运算结果是int 型,需要强制转换类型;short s1 = 1; s1 += 1;可以正确编译,自动类型提升。                                                            

6、Java有没有goto?          

  goto是java 中的保留字,现在没有在java 中使用。

 7、int和Integer有什么区别?

Java 提供两种不同的类型:引用类型和原始类型(或内置类型);int是java的原始数据类型,Integer 是java为int提供的封装类。Java 为每个原始类型提供了封装类:

 原始类型: boolean,char,byte,short,int,long,float,double

 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。

8、&和&&的区别?

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。  

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

  堆区:

(1).存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
(2).jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.
(3).一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
  栈区:
(1).每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
(2).每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
(3).栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
(4).由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.
  静态区/方法区:
(1).方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
(2).方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
(3).全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。                                                                                                                                                   String str = new String("hello");变量str放在栈上,用new创建出来的字符串对象放在堆上,而"hello"这个字面量是放在方法区的。                                                                                           

10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应, 例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.5)的结果为12,Math.ceil(-11.5)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.5)的结果为11,Math.floor(-11.5)的结果是-12;round方法,它表示“四舍五入”,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
                                                                                            





猜你喜欢

转载自blog.csdn.net/lihua5419/article/details/80339836