志在指尖
用双手敲打未来

java基础(java基础面试题及答案)

java基础

1、JVM、JRE和JDK的差异:
JVM(JavaVirtualMachine):java虚拟机,用于确保java的跨渠道的特性。
java言语是跨渠道,jvm不是跨渠道的。
JRE(JavaRuntimeEnvironment):java的运转环境,包含jvm+java的中心类库。
JDK(JavaDevelopmentKit):java的开发工具,包含jre+开发工具
2、环境变量path和classpath的效果是什么?
(1)path是装备Windows可执行文件的查找途径,即扩展名为.exe的程序文件所在的目录,
用于指定DOS窗口命令的途径。
(2)Classpath是装备class文件所在的目录,用于指定类查找途径,JVM就是经过它来寻找该类的class类文件的。
3、变量有什么用?为什么要界说变量?什么时候用?
答:变量的效果:用来存储数据。
为什么要界说变量:用来不断的寄存同一类型的常量,并能够重复使用
4、&和&&的差异?
答:
(1)&&会呈现短路,如果能够经过第一个表达式判别出整个表达式的成果,则不继续后边表达式的运算;
只能操作boolean类型数据;
(2)&不会呈现短路,将整个表达式都运算。既能够操作boolean数据还能够操作数。
5、标示符命名规矩:
由数字(0-9),大小写英文字母,以及_和$组成。
不能以数字开头。
不能使用关键字来自界说命名。
6、数据类型:
(1)根本数据类型(4类8种):
整数类型:byte、short、int、long
浮点数类型:float、double
字符类型:char
布尔类型:boolean(turefalse)
(2)引证数据类型:

接口
数组
7、类型转化
精度从高到低doublefloatlongintshort(char)byte
(1)主动类型转化将一个低精度—à高精度
(2)强制类型转化将一个高精度—à低精度(精度会下降)
8、java言语的三种技能架构
J2EE:企业版
是为开发企业环境下的使用程序供给的一套解决方案。
该技能体系中包含的技能如Servlet、Jsp等,主要针对于Web使用程序开发。
J2SE:标准版
是为开发一般桌面和商务使用程序供给的解决方案。
该技能体系是其他两者的根底,能够完成一些桌面使用程序的开发。
比方Java版的扫雷。
J2ME:小型版
是为开发电子消费产品和嵌入式设备供给的解决方案。
该技能体系主要使用于小型电子消费类产品,如手机中的使用程序等。
9、java的跨渠道性:
经过Java言语编写的使用程序在不同的体系渠道上都能够运转。
跨渠道的原因:
只要在需求运转java使用程序的操作体系上,先装置一个Java虚拟机(JVMJavaVirtualMachine)即可。
由JVM来担任Java程序在该体系中的运转。
10、有符号数据的表明法(次要点)
原码,反码(原码取反),补码(反码+1)。
11、函数
界说:函数就是界说在类中的具有特定功用的一段独立小程序。
特色:
界说函数能够将功用代码进行封装
便于对该功用进行复用
函数只有被调用才会被执行
函数的呈现提高了代码的复用性
对于函数没有详细返回值的情况,返回值类型用关键字void表明,
那么该函数中的return句子如果在最后一行能够省掉不写。
函数的使用两个清晰:
清晰要界说的功用最后的成果是什么?
清晰在界说该功用的过程中,是否需求不知道内容参加运算
12、重载:
概念:在同一个类中,答应存在一个以上的同名函数,只要它们的参数个数或许参数类型不同即可。
特色:与返回值类型无关,只看参数列表(参数类型以及参数个数)。
优点:便利于阅览,优化了程序设计。
13、数组:
概念:同一种数据类型的集合。
优点:能够主动给数组中的元素从0开端编号,便利操作这些元素。
14、内存结构:
栈内存:用于存储局部变量,当数据使用完,所占空间会主动开释。
堆内存:数组和对象,经过new树立的实例都寄存在堆内存中。
办法区:静态成员、结构函数、常量池、线程池

