activexobject对象不能创建_004 面向对象初步

63c3cc8dd711457a878aed7d1ee4d1db.png

1. 面向过程和面向对象的区别

(1) 用你的理解解释一下什么是面向对象编程,什么是面向过程编程.

将任务需求分解成多个相对独立的部分,分部分完成,最后合并完成的就是面向对象编程。

按照步骤形成相对应的方法,不需要协作,一步一步逐渐完成的是面向过程编程。

(2) 哪些语言是面向对象语言?哪些语言是面向过程语言?

面向对象语言:simula 67 Smalltalk EIFFEL C++ Java python C#

面向过程语言:C fortran

(3) 为什么会出现面向对象的语言?

面向过程无法完成更加复杂、需要多协作的任务,面向对象思想应运而生。

(4) 总结一下面向过程和面向对象

面向过程:将现实事物高度抽象化,以类数据反映现实逻辑的思想。

面向过程:将需求步骤化,分步依次完成的思想。

2. 对象是什么_对象和数据管理

(1) 说说你理解的对象是什么?

对象就是计算机中的一块内存块,里面包含对象的相关信息。

3. 对象和类的关系_属性_成员变量_方法

(1) 什么是类?什么是抽象?

类可以看做是一个模板,或者图纸,系统根据类的定义来造出对象。

抽象是对一类对象共同特点的归纳总结。

(2) 说说类和对象的关系,举两个例子描述类和对象

类是对象的模板,对象是类的实例。

比如狗这是一个类,共同特点:四条腿,汪汪叫等

对象有:柴狗、狼狗、哈士奇等具体的狗。

鸟是一个类,共同特点:有翅膀,会飞,有羽毛,有爪子等等

对象:鸽子,麻雀,喜鹊等具体的鸟。

(3) 类里面通常都有哪些东西?

类里面通常包括属性(field 成员变量)和方法(Method)。

4. 一个典型类的写法和调用_类的UML图入门

(1) 如何创建一个类的对象?通过类的什么方法来创建对象?

通过构造方法来创建一个类的对象。

(2) 一个类可以包含另外一个类么?通过什么符号来调用类实例的方法或者属性?

一个类可以包含另外一个类,通过点“.”来调用类实例的方法和属性。

5. 内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程

(1) JVM内存分为哪三个区域?方法区也在堆中,这句话对么?

Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。

方法区也在堆里面这句话是对的。

(2) 栈里面存储什么数据?栈的特点是什么?

栈stack的特点:

1、栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)

2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量)

3、栈属于线程私有,不能实现线程间的共享!

4、栈的存储特性是“先进后出,后进后出”

5、栈是由系统自动分配,速度快!栈是一个连续的内存空间。

(3) 堆里面存储什么数据?堆的特点是什么?

堆的特点:

1、堆用于存储创建好的对象和数组(数组也是对象)

2、JVM只有一个堆,被所有线程共享

3、堆是一个不连续的内存空间,分配灵活,速度慢!

(4) 方法区里存储什么数据?方法区的特点是什么?

方法区(又叫静态区)特点:

1、JVM只有一个方法区,被所有线程共享!

2、方法区实际也是堆,只是用于存储类、常量相关的信息!

3、用来存放程序中永远是不变或唯一的内容。(类信息[class对象]、静态变量、字符串常量等)

6. 构造方法详解_构造方法重载

(1) 构造方法的作用是什么?构造方法的要点是什么?

构造器也叫构造方法(constructor),用于对象的初始化。

构造方法的要点:

1、通过new关键字调用

2、构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能再构造器里使用return返回某个值。

3、如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果自己定义则编译器不会自动添加

4、构造器的方法名必须与类名一致

(2) 构造方法重载的意义是什么?如果写了有参构造方法后,无参构造方法还存在么?

构造方法重载可以有效降低模型的复杂程度。它可以使不同的参数类型共用一个构造方法,提高通用性。

如果写了有参构造方法后,就不存在无参构造方法了。

7. 垃圾回收机制介绍_垃圾回收算法(引用计数和引用可达)

(1) 什么是java的垃圾回收机制?垃圾回收机制的要点是什么?

是JVM中一种自动清理堆内存中无用对象,释放内存的功能。

垃圾回收机制的要点:

1、发现无用的对象;

2、回收无用对象占用的内存空间。

(2) 如何确定内存中的哪些对象是垃圾?

引用计数法和引用可达法(根搜索算法)

引用计数法:堆中每一个对象都有一个引用计数。被引用一次,计数加1,被引用变量值变为null,则计数减1。直到计数为0,则表示变成无用对象。优点是算法简单,缺点是“循环引用无用对象”无法识别。

引用可达法(根搜索算法):程序把所有的引用关系看做一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用的节点,即无用节点。

8. 通用分代垃圾回收详解(年轻代,年老代,持久代)

(1) 垃圾回收机制的算法非常多,其核心思想是什么?垃圾回收最频繁的是在哪个代里面?

分代思想

垃圾回收最频繁是在Eden年轻代

(2) 什么是minorGC,什么是majorGC,什么是fullGC

