黑马程序员技术交流社区

标题: Java面试题总结 [打印本页]

作者: fzc123    时间: 2016-7-26 20:08
标题: Java面试题总结
一、        基本知识
1.        JDK和JRE的区别
答:JDK是java语言开发工具包,包含JRE和开发工具(javac.exe等);JRE是java语言的运行环境,包含JVM和核心类库;JVM是java虚拟机,保证了java的跨平台性。

2.        JVM跨平台吗?
答:JVM不具有跨平台性,不同的操作系统所对应的JVM不一样。正是因为JVM的不跨平台,才能够使java语言具有跨平台性。

3.        保留字是什么?
答:保留字是还未使用的关键字,可能在java以后的版本中使用。有goto和const。

4.        java语言的特点?
答:开源,跨平台性,面向对象,多线程,多态。

5.        main是关键字吗?
答:不是的。main是主函数的名字,能够被虚拟机识别,是程序执行的入口。

6.        path和classpath的区别?
答:path环境变量配置的是可执行文件.exe的执行路径;能够在不同盘符下访问path路径下的可执行文件。Classpath配置的java语言编译后生成的字节码文件的执行路径。

7. 计算机最基本的存储单位是:字节(byte)
   计算机能直接识别的进制是:二进制

8进行运算的时,变量和常量有什么区别?
答:变量在运算过程中其值是变化的,可以被多次赋值。
常量则是固定的,只能赋值一次。

9标识符的组成?以及命名规则?
答:标识符有26个字母的大小写,0到9,_和$组成。
        命名规则:不能使用关键字,不能数字开头,严格区分大小写,要见名知义。
        函数名和变量名如果是多个单词组成,第一个单词的首字母小写,其余首字母大写。
        类名和接口名如果是多个单词组成,首字母全部大写。
        包名全部小写,多级包中间用.隔开。
        常量名全部大写,如果是多个单词,用_隔开。

10.变量数据类型分为哪几种?如何使用变量?
答:基本数据类型:整型:包括byte、short、int、long。浮点型:包括float、double。
字符型;char;布尔型:boolean。
引用数据类型:数组、类、接口。
变量需要先定义,再赋值,才能使用。

11.常量分为哪几种?
答:自定义常量和字面值常量。自定义常量是我们自己通过final修饰定义的常量。字面值常量包括整数、小数、布尔、字符、字符串,null(空常量)。

12.byte的范围多少?char的范围多少?
答:byte范围-128到127 。   char范围0到65535.

13. ASCII码表中 字符 '0'  , 'a' , 'A' 分别对应int类型的值是多少.
答:0在表中对应的值是48,a对应的是97;A对应的是65.

14. long是8个字节,float是4个字节,为什么long 比 float小?
答:底层采用的运算规则不一样。

15. 以取值范围的大小排列数据的基本类型.
答:double>float>long>int>char,short>byte

16.+=、-=、这些运算符内隐含了强制类型转换。  =

17.++和—的使用?
答:单独使用的时候,在前在后都一样。
        参与运算的时候,在前是先自加或者自减,然后再用新值参与运算。在后是先以原值参与运算,再进行自加或者自减。

18. 逻辑或 " | " 和 短路或 " || "有什么区别?
答:|不管前面的结果是真是假后面的都会运算,||前面为真后面的不参与运算。但是他们运算的最终结果是一样的。

19. 逻辑与 " & " 和 短路与 " && " 由什么区别?
答:&不管前面的结果是真是假后面的都会运算,&&前面为假后面的不参与运算。但是结果是一样的。

20.Math.round原理是什么?
答:round()方法是用来进行四舍五入操作的。原理是先加0.5,然后再取floor值。

21.生成随机数的方法?
答:第一种:Random类中的方法;第二种Math.random()方法,生成的是0.0和1.0范围之间的小数,包左不包右。

22.if…else..和三元表达的区别
答:能用三元表达式写的就能用if语句写,但是能用if语句写的,三元表达式不一定能写。if…else是语句,而三元表达式是一个式子(运算符),要求必须要有一个结果。

23.while、do while 、for的区别?(改进,改成两问)
答:do while语句是先执行后判断,while和for先判断后执行。
        for循环结束后,其中定义的初始化条件不能再使用。

24.if和switch区别?
答:if常用来进行区间(范围)的判断 ,而switch常用来进行固定值的判断。

25. switch语句的表达式可以放什么?
答:byte、short、char,int。JDK1.5以后可以使用枚举,1.7之后可以使用String。

26. 死循环的两种写法.
答:while(true)  和  for(;;)

27. break和continue的区别
答:break是用来终止(结束)循环的,循环不在执行。而且break还可以用于switch-case语句中。 而continue只能用于循环中,是用来结束本次循环,进行下一次循环的(如果条件满足就继续执行,如果条件不满足就结束运行)。

28.switch中break可以省略吗?default可以省略吗?
答:最后一个break可以省略,对结果没有影响。如果是其他的break省略,可能会发生case穿透。看需求,default是用来进行其他情况判断的,建议不要省略。

29:方法重载和方法重写的区别?
答:同一个类中出现方法名相同,参数列表不同(参数个数不同,对应参数的数据类型不同)的两个(或以上)的方法时,称为方法重载。方法重载与返回值的类型无关。
        子父类间,子类出现和父类声明完全相同的方法时,就称为方法重写。重写要求返回值的类型必须相同(或者有子父类关系)。

30.定义方法的步骤是什么:
答:要明确方法的返回值类型,明确方法的参数列表。

31.方法的调用?
答:有返回值的方法可以单独调用,但是没有意义;也可以放在输出语句中;还可以赋值调用(推荐使用)。没有返回值的方法直接调用即可。

32.数组的定义格式?
答:int[] arr =new int[5];
    int arr[]= new int[5];
int[] arr = new int[]{1,5,6,7}
int[] arr = {23,6,8,9…}
二维数组
String[][] arr = new String[3][];
Syso(arr[0])  打印的结果是null。

33.数组的默认值?
答;整形的默认值是0,引用数据类型是null;boolean型的是false。
        Char = ‘\u0000’

34.栈内存和堆内存?
答:栈内存用于存储局部变量和代码的执行,堆内存中存的都是new出来的东西。

35.数组和集合的区别:
(1)长度区别:数组长度是固定的;集合长度可变。
(2)存储内容:一个数组只能存储同一种数据类型(或者类型兼容)的元素;集合可以存储不同数据类型的元素。
Object[] obj = {};
(3)数据类型:数组既能存储基本数据类型,也能够存储引用数据类型;集合只能存储引用数据类型。

36.数组和集合的转换?
答:数组转为集合:Arrays.asList(数组),转为集合后不能添加、删除元素。但是可以修改元素。把基本类型的数组转为集合,是将整个数组看作一个对象存入集合中。  ArrayList<int[]>
集合转为数组:list.toArray().





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2