第二周Java笔记

四、面向对象基础

1、面向过程和面向对象 

 2、对象的进化史

3、对象和类的概念

 (1)第一个类的定义

 

(2)属性 (field)

 属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

(3)方法

用于定义该类或该类实例的行为特征和功能实现。

(4)一个典型类的定义和UML图

4、面向对象的内存分析

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

  

  5、构造方法

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

6、构造方法的重载

 

7、垃圾回收机制

Java引入了垃圾回收机制,令C++程序员最头疼的内存管理问题迎刃而解。Java程序员可以将更多的精力放到业务逻辑上而不是内存管理工作上,大大的提高了开发效率。

(1)原理和算法

任何一种垃圾回收算法一般要做两件基本事情:

  1. 发现无用的对象

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

1. 引用计数法    2. 引用可达法(根搜索算法)

(2)通用的分代垃圾回收机制

垃圾回收过程:

    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)

(3)JVM调优和Full GC

在对JVM调优的过程中,很大一部分工作就是对于Full GC的调节。有如下原因可能导致Full GC:

  1.年老代(Tenured)被写满

  2.持久代(Perm)被写满

  3.System.gc()被显式调用(程序建议GC启动,不是调用GC)

  4.上一次GC之后Heap的各域分配策略动态变化

(4)开发中容易造成内存泄露的操作

创建大量无用对象;静态集合类的使用;各种连接对象(IO流对象、数据库连接对象、网络连接对象);未关闭监听器的使用

8、this关键字

this的本质就是“创建好的对象的地址”。 

 this最常的用法:

  1.  在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。

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

  3. this不能用于static方法中。

9、static关键字

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

 10、静态初始化块

用于类的初始化操作!在静态初始化块中不能直接访问非static成员。

静态初始化块执行顺序(学完继承再看这里):

  1. 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。

  2. 构造方法执行顺序和上面顺序一样!

 11、参数传值机制

Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。

引用类型指的是“对象的地址”。

 

12、包

 13、package

要点:1. 通常是类的第一句非注释性语句。

  2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。

使用:

 (1)JDK中的主要包

 (2)导入类import

如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。import后,便于编写代码,提高可维护性。

要点:1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。

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

         java.util.Date date=new  java.util.Date();

(3)静态导入

使用:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值