Java部分面试题及答案详解

上传人:ja****ee 文档编号:141234829 上传时间:2020-08-05 格式:DOC 页数:13 大小:73KB
返回 下载 相关 举报
Java部分面试题及答案详解_第1页
第1页 / 共13页
Java部分面试题及答案详解_第2页
第2页 / 共13页
Java部分面试题及答案详解_第3页
第3页 / 共13页
Java部分面试题及答案详解_第4页
第4页 / 共13页
Java部分面试题及答案详解_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Java部分面试题及答案详解》由会员分享,可在线阅读,更多相关《Java部分面试题及答案详解(13页珍藏版)》请在金锄头文库上搜索。

1、Java部分面试题及答案详解1:Java面世的时间是哪一年?在哪一年被谁收购?1995年2009年被oracle收购2:Java中数据类型有哪些?基本数据类型:byte,short,int,long,boolean,char,float,double引用数据类型:类,接口,数组,枚举3:整数类型所占用的字节是多少,其他数据基本类型所占用字节是多少byte-1,short-2,int-4,long-8,boolean-1,char-2,float-4,double-84:简述JVM,JKD,JRE的功能与关系JDK开发工具包,是我们的开发环境,JER是java的运行环境,jvm是Java虚拟机,

2、用来解释我们的class文件,JDK包含JRE,JRE包含JVM5:Java跨平台运行的机制是基于什么基于java虚拟机JVM6:Java的编译命令是什么Javac7:Java的标识符命名规则是什么java标识符可以是字母、数字、$、_(下划线),但不可用数字开头不可以是java的关键字及保留字包名:全部小写(如:multiplicationtable)项目名,类名:每个单词的首字母大写(如:MultiplicationTable)变量名,方法名:第一个字母小写,以后每个单词的首字母大写(如:multiplicationTable)常量:全部使用大写字母,单词间用下划线隔开(如:MULTIPL

3、ICATION_TABLE)8:什么叫强制转换,什么叫自动转换当转换数据类型的时候会报错,无法实现自动转换。在需要进行转换的数据类型之前使用(需要转换的类型)即可由于较大数据类型存放的值有可能大于较小数据类型,所以强制转换有可能造成值的精度损失当转换数据类型的时候并不会报错,而是在后台自己进行了类型的转换。整数类型之间,较小数据类型可以自动转换为较大数据类型。小数类型之间,较小数据类型可以自动转换为较大数据类型。整数可以自动转换为小数。9:基本数据类型间自动转换的顺序Byte-short-int-long-float-double10:什么叫变量,什么叫常量用于存放我们的值,但是其值在程序运行

4、中是可以改变的,变量根据其存放值的类型不同分为多种不同的类型,我们可以把数据放到变量中,然后直接通过变量名来操控数据。用于存放我们的值,但是其值在程序运行中是不可改变的11:什么时候使用for循环,什么时候使用whilefor循环一般用于明确循环次数的情况下较多,while循环一般用于循环次数不确定的时候使用12:dowhile与while的区别我们称for与while循环都是可不执行的循环体,而doWhile是至少执行一次的循环体doWhile是先执行循环代码体,然后在进行条件判断,哪怕条件不成立,也会执行至少1次的循环13:switch支持哪些数据类型byte,short,char,int

5、,String,(枚举)14:使用for循环写一个乘法口诀表packagekaoshi;publicclassCHENFApublicstaticvoidmain(Stringargs)for(inti=1;i10;i+)for(intj=1;j=i;j+)System.out.print(j+*+i+=+i*j+t);System.out.println();15:数组的实例化方式有几种?有什么区别?数组静态初始化:数组的静态初始化需要在声明的同时指定长度,并且赋值。数组的动态初始化:数组名=new类型5;此时由于我们只是创建了数组,指定了其存放的数据类型,并指定了其存放的数据个数,但是并没

