1.什么是抽象
在现实生活中,抽象被定义为“从具体事物抽出、概括出它们共同的方面、本质属性与关系等等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程”。
在计算机学科中,抽象也称为模型化,源于实验科学,主要要素为数据采集方法和假设的形式说明、模型的构造与预测、实验分析。结果分析。在为可能的算法、数据结构和系统结构等构造模型时使用此过程。抽象的结果为概念、符号和模型。在图论中体现的是抽象与理论形态,欧拉从哥尼斯堡七巧板问题入手,将其抽象为边和点的问题进行研究,成为图论研究的先驱。哈密顿回路、中国邮路等问题都是对现实问题进行的抽象,这些问题的研究和解决形成了一套比较完整的关于图的理论,包括一系列的定义、公理和定理等。
2.类与对象的关系
类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。它们的关系:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
3.基本数据类型
Java 基本的数据类型有八种:
(1)四种整形类型:
byte 8位,用于表示最小数据单位,取值范围:-128~127,默认值是0;
short 16位,取值范围:-231~231-1,默认值是0;
int 32位,取值范围:-231~231 - 1,默认值是0;
long 64位,取值范围:-263~263-1,默认值是0L;
(2)两种浮点类型
float 数据类型是单精度、32位,默认值是0.0f;
double 数据类型是双精度、64位,默认值是0.0d;
(3)一种字符类型
char 是一个单一的16位Unicode字符,,取值范围:\u0000(0)~\uffff(65.535);
(4)一种布尔类型
boolean 数据类型表示一位的信息,只有两个值:ture和false,默认值是false。
4.第一个Java程序
public class MakeTime{
public static void main(String[] args) {
Date date=new Date();
System.out.println(“现在的时间是:”+date.toString());
}
}
5.什么是“驼峰命名法”
驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母。其中又分大驼峰法和小驼峰法
小驼峰法:变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如:int myStudentCount;
变量myStudentCount第一个单词是全部小写,后面的单词首字母大写,常用于函数名。
大驼峰法:相比小驼峰法,大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等。譬如:public class DataBaseUser。
6.什么是继承?
继承是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
7.什么是“多态”?分为那四类?
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。它通常被分为下面四点:
(1)动态多态常指抽象类的继承;
(2)静态多态可用泛化编程实现,使用模板可行;
(3)函数多态即重载;
(4)宏多态原因在于它只是进行对应字节调换,不会辨别变量类型。
8.面向对象设计的五大原则
(1)单一职责原则(SRP)
一个类应该仅有一个引起它变化的原因(最简单,最容易理解却最不容易做到的一个设计原则)
(2)开放封闭原则(OCP)
既开放又封闭,对扩展是开放的,对更改是封闭的!
扩展即扩展现行的模块,当我们软件的实际应用发生改变时,出现新的需求,就需要我们对模块进行扩展,使其能够满足新的需求。
(3)里氏替换原则(LSP)
子类可以替换父类并且出现在父类能够出现的任何地方
(4)依赖倒置原则(DIP)
传统的结构化编程中,最上层的模块通常都要依赖下面的子模块来实现,也称为高层依赖低层!
(5)接口隔离原则(ISP)
9.什么是拆箱和装箱?
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型byte,short,char,int,long,float,double和boolean对应的封装类为Byte,Short,Character,Integer,Long,Float,Double,Boolean。
10.Java为什么可以跨平台使用?
因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。