Java基础面试题doc.docx

上传人:b****1 文档编号:825207 上传时间:2022-10-13 格式:DOCX 页数:12 大小:37.88KB
下载 相关 举报
Java基础面试题doc.docx_第1页
第1页 / 共12页
Java基础面试题doc.docx_第2页
第2页 / 共12页
Java基础面试题doc.docx_第3页
第3页 / 共12页
Java基础面试题doc.docx_第4页
第4页 / 共12页
Java基础面试题doc.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Java基础面试题doc.docx

《Java基础面试题doc.docx》由会员分享,可在线阅读,更多相关《Java基础面试题doc.docx(12页珍藏版)》请在冰豆网上搜索。

Java基础面试题doc.docx

Java基础面试题doc

—、JDK与JRE有什么区别?

答:

®JDK:

Java开发工具包,包括Java开发工具和JRE。

2JRE:

Java运行环境,包括运行Java程序所需的核心类库和JVM。

3JVM:

Java虚拟机,保证Java程序的跨平台性。

总结:

由JDK开发的Java程序,交给JRE来运行,并由JVM来保证Java程序的

跨平台性。

二、byteb=(byte)130;的运行结果是?

1130的原码:

00000000000000000000000010000010

2130的反码:

00000000000000000000000010000010

3130的补码:

00000000000000000000000010000010

4一个字节截取的补码为10000010

5补码10000010的反码为10000001⑥反码10000001的原码为11111110,计算结果为-126

三、判断下面代码第三行和第四行编译会出现问题吗?

bytebl=3;

byteb2=4;

byteb3=bl+b2;

byteb4=3+4;

1第三行会出现问题。

如果是变量相加,首先会自动提升数据类型,然后再运算。

2第四行编译运行通过。

如果是常量相加,会直接计算,然后看运算的结果是否在其数据类型所能描述的范围内

、判断下列代码的第二行和第三行编译是否能通过?

并说明理由

shorts=5;

s=s+2;//报错,变量s参与运算,会自动提升数据类型至int

s+=2;//编译通过。

s+=2隐含了强制类型转换,相当于s=(short)(s+2);

五、请用高效的形式写出:

2*8

2<<3

六、如何交换两个变量?

①用第三方变量来做(开发做)inttemp=a;

a=b;

b=temp;

②用按位异或来做(面试做)按位异或的特性:

一个数据对另一个数据异或两次,又变回原本的值。

a=aAb;

b=aAb;

a=aAb;

3用算术运算符

a=a+b;

b=a-b;

a=a-b;

七、写出下面程序的运行结果

classFu

//靈ts

static

{

system.out.printlncFU鄕eHfts^:

);

}

//隱窪>l±

{

system.outprintlncFU^BftaM--);

}

public?

()

 

:

lassZi

•入、

system.out.printlncFU甚蹄^w=);

extendsFu

/L箔

static

•瓠、

system.outprintln(Ni®^^ffiM:

);

 

"构造代码块

{

System.out.println("zi构造代码块");

}

publicZi()

{

System.out.printlnC'zi构造方法");

}

}

classBlockCodeDemo2

{

publicstaticvoidmain(String[]args)

{

Ziz=newZi();

Ziz2二newZi();

}

}

如果子父类中都有静态代码块,构造代码块,构造方法,那么执行顺序为?

父类的静态代码块-->子类的静态代码块-->父类的构造代码块-->父类的构造方

法-->子类的构造代码块-->子类的构造方法

注意:

静态代码块只加载一次(.class字节码文件只加载一次的情况下)

Fu静态代码块zi静态代码块

Fu构造代码块

Fu构造方法

zi构造代码块

zi构造方法

Fu构造代码块

Fu构造方法zi构造代码块zi构造方法

八、方法重载和方法重写有什么区别?

1方法重载:

同一个类中,出现方法名相同、参数列表不同的两个或多个方法时,

即构成方法重载。

2方法重写:

子父类间,出现一模一样的方法时,被称为方法的重写,或者复写、覆盖。

也就是要求返回值类型、方法名、参数列表都一致,

dayl2

九、如何理解字符串一旦初始化就不可以被改变。

Strings="hello";

s+="world";

System.out.println(s);

解释:

字符串一旦被初始化就不能被改变,说的不可以改变的是hello这个字符串在常量池中的值不可以被改变,而非s这个引用不能改变

十、si、s2有区别吗?

