Java基础知识10题(第二天)
11.Java面向过程的三大特性:封装、继承、多态
封装
封装把一个对象的属性私有化,同时提供一些可以被外部访问的属性和方法,如果属性不想被外界访问, 我们就不需要提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类没有什么意义
继承
继承是使用已存在作为基础建立新类的技术,新类的定义可以增加新的属性或者功能,也可以用父类的功能,但不能选择性的继承父类。通过使用继承我们能够非常方便地复用以前的代码。
- 子类拥有父类所有的属性和方法(包括私有属性、私有方法),但是无法访问父类中私有属性和私有方法。
- 子类可以拥有自己的属性和方法,在父类的基础上进行扩展
- 子类可以用自己的方式实现父类的方法(重写)
- 方法的多态性体现在:方法的重载过程。方法传递不同的参数就可以调用同一方法接口实现不同的功能
- 对象的多态性体现在:向上转型和向下转型
1.向上转型:父类对象通过子类对象去实例化,实际上就是对象的对象的向上转型,期间不需要强制扎强制转换,但是可能会丢失精度,这个过程是自动完成的。
2.向下转型:父类对象可以装换为子类对象,但是必须通过强制转换
String
StringBuffer
和 StringBuilder
的区别是什么? String
为什么是不可变的?可变性
String
类中使用final关键字修饰字符数组来保存字符串private final char value[]
所以
String
对象是不可变的。而StringBuilder
与StringBuffer
都继承自AbstractBuilder
类,在AbstractBuilder
中也是使用字符数组来保存字符串char [] value
但是没有使用final关键字修饰,所以这两个对象是可变的。线程安全性
String
中的对象是不可变的,也可以理解为常量,线程安全。StringBuffer
添加了同步锁或者对调用的方法加了同步锁,线程安全StringBuilder
并没有添加同步锁,非线程安全。性能 每次对
String
类进行改变的时候,都会生成新的String
对象,然后将指针指向新的String
对象。StringBuffer
每次都会对StringBuffer
本身进行操作,而不是生成新的对象并且改变对象引用。相同的情况下StringBuilder
由于是非线程安全的,性能提升了10%-15%总结: 1.操作少量的数据使用
String
2.单线程操作缓冲区下操作大量数据:
StringBuilder
3.多线程线程操作缓冲区下操作大量数据:
StringBuffer
13.自动装箱与自动拆箱
- 装箱:基本类型->引用类型包装起来 - 拆箱:包装类->基本数据类型 14.在一个静态方法内调用一个非静态成员为什么是非法的?
由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非晶态方法,也不可以访问非静态变量成员
15.在Java中定义无参构造的作用
【Java基础知识10题(第二天)】Java程序在执行子类的构造方法前,如果没有用
super()
来调用父类的特定的构造方法,则会调用父类的"无参构造"。因此,如果父类中只定义了有参构造(A),而在子类的构造函数又没有使用super()
来调用父类中特定的构造方法(A),则会发生编译的时候会发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法就是在父类中定义一个无参构造。16.import java和java有什么区别?
刚开始的时候JavaAPI所需要的包是java开头的包,javax当时只是扩展API包来使用。然而随着时间的推移,javax逐渐扩展为Java API 的组成部分。但是,将扩展包从javax包移植到java包确实太麻烦了,最终javax包成为标准API的一部分,
两者之间实际上没有区别*。
17.接口和抽象类区别是什么(针对JDK8而言)?
文章图片
针对JDK8而言
补充:从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范
抽象类必须要有抽象方法吗? 抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。
抽象类能使用 final 修饰吗? 抽象类不能用 final 来修饰。当用 final 修饰一个类时,表明这个类不能被继承。 final 类中的所有成员方法都会被隐式地指定为 final 方法,这明显违背了抽象类存在的意义了。
18.成员变量与局部变量的区别有哪些?
文章图片
成员变量和局部变量的区别 19.创建一个对象用什么运算符?对象实体与对象引用有何不同?
new运算符,new创建对象实例(存在堆内存中),对象引用指向对象实例(对象引用存放在栈中)。一个对象引用可以指向0个或者1个对象(一根绳子可以不系气球也可以系一个气球);一个对象可以有n个引用指向它(可以用n条绳子系住一个气球)。
20.什么是方法的返回值?返回值在类的方法里面有什么作用?
方法的返回值是指=某个方法体中的代码执行后产生的结果(前提是能有返回值)。返回值的作用是接收出结果,使得它可以进行其他的操作!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- parallels|parallels desktop 解决网络初始化失败问题
- jhipster|jhipster 升级无效问题
- “精神病患者”的角度问题
- 画解算法(1.|画解算法:1. 两数之和)
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 解决SpringBoot引用别的模块无法注入的问题
- java中如何实现重建二叉树