java

java基础面试题及答案

1、说说&和&&的差异
答:
&和&&都能够用作逻辑与的运算符,表明逻辑与(and),当运算符两边的表达式的成果都为true时,整个运算成果才为true,否则,只要有一方为false,则成果为false。
&&还具有短路的功用,即假如第一个表达式为false,则不再核算第二个表达式,例如,关于if(str!=null&&!str.equals(“”))表达式,当str为null时,后面的表达式不会履行,所以不会出现NullPointerException假如将&&改为&,则会抛出NullPointerException反常。If(x33&++y>0)y会增长,If(x33&&++y>0)不会增长
&还能够用作位运算符,当&操作符两边的表达式不是boolean类型时,&表明按位与操作,咱们通常运用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31&0x0f的成果为0x01
2、char型变量中能不能存贮一个中文汉字?为什么?
答:
char型变量是用来存储Unicode编码的字符的,unicode编码字符会集包含了汉字,所以,char型变量中当然能够存储汉字啦。不过,假如某个特殊的汉字没有被包含在unicode编码字符会集,那么,这个char型变量中就不能存储这个特殊汉字。补充阐明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
3、”==”和equals办法究竟有什么差异
答:
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的差异自然就出来了,混在一起说,则很难说清楚)
操作符专门用来比较两个变量的值是否持平,也便是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个根本类型的数据或两个引证变量是否持平,只能用操作符。
假如一个变量指向的数据是目标类型的,那么,这时候触及了两块内存,目标自身占用一块内存(堆内存),变量也占用一块内存,例如Objetobj=newObject();变量obj是一个内存,newObject()是另一个内存,此时,变量obj所对应的内存中存储的数值便是目标占用的那块内存的首地址。关于指向目标类型的变量,假如要比较两个变量是否指向同一个目标,即要看这两个变量所对应的内存中的数值是否持平,这时候就需要用==操作符进行比较。
equals办法是用于比较两个独立目标的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个目标是独立的。例如,关于下面的代码:
Stringa=newString(“foo”);Stringb=newString(“foo”);
两条new句子创立了两个目标,然后用a,b这两个变量分别指向了其中一个目标,这是两个不同的目标,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将回来false,而这两个目标中的内容是相同的,所以,表达式a.equals(b)将回来true。
在实践开发中,咱们常常要比较传递进行来的字符串内容是否等,例如,Stringinput=…;input.equals(“quit”),许多人稍不注意就运用==进行比较了,这是错误的,随便从网上找几个项目实战的教育视频看看,里边就有大量这样的错误。记住,字符串的比较根本上都是运用equals办法。
假如一个类没有自己界说equals办法,那么它将承继Object类的equals办法,Object类的equals办法的完成代码如下:
booleanequals(Objecto){
returnthis==o;
}
这阐明,假如一个类没有自己界说equals办法,它默许的equals办法(从Object类承继的)便是运用操作符,也是在比较两个变量指向的目标是否是同一目标,这时候运用equals和运用会得到相同的成果,假如比较的是两个独立的目标则总回来false。假如你编写的类希望能够比较该类创立的两个实例目标的内容是否相同,那么你有必要覆盖equals办法,由你自己写代码来决定在什么情况即能够为两个目标的内容是相同的。
4、静态变量和实例变量的差异
答:
在语法界说上的差异:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的差异:实例变量归于某个目标的特点,有必要创立了实例目标,其中的实例变量才会被分配空间,才干运用这个实例变量。静态变量不归于某个实例目标,而是归于类,所以也称为类变量,只要程序加载了类的字节码,不必创立任何实例目标,静态变量就会被分配空间,静态变量就能够被运用了。总之,实例变量有必要创立目标后才干够通过这个目标来运用,静态变量则能够直接运用类名来引证。
例如,关于下面的程序,无论创立多少个实例目标,永远都只分配了一个staticVar变量,而且每创立一个实例目标,这个staticVar就会加1;但是,每创立一个实例目标,就会分配一个instanceVar,即或许分配多个instanceVar,而且每个instanceVar的值都只自加了1次。
publicclassVariantTest
{
publicstaticintstaticVar=0;
publicintinstanceVar=0;
publicVariantTest()
{
staticVar++;
instanceVar++;
System.out.println(“staticVar=”+staticVar+”,instanceVar=”+instanceVar);
}
}
5、是否能够从一个static办法内部宣布对非static办法的调用
答:
不能够。因为非static办法是要与目标相关在一起的,有必要创立一个目标后,才干够在该目标上进行办法调用,而static办法调用时不需要创立目标,能够直接调用。也便是说,当一个static办法被调用时,或许还没有创立任何实例目标,假如从一个static办法中宣布对非static办法的调用,那个非static办法是相关到哪个目标上的呢?这个逻辑无法建立,所以,一个static办法内部宣布对非static办法的调用。
6、Integer与int的差异
7、请说出作用域public,private,protected,以及不写时的差异
8、Overload和Override的差异。Overloaded的办法是否能够改动回来值的类型?
9、怎么完成线程间的通讯
10、构造器Constructor是否可被override?
11、abstractclass和interface有什么差异?
12、String是最根本的数据类型吗?
13、Strings=“Hello”;s=s+”world!”;这两行代码履行后,原始的String目标中的内容到底变了没有?
14、是否能够承继String类?
15、String和StringBuffer的差异
16、StringBuffer与StringBuilder的差异
17、数组有没有length()这个办法?String有没有length()这个办法?
18、try{}里有一个return句子,那么紧跟在这个try后的finally{}里的code会不会被履行,什么时候被履行,在return前仍是后?
19、final,finally,finalize的差异
20、运行时反常与一般反常有何异同?
21、JAVA言语怎么进行反常处理,关键字:throws,throw,try,catch,finally分别代表什么含义?在try块中能够抛出反常吗?
22、java****中有几种办法能够完成一个线程?用什么关键字修饰同步办法
23、sleep()和wait()有什么差异?
24、发动一个线程是用run()仍是start()?
25、List和Map差异?
26、List,Set,Map是否承继自Collection接口?
27、说出ArrayList,Vector,LinkedList的存储性能和特性
28、Set里的元素是不能重复的,那么用什么办法来差异重复与否呢?是用==仍是equals()?它们有何差异?
29、你所知道的调集类都有哪些?首要办法?
30、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供承继,请说出他们分别是哪些类
31、字节流与字符流的差异
32、什么是java序列化,怎么完成java序列化?或许请解说Serializable接口的作用
33、能不能自己写个类,也叫java.lang.String?
34、一个”.java”源文件中是否能够包含多个类(不是内部类)?有什么限制?
35、Jvm怎么调优?
36、Jvm怎么加载类?怎么分配空间。
37、八个根本类型各占多少字节?
38、HashMap、HashSet、HashTable的差异?
39、Hashcode和equals
40、办法重载和重写的差异
41、进程和线程的差异
42、junit中before和beforeclass差异
43、单例手写
44、触发器的作用是什么?
45、Static****局部变量与全局变量的差异,编译后映射文件是否包含此类变量的地址?
46、用JAVA完成一种排序。(要写出详细的算法完成,不要简单的调用Arrays.sort办法)。
47、Java中怎么完成多承继关系?
48、怎么进行数组排序?
49、当一个目标被当作参数传递到一个办法后,此办法可改动这个目标的特点,并可回来改变后的成果,那么这儿到底是值传递仍是引证传递?
50、请用java代码(或伪代码)完成字符串的反转,如:输入abcde,输出edcba。

未经允许不得转载:IT技术网站 » java基础(java基础面试题及答案)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载