1、什么是抽象? 抽取关键相关特性(属性和方法)构成对象,用程序的方法逻辑和数据结构 属性模拟现实的世界对象。 2、类与对象的关系? 类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。 3、基本数据类型?(占用空间大小、取值范围、包装类型、默认值) (1)四种整数类型 byte(1个字节、-128~127、Byte、0) short (2个字节、-32768 ~ 32767、Short、0) int (4个字节、-2147483648~2147483647、Integer、0) long (8个字节、-9223372036854775808~9223372036854775807、Long、0L) (2)两种浮点数类型 float (4个字节、-3.4E+38 ~ 3.4E+38、Float、0.0f) double (8个字节、-1.7E-308~1.7E+308、Double、0.0d) (3)一种布尔类型 char (2个字节、0~255、Character、空) (4)一种字符类型 boolean (1个字节、true or false、Boolean、false) 4、第一个Java程序(打印一个字符串,输出当前日期) package jq; import java.text.ParseException; import java.util.Calendar;
public class DateTest { public static void main(String[] args) throws ParseException { Calendar now = Calendar.getInstance(); System.out.println(“当前日期为:” + now.get(Calendar.YEAR)+ “年” + (now.get(Calendar.MONTH) + 1)+“月” + now.get(Calendar.DAY_OF_MONTH)+ “日”); } } 5、什么是“驼峰命名法”? 驼峰命名法的命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读性。
小驼峰法 变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如 int myStudentCount; 变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
继承 是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。大驼峰法 相比小驼峰法,大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等。譬如 public class DataBaseUser; 常用于函数名。 6、什么是继承? 继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。 7、什么是多态?分为那4类? 多态是同一个实现接口,使用不同的实例而执行不同的操作。 多态分为参数多态,包含多态,过载多态,强制多态,前两种为通用多态,后两种为特定多态。 8、面向对象设计五大原则? 单一职责原则SRP(Single Responsibility Principle) 是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。
开放封闭原则OCP(Open-Close Principle) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。
里式替换原则LSP(the Liskov Substitution Principle LSP) 子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。
依赖倒置原则DIP(the Dependency Inversion Principle DIP) 具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能 造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。
接口分离原则ISP(the Interface Segregation Principle ISP) 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来 9、什么是拆箱和装箱? 装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 10、Java为什么可以跨平台使用? Java之所以能跨平台,是因为Java虚拟机能跨平台。 Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。
