java004

学习主题:面向对象初步
学习目标:
1.掌握面向对象,了解面向过程
2.掌握什么是对象,什么是类
3.掌握通过类创建对象,调用对象的属性或方法
4.掌握jvm内存结构,以及程序运行jvm的变化过程
1.面向过程和面向对象的区别
(1)用你的理解解释一下什么是面向对象编程,什么是面向过程编程.
面向对象就是先思考怎么样能产生出这个物品,面向过程就是怎么样使用这个物品。
(2)哪些语言是面向对象语言?哪些语言是面向过程语言?
Java;C语言
(3)为什么会出现面向对象的语言?
当问题过于复杂,软件规模过大时,单纯地使用面向过程的弊端越来越明显的显示出来,开发会变得复杂,可维护性和可扩展性都不高,这时候就需要面向对象来分析、组织代码和管理开发。总结一下面向对象和面向对象
2.对象是什么_对象和数据管理
(1)说说你理解的对象是什么?
对象说白了也是一种数据结构(对数据的管理模式),将数据和数据的行为放到了一起。
在内存上,对象就是一个内存块,存放了相关的数据集合!
对象的本质就一种数据的组织方式!
3.对象和类的关系_属性_成员变量_方法
(1)什么是类?什么是抽象?
抽象就是对事物进行分析,提取出我们需要的特征。
类就是抽象之后的归纳。类可以看做是一个模板,或图纸,系统根据类的定义来造出对象。
(2)说说类和对象的关系,举两个例子描述类和对象
对象是具体的事物;类是对对象的抽象;
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
(3)类里面通常都有哪些东西?
属性,构造器,方法
4.一个典型类的写法和调用_类的UML图入门
(1)如何创建一个类的对象?通过类的什么方法来创建对象?
通过new关键字来调用类的构造方法
(2)一个类可以包含另外一个类么?通过什么符号来调用类实例的方法或者属性?
可以; ‘.’
5.内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程
(1)JVM内存分为哪三个区域?方法区也在堆中,这句话对么?
栈,堆,方法区;对
(2)栈里面存储什么数据?栈的特点是什么?
栈存储该线程执行方法的信息(实际参数、局部变量等)。
栈有以下特点:
栈是线程私有的,无法实现线程间共享
栈的存储特性是“先进后出,后进先出”。
栈是由系统自动分配,速度快。栈是一个连续的内存空间。
(3)堆里面存储什么数据?堆的特点是什么?
堆里存储创建好的对象和数组(数组也是对象)。
堆的特点:
JVM只有一个堆,所有线程共享。
不连续的内存空间,分配灵活,速度慢。
(4)方法区里存储什么数据?方法区的特点是什么?
方法区中存储类、常量相关的信息,(类信息【Class对象】、静态变量、字符串常量等)
方法区的特点:
方法区实际上也是堆;
只用来存放程序中永远是不变或唯一的内容。

学习主题:面向对象初步
学习目标:
1 掌握构造方法
2 了解垃圾回收机制
3 掌握this关键字
4 掌握static关键字
5 掌握java中的参数传值机制
6 掌握package和import
1.构造方法详解_构造方法重载
(1)构造方法的作用是什么?构造方法的要点是什么?
构造方法,用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。
要点:
a.通过new关键字调用。
b.构造器虽然有返回值,但是不能定义返回值(返回值的类型肯定是本类),不能在构造器里使用return返回
(2)构造方法重载的意义是什么?如果写了有参构造方法后,无参构造方法还存在么?
构造方法重载的意义是提供不同形参类型、形参个数和形参顺序的构造方法。
写了有参构造方法后,编译器不会再默认提供无参构造方法。

2.垃圾回收机制介绍_垃圾回收算法(引用计数和引用可达)
(1)什么是java的垃圾回收机制?垃圾回收机制的要点是什么?

