1、 面向对象的特征有哪些方面?
1. 抽象:将研究问题的焦点放在问题的主要方面,研究它的本质的和内在的属性,而对那些与现在所研究问题关系不大的属性等暂不考虑。抽象包括两个方面,一是过程抽象,二是数据抽象。
1)数据抽象,将问题空间实体对象抽象成—个由数据项和函数构成的整体,数据项标识对象的属性,函数用于定义对象的行为,这个整体将作为问题空间真实对象的模型;
2)过程抽象,将复杂对象所提供的某项功能抽象为各组成对象之间的相互作用,以消息传递及对象的消息处理方式加以描述。
2. 继承:是由已有类创建新类的机制,创建的过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。继承可提高代码的重用性。
3. 封装:将对象的属性和方法紧密结合在一起,从而完整地描述一个具体的客观事物。封装使对象的外部特征与内部实现细节隔离,外部调用只能通过对象提供的简单接口。这有助于最大限度地减少出于对象与外部环境在程序开发过程中被改变而带来的相互干扰。封装实际上可以认为是抽象的一种具体体现,其中既有过程抽象又有数据抽象。
4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。允许一个父类变量引用子类,允许一个接口类型变量引用实现类对象。反过来却不行。具体表现为重载和重写。
2、String是最基本的数据类型吗?
不是。
基本数据类型包括:byte、short、int、long、float、double、char、boolean。
除了基本数据类型之外,还有引用数据类型。
引用数据类型包括:类,数组,接口等,String也属于引用数据类型。
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(基本类型或内置类型)。
int是java的原始数据类型,Integer是java为int提供的封装类。
int是数据类型,Integer是类。
Java为每个原始类型提供了封装类。
原始类型:封装类
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
char : Character
类属于引用类型,引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,它们包括:
大小和速度问题,使用原始类型无须调用 new,也无须创建对象。这节省了时间和空间。
当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。
对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer的区别
Java平台提供了两个类:String和StringBuffer,
它们可以储存和操作字符串,即包含多个字符的字符数据。
这个String类提供了数值不可改变的字符串。
而这个StringBuffer类提供的字符串可进行修改。
当你知道字符数据要改变的时候你就可以使用StringBuffer。
典型地,你可以使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态。
运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
java编译器要求方法必须声明抛出可能发生的非运行时异常,
但是并不要求必须声明抛出未被捕获的运行时异常。
Java提供了两类主要的异常:runtime exception和checked exception。
checked exception异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。
对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。
所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。
runtime exception,也称运行时异常,我们可以不处理。
当出现这样的异常时,总是由虚拟机接管。
比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,
并且这种异常还是最常见的异常之一。