1.JDK和JRE的区别
答:
JDK是java程序开发工具包,包含JRE和开发工具(javac.exe等);
JRE是java语言的运行环境,包含JVM和运行Java程序所需的核心类库;
而JVM是java虚拟机,保证了java程序的跨平台性。
2.JVM跨平台吗?
答:JVM不具有跨平台性,不同的操作系统具有不同的java虚拟机。
3.保留字是什么?
答:保留字是尚未被使用的关键字,可能在java以后的升级版本中被升级为关键字的单词。比如说:goto和const。
4.java语言的特点?[开跨两多面]
答:开源,跨平台性,面向对象,多态,多线程。
5.main是关键字吗?
答:不是的。main是主函数的名字,能够被虚拟机识别,是程序执行的主入口。
6.path和classpath的区别?
答:
path环境变量,配置的是可执行文件.exe的执行路径,可以在任意盘符下访问path路径下的可执行文件。
classpath环境变量,配置的java语言编译后生成的字节码文件的执行路径,可以在任意盘符下访问配置后的字节码文件。
7. 基本单位
计算机最基本的存储单位是:字节(byte)
计算机能直接识别的进制是:二进制
计算机直接操作的数据是:二进制补码
java语言最底层的语言是:类
能够直接操作计算机硬件的语言:C语言
8进行运算的时,变量和常量有什么区别?
答:
变量是在程序运行过程中,其值在一定范围内可以发生改变的量,可以被多次赋值。
常量是在程序运行的过程中,其值不可以发生改变的量,只能赋值一次。
9标识符的组成?以及命名规则和命名规范?
答:标识符有英文字母,数字,_和$组成。
命名规则:
A:不能使用关键字,不能以数字开头。
B:严格区分大小写,最好要见名知义。
命名规范:
A:包名全部小写,多级包中间用.隔开。
B:类名和接口名如果是多个单词组成,首字母全部大写。
C:函数名和变量名如果是多个单词组成,第一个单词的首字母小写,其余首字母大写。
D:常量名全部大写,如果是多个单词,用_隔开。
10.变量数据类型(区分基本数据类型)类型分为哪几种?如何使用变量?
答:
基本数据类型:
整型:包括byte、short、int、long。
浮点型:包括float、double。
字符型;char;
布尔型:boolean。
引用数据类型:数组、自定义类、接口。
变量需要先定义,再赋值,才能使用。
【初始化 = 定义 + 赋值】
11.常量分为哪几种?
答:字面值常量和自定义常量。
字面值常量包括整数、小数、字符、字符串,布尔、null(空常量)。
自定义常量是通过final修饰定义的常量。
12.byte的范围多少?char的范围多少?
答:byte范围-128到127 。 char范围0到65535.(端口号)
Int数的最大表示范围是2147483647
13. ASCII码表中 字符 '0' , 'a' , 'A' 分别对应int类型的值是多少.
答:0在表中对应的值是48,a对应的是97;A对应的是65.
你说的是大写的C还是小写的C
14. long是8个字节,float是4个字节,为什么long 比 float小?
答:底层采用的运算规则不一样。
Long是整型,float是浮点型。
扩展:
long是8个字节,表示的最大数是2^31-1
float是4个字节
IEEE754 规定浮点数的格式为:数符Ms+阶码E(移码)+尾数M(原码)
规定:
单精度浮点数float Ms占1位,E占8位,M占23位.
规格化单精度浮点数的真值为:
(-1)^s * 1.M * 2 ^ (E - 127)
E的取值范围为0-255,去掉0是0,255是无穷大,取值范围为1-254
则E-127的取值范围为:-126-127远远大于long类型的63.
15. 以取值范围的大小排列数据的基本类型(不要忘了char).
答:byte<short,char<int<long<float<double
16.+=、-=、,++,--,这些运算符内隐含了强制类型转换.
17.++和—的使用?
答:
单独使用,在前在后都一样。
参与运算,在前是先自加或者自减,然后再赋值。在后是先赋值,再进行再自加或者自减。
它默认包含强制类型转换。
18. 逻辑或 " | " 和 短路或 " || "有什么区别?
答:|不管前面的结果是真是假,后面的都会参与运算,||前面为真,后面的就不参与运算。但是它们的最终运算结果是一样的。
19. 逻辑与 " & " 和 短路与 " && " 有什么区别?
答:&不管前面的结果是真是假,后面的都会参与运算,&&前面为假,后面的不参与运算。但是它们的最终运算结果是一样的。
20.Math.round原理是什么?
答:round()方法是用来进行四舍五入操作的。原理是先加0.5,然后再取floor值。
扩展:
public static double floor(double a)
(int)floor(a + 0.5f);
21.生成随机数的方法?
答:
第一种Math.random()方法,生成的是0.0和1.0范围之间的double类型的小数,包含头不包含尾。
第二种:Random类中的nextInt()方法。
扩展:
Random类:
Public int nextInt(int n):在0(包括)和指定值(不包括)
Math类
Public static double random():该值大于等于0.0且小于1.0
22.if…else..和三元表达的区别
答:
A:if…else是语句,而三元表达式是一个运算符,要求必须要有一个结果。
B:能用三元表达式写的就能用if语句写,但是能用if语句写的,三元表达式不一定能写。
C:三元表达式中不能用于输出调用。
23.while、do while 、for的区别?(改进,改成两问)
答:可以从两方面来说,
for循环结束后,其中定义的初始化条件不能再使用。而其他两个还可以使用
do while语句是先执行后判断,而另外两个循环是先判断后决定是否执行。
24.if和switch区别?
答:if常用来进行区间(范围)的判断 ,而switch常用来进行固定值的判断。
25. switch语句的表达式可以放什么?
答:JDK1.5以前可以是byte、short、char,int。JDK1.5以后可以使用枚举,1.7之后可以使用String。
26. 死循环的两种写法.
答:while(true) 和 for(;;)【for(;true;) 】
27. break和continue的区别
答:break是用来终止(结束)本次,代码块所在区间的循环,循环不再执行。continue是用来结束本次循环,进行下一次循环的(如果条件满足就继续执行,如果条件不满足就结束运行)。
break还可以用于switch-case语句中,而continue只能用于循环中
28.switch中break可以省略吗?default可以省略吗?
答:最后一个break省略,对结果没有影响。如果是其他的break省略,可能会发生case穿透。看需求,default是用来进行其他情况判断的,建议不要省略。
29:方法重载和方法重写的区别?
答:同一个类中,出现方法名相同,与返回值的类型无关,参数列表不同的两个(或以上)的方法时,称为方法重载。参数列表不同具体表现为:参数个数不同,参数的数据类型不同
子父类间,子类出现和父类声明完全相同的方法时,就称为方法重写。重写要求返回值的类型必须一致(或者有子父类关系)。
30.定义方法的步骤是什么:
答:要明确方法的返回值类型,明确方法的参数列表。
31.方法的调用?
答:
有返回值的方法单独调用没有意义(推荐赋值调用),没有返回值的方法可以直接调用。
有返回值的方法可以用于输出调用;没有返回值的方法,不可以用于输出调用
32.数组的定义格式?
答:int[] arr =new int[5];//定义一个int类型的数组,长度是5,数组名为arr
int arr[]= new int[5];//定义一个int类型的arr数组,长度为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’//unicode
34.栈内存和堆内存?
答:方法入栈,栈内存用于存储局部变量以及所有代码的执行,堆内存中存的都是new出来的东西。
35.数组和集合的区别:
(1)长度:数组长度是固定的;集合长度可变。
(2)数据类型:数组既能存储基本数据类型,也能够存储引用数据类型;集合只能存储引用数据类型。
(3)存储内容:Object类型除外,一个数组只能存储同一种数据类型(或者类型兼容)的元素;集合可以存储不同数据类型的元素。
36.数组和集合的转换?
答:
数组转为集合:Arrays.asList(数组),有2个特点:
1、转为集合后不能添加、删除元素。但是可以修改元素。
2、把基本类型的数组转为集合,是将整个数组看作一个对象存入集合中。 比如:ArrayList<int[]>
集合转为数组:list.toArray().