Java的垃圾回收机制就是对象的内存管理,回收没有被引用的对象的内存空间。
垃圾回收机制的要点:
发现无用的对象。
回收无用对象占用的内存空间。
如何确定内存中的哪些对象是垃圾?
通过垃圾回收相关算法确定。
a. 引用计数法
堆中每个对象都有一个引用计数。被引用一次,计数加1. 被引用变量值变为null,则计数减1,直到计数为0,则表示变成无用对象。优点是算法简单,缺点是“循环引用的无用对象”无法别识别。
b. 引用可达法(根搜索算法)
程序把所有的引用关系看作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用的节点。
通用分代垃圾回收详解(年轻代,年老代,持久代)
垃圾回收机制的算法非常多,其核心思想是什么?垃圾回收最频繁的是在哪个代里面?
核心思想是分代垃圾回收。
垃圾回收最频繁的是年轻代。
(2)什么是minorGC,什么是majorGC,什么是fullGC
minorGC:用于清理年轻代区域。
Major GC:用于清理老年代区域。
Full GC:用于清理年轻代、年老代区域。 成本较高,会对系统性能产生影响。
(3)垃圾回收的过程是什么?
新创建的对象,绝大多数都会存储在Eden中,
当Eden满了(达到一定比例)不能创建新对象,则触发垃圾回收(GC),将无用对象清理掉,然后剩余对象复制到某个Survivor中,如S1,同时清空Eden区
当Eden区再次满了,会将S1中的不能清空的对象存到另外一个Survivor中,如S2,同时将Eden区中的不能清空的对象,也复制到S1中,保证Eden和S1,均被清空。

重复多次(默认15次)Survivor中没有被清理的对象,则会复制到老年代Old(Tenured)区中,
当Old区满了,则会触发一个一次完整地垃圾回收(FullGC),之前新生代的垃圾回收称为(minorGC)

3.this的本质_对象创建的过程
(1)写出创建对象的过程
分配对象空间,并将对象成员变量初始化为0或空
执行属性值的显示初始化
执行构造方法
返回对象的地址给相关的变量
(2)this指向哪里?同类中,一个构造器如何调用另外一个构造器?
this指向当前对象。
在一个构造器中使用this调用另外一个构造器,必须位于构造器的第一行。
4.Static关键字_内存分析静态变量和静态方法
(1)Static修饰变量称之为什么?static修饰方法称之为什么?
静态变量,静态方法
(2)被static修饰的变量和方法从属于谁?没被static修饰的变量和方法从属于谁?
类;对象
(3)在同一个类中,在非静态方法中,如何调用本类的静态方法和静态变量?
直接调用
(4)在同一个类中,在静态方法中,如何调用本类的静态方法和静态变量?
直接调用
(5)在同一个类中,在静态方法中,如何调用本类的非静态方法和非静态变量?
不能调用
(6)在不同类中,A类的方法如何调用B类的非静态方法或者非静态变量?
B类的对象名.非静态方法名或非静态变量名。
(7)在不同类中,A类的方法如何调用B类的静态方法或者静态变量?
B类的对象名.静态方法名或静态变量名。
B类的类名.静态方法名或静态变量名。
5.静态初始化块_继承数的追溯
(1)静态初始化块的作用是什么?什么时候执行静态初始化块?
静态初始化块,用于类的初始化操作。
类加载时执行静态初始化块。
6.Java的参数传值机制_值传递
(1)写代码解释为什么说java中参数传递是值传递
java004_第1张图片
(2)基本数据类型传递和引用数据传递一样么?
基本数据类型作为形式参数:传参传递的是实参的值,传值 pass by value
引用数据类型做为参数:传递的是引用 传引用 pass by reference
基本数据类型传递和引用数据传递,都是值传递。但是因为引用类型数据是对象的地址,若副本指向的对象发生改变,原参数指向的对象也会改变。

7.Java包机制_package的使用_jdk提供的常见包的作用
(1)Java中Package的作用是什么?
实现对类的管理
(2)Jdk有哪些常见包,分别什么作用?
java.lang:包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt:包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net:包含执行与网络相关的操作的类。
java.io:包含能提供多种输入/输出功能的类。
java.util:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
8.Import详解_静态导入详解
(1)什么情况下需要导包?
当我们要使用其他包的类时,需要导入该类所以在的包。
(2)怎么导入一个包下的所有类?java默认导入了什么包?
import 包名.*;
java默认导入java.lang包
(3)如果需要使用不同包下的同名类怎么办?
包名+类名来显示调用相关类。
(4)什么是静态导入?
静态导入(static import)是在JDK1.5新增加的功能,其作用是用于导入指定类的静态属性,这样我们可以直接使用静态属性

你可能感兴趣的:(Java)