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。