搜档网
当前位置:搜档网 › 概念题答案

概念题答案

概念题答案
概念题答案

概念题:

1.请说出&与&&的区别?

“&”:那么无论任何情况,“&”两边的表达式都会参与计算。

“&&”: 当“&&”的左边为false,则将不会计算其右边的表达式。即左false则false

2.请说出java有几种引用数据类型?

2种,基本数据类型和引用数据类型

3.请说出java有几种基本数据类型?

基本数据类型(8种):byte、short、int、long、float、double、boolean、char

4.switch(表达式),其中的表达式支持几种数据类型?

Jdk1.7以前只能用byte、short、int、char四种基本数据类型,以后可以用包装类和String

5.类和对象的关系?

对象是类的实例化,而类是对象的抽象.

6.面相对的特征?分别说明一下。

封装、继承、多态

封装:

将抽取出来的方法和属性以一个新的形式组装起来(每一个类都是一个封装)

封装特点:信息隐藏,对外给出一个统一的接口

封装的应用:属性私有,通过共有的get/set方法实现对属性的操作

多态:实物的多种表现形态方法的重载、方法的重写

方法的重载:在同一类中,方法名相同,参数的类型或个数不同,执行不同的操作方法的重载与返回类型无关。

常见的重载(底层的方法当中、构造器的重载)

继承:子类自动拥有父类的某些属性和方法

继承优点:结构清晰,代码复用。

继承的种类:单继承(用一个类来构建新类的过程),多继承(多个类构建新类的过程,但容易产生二义性)。Java中的类支持单继承,接口支持多继承。

7.Final关键字可以修饰哪几部分

变量:常量、不能被改变

方法:最终方法、不能被重写

类:最终类、不能被继承。

8.请说出static关键字可以修饰哪几部分?各自的特点是什么?

static关键字:修饰变量、方法、代码段。

变量:静态变量,无论类加载多少次,静态变量只加载一次;静态变量内存的产生先于对象的产生;可以通过对象进行访问,也可以通过类名直接访问。方法:静态方法,无论类加载多少次,静态方法只加载一次;静态方法内存的产生先于对象的产生;可以通过对象进行访问,也可以通过类名直接访问;静态方法中能够直接访问静态成员,但不能直接访问非静态成员;在静态方法中不能使用任何形式的this及super引用。

代码段:为静态变量初始化。

9.抽象类和接口的区别

抽象类和接口:

抽象类:由abstract关键字修饰的类成为抽象类。含有抽象方法的类是抽象类。抽象类中可以有抽象方法,也可以没有抽象方法。抽象类中可以有非抽象方法。抽象类有构造器,但是不能被new。如果想创建一个抽象类的实例,必须通过子类创建。如果子类继承了一个抽象的基类,但没有实现所有的抽象方法,则该类也是一个抽象类。

抽象方法:由abstract关键字修饰的方法称为抽象方法。只有方法的定义没有方法的实现。抽象方法的实现必须通过子类的重写。所以抽象方法不能是static的、不能是final的、不能是private的。

接口:由inteface定义,被类通过implements关键字实现的一个特殊的抽象类。

接口中只有常量和抽象方法。常量都是public final static修饰的。方法都是public abstract修饰的。

接口可以继承接口(并且可以多继承)

接口不能被new、也没有构造器。

类可以实现多个接口。

10.多态有几种表现形式?分别是什么(定义)?

重载和重写

方法重载(overload):在同一个类中,方法的名称相同,根据参数的个数和类型不一样,执行不同的操作。

方法的重写(override):在不同的类中(基类和派生类)方法的名称相同,但执行不同的操作。基类里的方法与派生类里的方法要完全一样。

11.什么是this? 什么是super()?都什么情况下使用?

this代表类本身,可点出自己的属性和方法,如果继承了父类,可以找出父类的属性和方法,super代表父类,在继承的时候使用,可以找出父类的属性和方法

12.==与equals()的各自特点和区别?

==如果用于比较基本数据类型的话,它比较的是值;如果用于比较对象的话,比较的是引用。

equals()只用于比较对象。

如果是Object类的话,它比较的是引用。

如果是String,Integer,Double等系统类的话,它比较的是内容(因为这些类重写了equals())

如果是自定义类的话,它比较的是引用,如果想比较内容的话,需要自己

重写equals()方法。

13.基本数据类型和引用数据类型的参数传递的区别?

基础数据类型不随着形参的改变而改变,引用数据类型随着形参的改变而改变

14.异常(Exception)的种类及各自的特点。

Error类:

Error类对象由Java虚拟机生成并抛出;

是灾难性的致命错误,不是你的程序可以控制的应用程序,表示仅靠程序本身无法恢复的严重错误。

比如说内存溢出动态链接失败,虚拟机错误等。

不应该抛出这种类型的对象(一般是由虚拟机抛出)。假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。

所以,在进行程序设计时,应该更关注Exception体系

Exception类:

由Java程序抛出和处理的对象,它的各种不同的子类分别对应不同类型的异常。

Exception类对象由应用程序处理或抛出。

15.请说出String,StringBuilder及StringBuffer的区别?

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。String类表示内容不可改变的字符串。而StringBuffer类表示内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

17.请说出数组和集合的区别?

1:数组的效率高于集合类.

2:数组能存放基本数据类型和对象,而集合类中只能放对象。

3: 数组容量固定且无法动态改变,集合类容量动态改变。

4:数组无法判断其中实际存有多少元素,length只告诉了array的容量。

5:集合有多种实现方式和不同的适用场合,而不像数组仅采用顺序表方式。

6:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作,大大提高软件的开发效率。

18.请说出ArrayList及LinkedList区别?

相同点:

都实现了List接口,是有序的允许重复的。

都有add方法向集合(或集合中指定位置)添加元素。

都有get方法,直接取出集合中某索引位置的元素

还有iterator()方法返回迭代器。

不同点:

ArrayList类似于动态数组结构存储数据,查询速度较快,插入删除效率较慢。

LinkedList类似于链表结构存储数据,插入删除速度较快,查询效率较慢。

19.请说出HashMap与HashTable的区别?

区别:

HashMap不支持同步,所以安全性不高,但性能高,而HashTable支持同步,数据的安全性高,但性能差。

HashMap允许使用 null key及null 值,而HashTable不允许

相同点:

都是Map的实现,使用键值对来存储数据。其中key采用set方式存储,唯一但无序,而value采用Collection方式存储,无序,不唯一。

20.sleep() 和 wait() 有什么区别?

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

21.run()和 start()有什么区别?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

相关主题