JAVA有哪些系列_java基础系列004

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

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

答:面向对象和面向过程都是设计软件的基本思想,相辅相成,其中面向过程编程是按照步骤一步一步对应成方法进行编程,面向对象则是偏向程序的设计。

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

答:java就是典型的面向对象语言,c语言就属于面向过程语言,

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

答:面向过程编程适合简单,不需要协作的事务,在思考更复杂的问题时,难以再一步步列出步骤进行,因此会出现面向对象语言

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

答:都是解决问题的思维方式,都是代码组织的方式、

解决简单问题可以使用面向过程

解决复杂问题:宏观上使用面向对象把握,围观处理上仍然是面向过程。

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

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

答:一种数据管理的方式,一个在内存中的内存块。

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

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

答:类可以看作是对象的模板,抽象指的是抽出类似的部分,归纳共同点。

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

答:系统根据类的定义来造出对象

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

答:通常有属性和方法

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

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

答:通过调用类内的构造方法初始化对象。无参的构造方法可以由系统自动创建。

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

答:可以

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

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

答:分为栈,堆,方法区,对。

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

答:栈帧。

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

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

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

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

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

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

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

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

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

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

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

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

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

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

第8次(面向对象初步)

学习主题:面向对象初步

学习目标:

1 掌握构造方法

2 了解垃圾回收机制

3 掌握this关键字

4 掌握static关键字

5 掌握java中的参数传值机制

6 掌握package和import

对应视频:

对应文档:

对应作业

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

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

答:用于对象的初始化

要点:

1:通过new关键字调用!!

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

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

4:构造器的方法名必须和类名一致!

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

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

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

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

答:无用内存管理机制

管理无用对象,回收无用对象占用的内存空间

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

答:使用引用计数法,堆中每个对象都有一个引用计数,被引用一次,计数+1,被引用变量值变为null,则计数-1,直到计数为0,则表示变成无用对象。

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

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

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

答:基于不同的对象生命周期不同的事实采取不同算法,年轻代

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

答:minorGC:用于清理年轻代区域,Eden区满了就会触发一次MinorGC,清理无用对象,将有用对象复制到“Survivor1”“Survivor2”区中。

MajorGC:用于清理年老代区域。

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

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

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

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

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

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

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

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

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

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

2:执行属性值的显式初始化

3:执行构造方法。

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

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

答:构造方法中,this总是指向正要初始化的对象,普通方法中,this总是指向调用该方法的对象。

使用this关键字调用重载的构造方法,避免相同的初始化代码,但只能在构造方法中用,并必须位于构造方法的第一句

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

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

答:静态变量,静态方法。

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

答:static修饰的变量和方法从属于类,普通变量和方法从属于对象。

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

答:输入方法名和变量名调用。

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

答:直接调用。

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

答:不可直接访问。

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

答:在A类中创建B类的对象b。

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

答:通过类名可调用。

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

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

答:静态初始化块用于类的初始化操作。先执行静态初始化块。

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

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

答:也就是传递的是值的副本,也就是说得到的是原参数的复印件,而不是原件,因此,复印件改变不会影响原件。

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

答:基本数据类型传递的是值的副本,副本改变不会影响原件。

引用数据传递的是值的副本,但是引用类型指的是对象的地址,因此,副本和原参数都指向同一个“地址”,改变副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变。

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

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

答:通过Package实现对类的管理

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

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

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

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

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

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

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

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

答:如果需要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。

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

答:java会默认导入java.lang包下所有的类

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

答:如果导入两个同名的类,只能用包名+类名来显示调用相关类

(4) 什么是静态导入?

答:是JDK1.5新增加的功能,用于导入指定类的静态属性,这样可以直接使用静态属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值