Minor GC:用于清理年轻代区域。Eden区域满了就会触发一次Minor GC。清理无用对象,将有用对象复制到“Survivor 1”、“Survivor 2”区中(这两个区,大小也相同,同一时刻Survivor 1和Survivor 2只有一个在用,一个为空)

Major GC:用于清理老年代区域。

Full GC:用于清理年轻代、年老代区域。成本较高,会对系统性能产生影响。

(3) 垃圾回收的过程是什么?

1、新创建的对象,绝大多数都会存在Eden中。

2、当Eden满了(达到一定比例)不能创建新对象,则触发垃圾回收(GC),将无用对象清理掉。然后剩余对象复制到某个Survivor中,如S1,同时清空Eden区。

3、当Eden区再次满了,会将S1区中的不能被清空的对象存到另一个Survivor中,如S2,同时将Eden区中的不能清空的对象,也复制到S1中,保证Eden和S1,均被清空。

4、重复多次(默认15次)Survivor中没有被清理的对象,则会被复制到老年代Odd/Tenured区中。

5、当Odd区满了,则会触发一个一次完整的垃圾回收(FullGC),之前新生代的垃圾回收称为minorGC。

9. this的本质_对象创建的过程

(1) 写出创建对象的过程

创建一个对象分为如下四步:

1、分配对象空间,并将对象成员变量初始化为0或空

2、执行属性值的显示初始化

3、执行构造方法

4、返回对象的地址给相关的变量

(2) this指向哪里?同类中,一个构造器如何调用另外一个构造器?

This指向当前对象。通过this在构造方法第一句调用。

10. Static关键字_内存分析静态变量和静态方法

(1) Static修饰变量称之为什么?static修饰方法称之为什么?

静态变量。静态方法。

(2) 被static修饰的变量和方法从属于谁?没被static修饰的变量和方法从属于谁?

被static修饰的变量和方法从属于类。

没被static修饰的变量和方法从属于对象。

(3) 在同一个类中,在非静态方法中,如何调用本类的静态方法和静态变量?

直接调用

(4) 在同一个类中,在静态方法中,如何调用本类的静态方法和静态变量?

直接调用

(5) 在同一个类中,在静态方法中,如何调用本类的非静态方法和非静态变量?

不可以调用

(6) 在不同类中,A类的方法如何调用B类的非静态方法或者非静态变量?

不可以调用

(7) 在不同类中,A类的方法如何调用B类的静态方法或者静态变量?

通过B.静态方法名或者静态变量名来调用。

11. 静态初始化块_继承数的追溯

(1) 静态初始化块的作用是什么?什么时候执行静态初始化块?

静态初始化块用于类的初识化。

在类初识化时执行静态初始化块。上溯到Object类,先执行Object的静态初始化块,再向下执行自类的静态初始化块,直到我们的类的静态初始化为止。

12. Java的参数传值机制_值传递

(1) 写代码解释为什么说java中参数传递是值传递

public class User {

int id;

String name;

String pwd; //类属性

public User(int id, String name) { //构造方法

super();

this.id = id;

this.name = name;

}

public void testParameterTransfer(User u) { //非静态方法

u.name = "Lucas";

}

public static void main(String[] args) {

User user = new User(1001, "赵雄"); //创建新对象user,并生成一个引用地址

user.testParameterTransfer(user); //调用方法时,将user的地址复制给形参中的u,然后u根据复制地址对对象进行操作。之所以能够修改是因为这两个都指向了同一个对象的地址。

System.out.println(user.name); //最终修改后的名字为Lucas

}

}

(2) 基本数据类型传递和引用数据传递一样么?

基本数据类型传递和引用数据类型传递是一样的,都是值传递。

一个方法不能修改一个基本数据类型的参数(数值型和布尔型)。

一个方法可以修改一个引用所指向的对象状态,但这仍然是按值调用而非引用调用。

上面两种传递都进行了值拷贝的过程。

13. Java包机制_package的使用_jdk提供的常见包的作用

(1) Java中Package的作用是什么?

包机制是Java中管理类的重要手段。开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。包对于类,相当于文件夹对于文件的作用。

(2) Jdk有哪些常见包,分别什么作用?

Java.lang:包含一些java语言的核心类,如String Math System和Thread,提供常用功能。

Java.awt:包含了构成窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

http://Java.net:包含了与执行网络相关操作的类。

http://Java.io:包含了能提供多种输入/输出功能的类。

Java.util:包含了一些实用工具,如定义系统特性,使用日历日期相关的函数。

14. Import详解_静态导入详解

(1) 什么情况下需要导包?

需要使用其他包的数据的时候。

(2) 怎么导入一个包下的所有类?java默认导入了什么包?

Import 包名

java默认导入了java.lang

(3) 如果需要使用不同包下的同名类怎么办?

用最原始的导入方法:包名.类名来进行相关操作。

(4) 什么是静态导入?

静态导入(static import)是在JDK1.5新增的功能,其作用是用于导入指定类的静态属性,这样我们可以直接使用静态属性。

如:import static java.lang.Math.*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值