Stringsi=newString("abcH);

在Sting常量池

Strings2="abc";

答:

第一种方式:

在内存中存在两个对象,一个在堆内存中中;第二种方式:

在内存中只有一个对象,在String常量池中,

i■—、length和length()这两个关键字的区别?

答:

①它们都不是关键字

2length是属性,用来获取数组的长度

3length()是个方法,用来获取字符串的长度

十二、

1.publicstaticvoidmain(String[]args)

{

Strings="abc";

change(s);

System.out.println(s);

}

publicstaticvoidchange(Strings)

{

s+="hello";

把"abc"在String常量池的地址值传递进去,change方法里的s对象指向了"

abc",然后和"hello"连接形成新的字符串"abchello",把新的字符串"abchello"

的地址值赋给change方法里的s,但main方法的s还是指向"abc",因为〃abc"

是字符串对象,一但初始化就不会被改变。

2.publicstaticvoidmain(String[]args){

Stringsi="a";

Strings2="b";

Strings3="ab";

System.out.println(s3==si+s2);

System.out.println(s3=="a"+"b");

}

常量相加,直接累加,然后再常量池里找有没有,有结果就是常量池的值。

而变量相加,需要重新在常量池里开辟空间,然后把si、s2替换为"a"、"b",

进行连接,形成一个新的"ab"对象,和s3内容相同,但属于不同的空间即不同的对象,十三、

Integeril=newInteger(127);

Integeri2=newInteger(127);

System.out.println(il==i2);//false

System.out.println(il.equals(i2));//true

Integeri3=newInteger(128);

Integeri4=newInteger(128);

System.out.println(i3==i4);//false

System.out.println(i3.equals(i4));//true

Integeri5=128;

Integeri6=128;

System.out.println(i5==i6);//false

System.out.println(i5.equals(i6));//true

Integeri7二127;

Integeri8=127;

System.out.println(i7==i8);//true

System.out.println(i7.equals(i8));//true

1通过new出来的是不同的对象,所以比较对象,相当于比较对象的地址值,肯定

为false(自动装箱,也相当于自动创建Integer对象)

2一般都会重写Object类中的euqals方法,不再比较地址值,而是比较对象的内

容是否相同。

址。

十四、用LinkedList模拟栈数据结构

题意解析:

你有一个LinkedList可以用,需要你自己定义一个桟集合,对外提供添加和获取功能(把LinkedList对象的方法封装在自定义栈方法的内部)

publicclassMyStack{

privateLinkedListlink;

publicMyStack(){

link=newLinkedList();

}

publicvoidadd(Objectobj){

link.addFirst(obj);

}

publicObjectget(intindex){

returnlink.get(index);

}

publicintsize(){

returnlink.size();

}

}

publicclassLinkedListStack{

publicstaticvoidmain(String[]args){

MyStackstack=newMyStack();

stack.add("hello");

stack.add(”world");

stack.add(njava");

for(inti=O;i

System.out.println(stack.get(i));

十五、Collection和Collections的区别?

A:

Collection是Collection集合的顶层接口

它里面定义了Collection集合的共性方法,

B:

Collections是一个类,定义了针对Collection集合操作的各种功能,有排序、

二分查找、識、找最大值、随机置换等。

十六、Map和Collection的区别?

Map:

是双列集合,键必须是唯一的,值可以重复,是键值对形式的集合。

Collection:

是单列集合,它的子接口List可以存储重复元素,

它的另一'子接口Set,兀素唯一o

十七、统计字符串中每一个字符出现的次数需求:

"cbxzbvavdvgd••获取字符串中,每一个字母出现次数:

na(l)b

(2)c(l)d

(2)g(l)v(3)x(l)z(l)"

代码如下:

Strings="cbxzbvavdvgd";

"把字符串转成字符数组

char[]chs=s.toCharArrayO;

//创建一个map集合,用出现的字母做键,出现的字母的次数做值,因为键存在自然顺序,所以选TreeMap

TreeMap();

//遍历数组中的字符,获取字符键对应的值,如果值为空,则添加该键和值1的键

值对,如果值不为空,用原来的值+1替换原来的值

for(charkey:

chs){

Integervalue=tm.get(key);

if(value==null){

tm.put(key,1);

}else{

tm.put(key,value+1);

}

}

//获取字符键的Set集合

SetkeySet=tm.keySet();

//创建一个StringBuilder对象,用来拼接遍历到的字符和出现的次数

StringBuildersb=newStringBuilder();

for(Characterkey:

keySet){

Integeri=tm.get(key);

sb.append(key).append(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1