java基础知识

来源:互联网 发布:淘宝注册页面代码 编辑:程序博客网 时间:2024/06/06 04:27

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().

0 0