面向对象的特征有哪些方面?
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)
访问修饰符public,private,protected,以及不写(默认)时的区别?
修饰符\访问权限 | 当前类 | 同包 | 子类 | 其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default(默认) | √ | √ | × | × |
private | √ | × | × | × |
Java中数据类型有哪些?
\[Java的数据类型 \begin{cases} 基本数据类型 \begin{cases} 数值型 \begin{cases} 整数型(byte、short、int、long) \\ 浮点型(float、double) \end{cases} \\ 字符型(char) \\ 布尔型(boolean) \end{cases} \\ 引用数据类型 \begin{cases} 类(class) \\ 接口(interface) \\ 数组 \end{cases} \end{cases} \]
String能被继承吗?为什么?
不能。因为String类有final修饰符,而final修饰的类是不能被继承的。
String str=“abc”;和String str=new String(“abc”);分别产生几个对象?
- 前者1或0,后者2或1,先看字符串常量池,如果字符串常量池中没有,都在常量池中创建一个,如果有,前者直接引用,后者在堆内存中还需创建一个“abc”实例对象。
- 对于基础类型的变量和常量:变量和引用存储在栈中,常量存储在常量池中。
- 为了提升jvm(JAVA虚拟机)性能和减少内存开销,避免字符的重复创建 项目中还是不要使用new String去创建字符串,最好使用String直接赋值。
int和Integer有什么区别?
iJava是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
什么是方法重载、方法重写?
重载是指在一个类里面可以有多个方法名字相同的方法,但是参数的个数、顺序不能相同。这样就可以直接调用,不用管参数的具体类型,Java会根据你传的参数调用相应的方法。
重写是当一个子类继承一个父类,可以重写覆盖父类里原来的方法,方法名称、参数要相同。有final修饰的方法不可以重写。
集合类有哪些?主要方法?怎么循环?
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
怎么读取文件?读取一张图片怎么写?
SpringMVC的MultipartResolver
SpringMVC的工作流程是什么?
Title: SpringMVC工作流程
用户->前端控制器DispatcherServlet: 发送请求
前端控制器DispatcherServlet->HandlerMapping处理器映射器: 请求
HandlerMapping处理器映射器->处理器(Controller,后端控制器): 根据请求url找到具体的处理器
处理器(Controller,后端控制器)->前端控制器DispatcherServlet: 返回
前端控制器DispatcherServlet->HandlerAdapter处理器适配器: 请求
HandlerAdapter处理器适配器->处理器(Controller,后端控制器): 执行
处理器(Controller,后端控制器)->HandlerAdapter处理器适配器: 返回ModelAndView
HandlerAdapter处理器适配器->前端控制器DispatcherServlet: 返回ModelAndView
前端控制器DispatcherServlet->ViewReslover视图解析器: 发送ModelAndView,请求视图解析
ViewReslover视图解析器->前端控制器DispatcherServlet: 发送具体视图View
Note over 前端控制器DispatcherServlet: 根据View进行渲染视图(即将模型数据填充至视图中)
前端控制器DispatcherServlet->用户: 响应
什么是Java的反射机制?
说一下Spring的IOC和AOP
IOC:控制反转,也叫依赖注入,是一种设计思想。
AOP:面向切面。