万网主机怎么做网站大数据网站
Java常见面试题(2)
- 面向对象的三个特征
- 谈谈你对多态的理解
- 多态的好处:
- 什么是Java程序的主类?应用程序和小程序的主类有何不同?
- 为什么Java里有基本数据类型和引用数据类型
- 值传递和引用传递
- 抽象类和接⼝及普通类的区别
- Int和Integer的区别?
- break ,continue ,return的区别及作用
- Spring中常用的注解
面向对象的三个特征
抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口
继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能
子类拥有父类非私有的属性和方法
子类可以拥有自己属性和方法,即子类可以对父类进行扩展
子类可以用自己的方式实现父类的方法
多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
谈谈你对多态的理解
Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类(
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将父类或者父接口引用指向子类。
向上转型
父类对象通过子类对象去实例化,实际上就是对象的向上转型
向下转型 必须要进行强制的类型转换。
多态的好处:
1.可替换性:多态对已存在代码具有可替换性。
2.灵活性:它在应用中体现了灵活多样的操作,提高了使用效率
3.简化性:简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时。
什么是Java程序的主类?应用程序和小程序的主类有何不同?
一个程序中可以有多个类,但只能有一个类是主类。
在Java应用程序中,这个主类是指包含main()方法的类。
而在Java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。
应用程序的主类不一定要求是public类,但小程序的主类要求必须是public类。主类是Java程序执行的入口点。
为什么Java里有基本数据类型和引用数据类型
存储方式:引用类型在堆里而基本类型在栈里。栈空间小且连续,存取速度比较快;在堆中则需要new,对基本数据类型来说空间浪费率太高;
传值方式:基本类型是在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的;引用数据类型变量,调用方法时作为参数是按引用传递的
值传递和引用传递
值传递就是传递的过程中,传递的是值,对值操作之后,不会影响原有变量的值。
引用传递就是传递的过程中,传递的是引用,操作引用之后,会影响原有变量的值。
在传递的过程中,如果传递的是基本数据类型以及String,那么都是值传递,不会改变原有变量。
在传递的过程中,如果传递的是对象,如果修改了属性的值,那么会直接改动原有对象,会影响外面的值。
抽象类和接⼝及普通类的区别
抽象类和接口:
首先都不能被实例化。
抽象类有构造方法,接口没有构造方法。
抽象类中有成员变量,接口只能是常量。
抽象类被 abstract 修饰 接口是interface
抽象类和普通类的区别
包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,和普通类一样,同样可以拥有成员变量和普通的成员方法,抽象类和普通类的区别如下:
抽象方法的访问修饰符必须为public和protected。抽象方法9是用来被继承的,所以不能用private修饰;
抽象类不能被实例化。
如果一个类继承于抽象类,则子类必须实现父类的抽象方法,如果子类没有实现父类的抽象方法,则子类必须也是一个抽象类。
Int和Integer的区别?
1.Integer的默认值是null,int的默认值是0
2.Integer变量必须实例化后才能使⽤,⽽int变量不需要
3.Integer实际是对象的引⽤,int 直接存储数据
break ,continue ,return的区别及作用
break;跳出循环
continue:跳出本次循环,继续执行下次循环
return:程序返回,不再执行下面的代码
Spring中常用的注解
1.@Controller:用于标注控制层组件
2.@ResponseBody:作⽤于⽅法上,可以将整个返回结果以某种格式返回,如json或xml格式
3.@RestController:相当于@Controller+@ResponseBody
4.@PathViriable:⽤于定义路径参数值,取出url模板中的变量作为参数
5.@Service:⽤于对业务逻辑层进⾏注解
6.@Autowired:对类成员变量、方法及构造函数进行标注,完成自动装配的工作
7.@RequestParam:⽤于获取传⼊参数的值,类似于request.getParameter(“name”)
8.@RequestMapping:用来处理请求地址映射的注解,可用于类或方法上
9.@Component:在类定义之前添加@Component注解,他会被spring容器识别,并转为bean(不好归类时,使用这个注解进行标注);