java清空字符串_学无止境之小白学java……第004天

学习主题:面向对象初步

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应作业:

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

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

面向过程编程就是可以单一的按照步骤完成某件事。

面向对象编程是需要协作按照模块来一个个的完成,针对大型项目可优先选择面向对象。

(2) C语言面向过程的语言,C++,Java,Python等是面向对象的语言

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

当我们思考计较复杂的问题,就会发现按照1234这样的步骤是不可能实现的,而是需要很多协作才能完成,此时面向对象思想也就应用而生了,也就出现了面向对象的语言。

(4) 面向过程与面向对象的总结:

  • 1、 都是解决问题的思维方式,都是大妈组织的方式
  • 2、 解决简单问题可以使用面向过程
  • 3、 解决复杂问题:宏观上使用面向对象把我,围观处理上仍然是面向过程

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

对象是一种数据管理的方式

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

(1) :可以看作是一个模板,或者图纸,系统根据累的定义来造出对象。

抽象:便于认识未知事物总结的过程

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

通过抽象创建类,程序通过运行产生对象。

蔬菜可以是类,各种蔬菜就是各个对象

(3) 类里面通常都有:属性,方法,构造方法,对象……

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

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

new 类名; 这样就可以创建一个对象

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

(2)一个类可以包含另一个类,通过“.”来调用类实例的方法或者属性。

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

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

(2) 栈存储线程执行方法的信息(实际参数、局部变量等)

栈的特点:

  • 1、 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法入口)
  • 2、 JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
  • 3、 栈属于线程 私有,不能实现线程间的共享
  • 4、 栈的存储特性是“先进后出,后进先出”
  • 5、 栈是由系统自动分配,速度快。展示一个连续的内存空间

(3) 堆里面存储创建好的对象和数组(数组也是对象)

堆的特点:

  • 1、 对用于存储创建好的对象和数组(数组也是对象)
  • 2、 JVM只有一个堆,被所有线程共享
  • 3、 堆是一个不连续的内存空间,分配灵活,速度慢

(4) 方法区存储程序中永远不变或唯一的内容。(类信息[class对象]、静态变量、字符串常量)

方法区(静态区)的特点:

  • 1、 JVM只有一个方法区,被所有线程共享
  • 2、 方法区实际也是堆,只是用于存储类、常量相关的信息
  • 3、 用来存放程序中永远不变或唯一的内容。(类信息[class对象]、静态变量、字符串常量)

学习主题:面向对象初步

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应作业

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

(1) 构造方法的作用是用于对象的初始化。

构造方法的要点是:

  • 1、 通过new关键字调用
  • 2、 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
  • 3、 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。
  • 4、 构造器的方法名必须和类名一致。
  • 1、构造方法的重载和方法的重载是一样的,重载的构造方法,实际是完全不同的方法,只是名称相同而已,是故意取了相同的名,为了方便使用。
  • 2、如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。

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

(1) Java的垃圾回收机制是:对象空间的分配和释放。

要点:

  • 1、发现无用的对象
  • 2、回收无用对象占用的内存空间

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

就是没有任何变量引用该对象。

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

(1) 垃圾回收机制的算法非常多,其核心思想是:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的回收算法,以便提高回收效率。

垃圾回收最频繁的是在年轻代里面

(2) MinorGC用于清理年轻代区域

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)

82c7c090ee3f7f64f89542f633399c67.png

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

(1) 创建对象的过程

  • 1、 分配对象空间,并将对象成员安变量初始化为0或空
  • 2、 执行属性值的显式初始化
  • 3、 执行构造方法
  • 4、 返回对象的地址给相关的变量

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

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

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

(1) Static修饰变量称之静态变量,static修饰方法称之为静态方法。

(2) 被static修饰的变量和方法从属于类,没被static修饰的变量和方法从属于对象。

(3) 在同一个类中,在非静态方法中,直接调用本类的静态方法和静态变量。

(4) 在同一个类中,在静态方法中, 直接调用本类的静态方法和静态变量。

(5) 在同一个类中,在静态方法中,通过对象调用本类的非静态方法和非静态变量。

(6) 在不同类中,A类的方法通过对象调用B类的非静态方法或者非静态变量。

(7) 在不同类中,A类的方法通过B类的类名调用B类的静态方法或者静态变量。

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

静态初始化块的作用是用于类的初始化操作

先执行object的静态初始化块,再向下执行子类的静态初始化块,直到类的静态初始化块为止。

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

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

667b6852ea339748ee3d57f37b0d2b76.png
public static void main(String[] args) {
User4 u1 = new User4(100,"高小七");

在main方法下,创建了一个新的对象,并把新对象的地址给了u1,

u1.testParameterTrabsfer01(u1);

调用testParameterTrabsfer01(u1),把u1的值复制给了u

 u.name = "高小八";

修改了新对象的参数name

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

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

(1) Java中Package的作用通过package实现对类的管理

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

db12a6e422bb61b0134fa3d61e912dba.png

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

(1) 需要调用另一个包里面的类的情况下需要导包

(2) 怎么导入一个包下的所有类?

包名.* 可以导入一个包下的所有类

Java默认导入了java.lang包下的所有类

(3) 如果导入两个同名的类,只能用包名+类名来显示调用的相关类。

(4) 静态导入(static import)是用与于导入制定类的静态属性,这样就可以直接使用静态属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值