java面试题

1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:可以有多个类,但是被public修饰的类只能有一个,并且这个类名要与源文件名一致。

2.Java有没有goto?

答:java中有goto,goto是java中的保留字,但是没有使用。

3.什么是jdk,什么是jre?

答:jdk是java开发工具包,jre是java运行环境。

4.什么是java的平台无关性?

答:java源文件被编译成字节码文件,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件,也就是一处编译处处运行。

5.在一台电脑上配置java环境,path起什么作用?如何配置?

答:path的作用是在DOS环境下,能在任意位置使用jdk目录中bin文件夹中的可执行程序,来编译执行java程序。在环境变量中找到path变量,把bin文件夹绝对路径加上。

6.什么样的标识符是合法的?

答:由字母、数字、下划线、和美元符组成,长度不限。其中字母可以大小写的英文字母,数字为0到9,并且标识符的第一个字符不能是数字。

7.什么是自动类型转换?什么是强制类型转换?

答:当将占位数少的类型赋值给占位数多的类型时,java自动使用类型转换。当把在级别高的变量赋值给级别低的变量时,必须使用强制类型转换。

8.&&和&的区别,||和|的区别?

答:&&和&都是逻辑与运算符,&&是短路与,当表达式出现false时,不再运算其他表达式,&则时无论出不出现false都将表达式运算完,并且&可以做位运算;||和|都似乎逻辑或运算符,||是短路或,当表达式出现true时,就不再运算其他表达式,|则是无论是否出现true都会将表达式运算完,并且|可以做位运算。

9.java中基本数据类型有哪些,及各占多少字节?

答:byte1字节,short2字节,int4字节,long8字节,float4字节,double8字节,char4字节,boolean1位。

10.三元运算符的运算规则是怎样的?

答:三元运算符的格式为表达式1?表达式2:表达式3,其中表达式1运行结果为boolean类型的,当其为true时,就把表达式2的结果作为三元运算符的结果,否则把表达式3的结果作为三元运算符结果。

11.swtich语句中为什么每个case的执行程序后要加break,如果不加会有什么影响?

答:加break是为了使程序执行完之后跳出swtich语句,如果不加break,当该case值后面的程序执行完之后,程序会继续执行下去,直到遇到break。

12.while循环和do…while循环有什么不同点?

答:while循环会先执行判断语句,再根据判断语句中的值来确定是否执行循环体中的程序,do…while循环是先执行循环体中的程序再执行判断语句。

13.java中break关键字和continue关键字有什么作用,它们有什么区别?

答:break关键字用于中止离他最近的循环体和或中止swtich语句,continue关键字用于中止它所在的当次循环,并执行下次循环。

14.if语句后面如果不加大括号会有哪些影响?

答:如果if语句后不加大括号,表示该判断语句只对接下来的第一句程序起作用。如果判断条件为true则执行下一条语句,否则不执行。

15.java中函数的概念,以及创建函数有什么益处?

答:函数是定义再类中的一段独立的代码块,用来专门实现某个功能,可以提高程序的复用性和可读性。

16.java中方法的重载的定义、特点?

答:定义:再一个类中含有两个及两个以上同名的方法,它们之间构成了重载;特点:必须是在同一个类中存在两个及两个以上同名的方法,各方法的形参列表不同,并且方法的返回值类型不能作为方法之间是否重载的依据。

17.什么是数组,如何来定义一个数组?

答:数组表示一串连续的存储空间,数组是同一种数据类型的集合;定义一个数组由两种方式,1.数据类型+[]+数组名=new+数据类型+[数组长度],2.数据类型+[]+数组名={值1,值2…}

18。阐述java中的栈内存和堆内存的概念。

答:栈内存用来存放基本类型的变量,对象的引入和方法的调用,遵循先进后出的规则,栈主要用来执行方法;在程序中使用new关键字创建出来的所有东西,都会保存在堆内存中。堆内存中开辟的空间,如果不赋值,都会有默认的初始化数据,堆主要用来存放对象。

19.面向对象和面向对象过程各有什么优缺点?

答:面向过程优点是性能高,因为类调用时需要实例化,开销较大,比较消耗资源:比如单片机,嵌入式开发,Linux/Unix等一般采用面向过程开发,性能是最重要因素。面向过程缺点是不易维护,复用性差,扩展性差;面向对象优点是易维护,复用性好,扩展性好,缺点是性能差。

20.成员变量和局部变量的区别有哪些?

答:从语法形式上,成语变量属于类,局部变量属于方法中定义的变量;从变量的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存中,局部变量存在于栈内存中;从变量在内存的生存时间上看,成员变量随对象的创建而存在,而局部变量随着方法的进栈和出栈而存在和消失;成员变量如果没有赋初始值,则会自动以类型的默认值而赋值(一种情况例外被final修饰但没被static修饰的成员变量必须显示地赋值,而局部变量不会自动赋值。

21.封装的概念和好处?

答:封装是指影藏对象的属性和实现细节,仅对外提供公共访问方式,即成员变量私有化,提供set和get方法;好处是提高安全性和复用性,影藏了实现细节。

22.什么是构造方法,构造方法有什么用途?

答:构造方法是一种特殊的方法,构造方法名与类名相同,并且没有返回值,也不能用void声明构造函数;可以用来创建对象。

23.构造方法和一般方法的关系是什么?

答:构造方法可以调用一般方法,一般方法不能调用构造方法,构造方法没有返回值类型,也不能用void声明,一般函数要加返回值类型或者void声明。

24.this关键字有什么用途?

答:this关键字可以用来调用构造函数,放在构造函数第一行,还可以用来指当前对象,区分成员变量和局部变量,调用本类的其它方法。

25.static关键字有什么用途?

答:static关键字表示静态的,可以修饰变量和方法,使其成为静态变量和静态方法,可以通过类名直接调用静态变量和静态方法。

26.重载(overload)和重写(override)的区别,overload可以改变返回值类型?

答;重载是在同一个类中,方法名一致,、返回值参数列表不同,返回值类型可以不同,重写是在有继承关系的两个类中或者有实现关系的类和接口,方法名和参数列表、返回值类型、修饰符必须一致,并且访问权限子类不能比父类低;overload可以改变返回值类型。

27.java中final关键字有哪些用法?

答:final是最后的,最终的意思,可以用来修饰类表示该类不能被继承,可以用来修饰方法表示该方法不能被重写,可以用来修饰变量表示该变量是常量。

28.接口和抽象了的区别?

答:从声明上看,抽象类属于类,用class关键字声明,接口不是类用Interface声明;从能够存在的成员上看,抽象类能书写类中的所有成员,接口只能书写成员变量和成员方法;抽象类有构造函数,接口没有构造函数;从作用上看,抽象类是描述继承体系中共有的特性和行为,接口描述的是不属于继承体系的共同功能;抽象类只支持单一继承和多重继承,接口和接口可以多继承,多重继承,接口和实现类可以是多实现关系。

29.面向对象的三个特征?

答:封装、继承、多态。

30.多态的概念、前提、好处和弊端?

答:多态指同一事物可以有多种不同的表示形态;父类型的引用指向子类实例对象,接口类型的引用指向实现类对象;多态中的两个类必须是继承关系,接口和类必须是实现关系;提高代码复用性,提高程序扩展性,降低维护成本,降低程序耦合性;父类型引用不能使用子类独有属性和功能。

31.instanceof关键字有什么用途?

答:instanceof关键字也是运算符,用来在运行时指出对象是否是特定类的一个实例,instanceof关键字通过一个布尔类型的返回值来指出这个对象是否是这个特定类或者是它的子类的一个实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值