6、有给其赋值,要通过后期去动态赋值,所以这种初始化方式叫动态初始化16:手写一个冒泡排序publicclassPaiXupublicstaticvoidmain(Stringargs)intarr=1,53,84,25,65,5;inti=0;inttmp=0;Booleanflag=true;intpos=0;/用来记录最后一次交换的位置intk=arr.length-1;longstartTime=System.nanoTime();/获取开始时间for(i=0;iarr.length-1;i+)pos=0;intj=0;flag=true;for(j=0;jarrj+1)/交换tmp=ar

7、rj;arrj=arrj+1;arrj+1=tmp;flag=false;/加入标记pos=j;/交换元素,记录最后一次交换的位置if(flag=true)/如果没有交换过元素,则已经有序continue;k=pos;/下一次比较到记录位置即可longendTime=System.nanoTime();/获取结束时间System.out.println(排序结果:+Arrays.toString(arr);System.out.println(程序运行时间:+(endTime-startTime)+ns);17:访问修饰符的区别public:代表公开的,公共的,可以在本项目的任何类中调用被pu

8、blic修饰的方法protected:受保护的,只有与方法所在类处在同一包,或子类中可以访问下才可以访问。无访问修饰符:默认的,只有与方法所在类处在同一包下。private:私有的,只有自己类本身才能访问。18:实例方法与静态方法的区别在访问修饰符后面被static修饰的方法就叫静态方法。实例方法需要通过实例对象才能使用,而静态方法属于类所以可以直接通过类名调用。实例方法可以使用所有的变量,静态方法只能使用静态变量。19:break和continue的区别Break默认打断当前作用域代码,可以使用break标记打断指定作用域代码Continue用于跳过当前本次循环,剩下的循环继续执行(继续下次

9、迭代)20:使用三目运算符实现如果95的话返回字符串否则判断如果66取余4等于1的话输出字符串66取余4等于1否则输出66取余4不等于1System.out.println(95?:66%4=1?66取余4等于1:66取余4不等于1);21:floatf=3.4;是否正确?不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换floatf=(float)3.4;或者写成floatf=3.4F。22:shorts1=1;s1=s1+1;有错吗?shorts1=1;s1+=1;有错吗?对于

10、shorts1=1;s1=s1+1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。而shorts1=1;s1+=1;+=操作符会进行隐式自动类型转换,是Java语言规定的运算符;Java编译器会对它进行特殊处理,因此可以正确编译。因为s1+=1;相当于s1=(short)(s1+1)。23:数组有没有length()方法?String有没有length()方法?数组没有length()方法,有length的属性,String有length()方法。24:构造器(constructor)是否可被重写(override)?构造器不能被继承,因此不能被

11、重写,但可以被重载。25:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。26:重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类

12、之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。27:下面的代码哪些地方会产生编译错误?classOuterclassInnerpublicstaticvoidfoo()newInner();publicvoidbar()newInner();publicstaticvoidmain(Stringargs)newInner();Java中非静态内部类对象的创建要依赖其外部类对象,如果要在静态方法中创建内部类对象,可以这样做:newOuter().newInner();28:

13、抽象的(abstract)方法是否可同时是静态的(static)抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。29:Strings=newString(xyz);创建了几个字符串对象?两个对象,一个是静态区的xyz,一个是用new创建在堆上的对象。30:指出下面程序的运行结果。classAstaticSystem.out.print(1);publicA()System.out.print(2);classBextendsAstaticSystem.out.print(a);publicB()System.out.print(b);publicclassHellopubl

14、icstaticvoidmain(Stringargs)Aab=newB();ab=newB();执行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。编程题:1:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?doubleh=100;doubles=100;for(inti=1;i=10;i+)h=h/2;if(i10)s=s+2*h;System.out.println(s);System.out.println(h);2:写一个6位的随机验证码要求包含所有大小写字母及数字charc=newchar6;for(inti=0;i6;i+)intnumber=(int)(Math.random()*62)+48;if(number=58&number=83)ci=(char)(number+7);elseci=(char)(number+14);Stringn=newString(c);System.out.println(n);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号