常见的java面试的基础问题(一) | 看看你会的有多少?

来源:网上收集整理

面向对象

面向对象思想:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对象,强调具备功能的对象;

面向对象思想特点:

  1. 是符合人们思考习惯的一种思想;
  2. 将复杂的事情简单化了;
  3. 将程序员从执行者变成了指挥者。

面向对象的三大特征:

  1. 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式;
  2. 继承: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义 这些属性和行为,只要继承那个类即可;
  3. 多态: 一个对象在程序不同运行时刻代表的多种状态,父类或者接口的引用指向子类对象。

类和对象:

类:对现实世界中某类事物的描述,是抽象的,概念上的定义。

对象:事物具体存在的个体。

1

成员变量和局部变量的区别(重点)

(1)作用域 成员变量:针对整个类有效。 局部变量:只在某个范围内有效。(一般指的就是方法,语句体内)

(2)存储位置 成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。 局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。 当方法调用完,或者语句结束后,就自动释放。 (3)初始值 成员变量:有默认初始值。 局部变量:没有默认初始值,使用前必须赋值。

2

匿名对象

  1. 匿名对象就是没有名字的对象。是对象的一种简写形式。 2.应用场景 A:只调用一次类中的方法。 B:可以作为实际参数在方法传递中使用

3

封装:

1. 指隐藏对象的属性和实现细节,仅对外提供公共访问方式;比如电脑机箱、笔记本等。

封装好处

  1. 将变化隔离;
  2. 方便使用;
  3. 提高复用性
  4. 提高安全性

2. 关键字private:封装在代码中的体现:

  1. 私有的意思,权限修饰符;
  2. 用来修饰成员变量和成员函数
  3. 用private修饰的成员只在本类中有效
  4. 私有是封装的一种体现

3. 构造方法:

  1. 特点:方法名与类名相同,没有返回类型,没有返回值
  2. 作用:构造函数是用于创建对象,并对其进行初始化赋值,对象一建立就自动调用相对应的构造函数.

4. 构造方法的注意事项: 1. 如果一个自定义类没有构造方法,系统会默 认给出一个无参构造方法

2. 如果一个自定义类提供了构造方法,那么, 系统将不再给出无参构造方法。

5. 构造方法和成员方法的区别

  1. 格式区别:构造方法和类名相同,并且没有返回类型,也没有返回值。普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
  2. 作用区别:构造方法用于创建对象,并进行初始化值。普通成员方法是用于完成特定功能的。
  3. 调用区别:构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数,普通成员方法是由创建好的对象调用,可以调用多次.

6. 构造代码块:

  1. 作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
  2. 构造代码块和构造函数的区别:(1)构造代码块是给所有不同对象的共性进行统一初始化;(2)构造函数是给对应的对象进行初始化

7. this关键字

  1. this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁.
  2. this的使用场景:A:用于区分同名成员变量和局部变量;B:在定义函数时,该函数内部要用到调用该函数的对象时,因为此时对象还没建立,故this代表此对象;C:构造函数间调用,这个时候,this(参数)必须作为第一条语句存在。

8. Person p = new Person();在内存中做了哪些事情

  1. 将Person.class文件加载进内存中;
  2. 如果p定义在主方法中,那么,就会在栈空间开辟一个变量空间p
  3. 在堆内存给对象分配空间
  4. 对对象中的成员进行默认初始化
  5. 对对象中的成员进行显示初始化
  6. 调用构造代码块对对象进行初始化。(如果没有就不执行)
  7. 调用构造方法对对象进行初始化。对象初始化完毕。
  8. 将对象的内存地址赋值给p变量,让p变量指向该对象

4

static关键字:

1. static关键字:

  1. 用来修饰成员变量和成员函数;
  2. static的特点:随着类的加载而加载;优先于对象存在;对所有对象共享;可以被类名直接调用
  3. 静态的注意事项

2. 静态变量和成员变量的区别

  1. 调用方式:静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。这个变量属于类。
  2. 成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。

3. 存储位置

  1. 静态变量存储在方法区中的静态区。
  2. 成员变量存储在堆内存。

4. 生命周期

  1. 静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。
  2. 成员变量随着对象的创建而存在,随着对象的消失而消失。

5. 与对象的相关性

  1. 静态变量是所有对象共享的数据。
  2. 成员变量是每个对象所特有的数据。

6. 静态的优点

  1. 对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份,可直接被类名调用

7. 静态的弊端

  1. 生命周期过长,随着类的消失而消失
  2. 访问出现权限,即静态虽好但只能访问静态

8. 什么使用使用静态呢?

  1. 当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
  2. 当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。
  3. 静态的生命周期比较长,所以一般不推荐使用。

9. 静态代码块特点:

  1. 它只执行一次,它比main还先执行。
  2. 执行顺序
  3. 静态代码块–构造代码块–构造方法

为你推荐以下文章

【资源分享】Java大牛带你从0到企业级项目开发

100多本计算机类图书无套路免费送

快速搞定8大排序算法

原文发布于微信公众号 - 轮子工厂(Programmer-ing)

原文发表时间:2018-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开发与安全

从零开始学C++之对象的使用(二):四种对象生存期和作用域、static 用法总结

一、四种对象生存期和作用域 ? 栈对象 隐含调用构造函数(程序中没有显式调用) 堆对象 隐含调用构造函数(程序中没有显式调用),要显式释放 全局...

2050
来自专栏程序员同行者

python3 内置函数详解

2093
来自专栏Rgc

python中赋值,深拷贝,浅拷贝区别

这三种不适合 int,str,float,bool等类型。因为这些类型在值改变后,被赋值的变量值不变。

3072
来自专栏ShaoYL

预处理指令(条件编译)

37011
来自专栏数据结构与算法

1002. 三角形 (

题目描述 输入三角形三边长a,b,c(保证能构成三角形),输出三角形面积。 输入 一行三个用一个空格隔开的实数a,b,c,表示三角形的三条边长。 输出 输出三角...

3966
来自专栏cs

python字符串

慕课网 首发了,放在垂直领域吧。 python字符串是一种元素为字符的序列类型。因为序列类型是元素被顺序放置的一种数据结构,因此可以通过索引来获取某一个字符,...

3319
来自专栏Python小屋

Python内置函数max()高级用法

不管是排序还是选取最大值或者最小值,都应该有个规则或者顺序,而平时我们所说的最大值或最小值实际上也是在某种排序规则或顺序下的最大值和最小值。Python内置函数...

3304
来自专栏WD学习记录

js学习2016-8-16

    当一个函数被保存为对象的一个属性时,我们称它为一个方法。如果调用表达式包含一个提取属性的动作,(即我们讲解对象时所说的.操作符),那么它就被当做一个方法...

801
来自专栏向治洪

传统多线程之前如何共享数据

几种方式 线程执行代码相同,使用同一Runnable对象,Runnable对象中有共享数据 线程执行代码不同,将共享数据封装在另一对象中(操作数据的方法也在该...

18810
来自专栏开发与安全

从零开始学C++之RTTI、dynamic_cast、typeid、类与类之间的关系uml

一、RTTI Run-time type information (RTTI) is a mechanism that allows the type of a...

2108

扫码关注云+社区

领取腾讯云代金券