大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开始讲一下面向对象的一点知识,请你们多多点评和讨论!!


1. 内存中开辟的空间是一定要回收的.
             
              2. 栈空间: 存储是局部变量.
                 当执行完1个作用域的时候. 定义在这个作用域中的局部变量就会被系统立即回收.
                 所以定义在1个作用域中的变量 不能在另外的1个作用域中访问.
             
                
              3. 堆空间: 用来存储对象
                 堆空间中的对象如果没有任何变量指向它的时候,这个对象就被标记为"垃圾对象",等待垃圾回收器(GC)的回收.
                 GC回收的频率是由CLR自行决定的,程序员无法手动干预.
    
              4. GC类
                 GC.Collect(). 强制的让GC来回收堆内存中的垃圾对象

             Person p1 = new Person();
p1.Name = "小明";
p1 = null;
GC.Collect();
//暂停程序的执行,直到将所有的垃圾对象回收完毕再继续 。
GC.WaitForPendingFinalizers();

5. 析构函数.
                 a. 语法
                    ~类名()
                    {
                   
                    }
                  不能有访问修饰符 不能带参数.
                 
                 b.执行时机:
                   在对象被GC回收的时候.  就会自动的执行对象的析构函数.

对象的生命周期
                 a.  在对象创建的时候 执行对象的构造函数.
                 b.  在对象的回收的时候,执行对象的析构函数.
             
             
                 c.析构函数.
                   特点: 在对象被GC回收之前 自动的执行.
                         "善后工作" 可以放在析构函数中.


1. 静态成员
             被static修饰的成员,叫做静态成员.
             实例成员:
             没有被static修饰的成员就叫做实例成员.

     class Person
{
static Person()
{
Console.WriteLine("我是静态构造函数,你咋的?");
} public static string name="jack";
public static int age; public double weight; public static void TestStatic()
{
Person p = new Person();
p.weight = ;
Console.WriteLine("hello.");
}

2. 静态成员属于类的. 通过类名直接访问.
             实例成员属于对象的. 通过对象名去访问实例成员.

 public void SayHi()
{
Person.name = "jack";
}
public Person()
{
age++;
//Person.name = "rose";
}

3. 在根据类的模板创建对象的时候,只会去创建实例成员在对象中.
             会忽略掉静态成员, 静态成员不创建在对象中.
            
         
          4. 接下来要解决的问题.
             a. 静态成员什么时候被创建.
             b. 创建在什么地方?
             c. 创建多少个?
             d. 什么时候被回收?
            
             关于实例成员.
             a. 在创建对象的时候,实例成员跟随着对象一起创建在堆中.
             b. 跟着对象一起创建在堆空间中
             c. 有多少个对象实例成员就有多少份.
             d. 对象被回收,这个对象中的实例成员就跟随着一起回收.
         
             静态成员:
             a. 当类第一次被访问的时候,就会将这个类下面的所有的静态成员创建在内存中.
             b. 创建在静态存储区.
             c. 静态成员只创建1次,在类第一次被访问的时候创建.
             d. 静态成员一旦被创建在静态存储区,那么就不会被回收,直到程序结束.
            
          5. 静态成员的特点:
             a. 只有1份.
                变量唯一,无论在什么地方访问都是访问的同1个变量.
             b. 一旦创建在静态存储区,就不会被回收,直到程序结束.
         
         
          6. 什么时候需要把成员定义为静态成员.
             如果1个变量需要被所有的类或者对象共享.
             如果1个方法需要被反复的调用 那么我们就可以把这个方法定义为静态方法.
            
             相反:如果把不该定义为静态成员的定义为了静态成员 反而会浪费空间 影响性能.
         
         
         
          7. 在静态方法中不能直接去访问实例成员.
             因为当静态方法执行的时候,实例成员完全有可能还没有存在,
             如果一定要访问 那么我那么就创建1个对象 让实例成员存在 然后访问这个对象的实例成员就可以了.
            
             this关键字不能在静态方法中使用.
             因为静态方法不存在对象中,那么自然也就代表了对象了.
            
             静态成员总是优先于对象而存在的,
            
             实例方法中可以直接访问静态成员,因为当实例方法执行的时候 静态成员肯定一定必定存在了
         
          8. 局部变量不允许被static修饰.
             因为局部变量要求作用域1完就回收 而static要求不回收.
         
          8. 静态类
             a. 类如果被static修饰,那么这个类就叫做静态类.
             b. 静态类中的所有成员要求都是静态成员.
             c. 静态类不能创建对象. 以为没有实例成员,就算可以创建对象也没有任何的实际意义.
             e. 静态类不能有构造函数,
         
          9.静态构造函数
             a. 任何类都可以有静态构造函数.
             b. 语法
                static 类名()
                {
                  
                }
                静态构造函数不能有访问修饰符 不能有参数.

         static Person()
{
Console.WriteLine("我是静态构造函数,你咋的?");
}

c. 静态构造函数不能被手动调用.是自动调用的,
                类的成员第1次被访问的时候,自动执行.
                静态构造函数只执行1次,在类的成员第1次被访问的时候自动执行.

面向对象(基础oop)之垃圾回收与静态成员的更多相关文章

  1. Java基础教程:垃圾回收

    Java基础教程:垃圾回收 垃圾回收 垃圾回收(Garbage Collection,GC),顾名思义是释放垃圾占用的空间,防止内存泄漏.有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使 ...

  2. .net学习之类与对象、new关键字、构造函数、常量和只读变量、枚举、结构、垃圾回收、静态成员、静态类等

    1.类与对象的关系类是对一类事务的统称,是抽象的,不能拿来直接使用,比如汽车,没有具体指哪一辆汽车对象是一个具体存在的,看的见,摸得着的,可以拿来直接使用,比如我家的那辆刚刚买的新汽车,就是具体的对象 ...

  3. Java基础:JVM垃圾回收算法

    众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...

  4. Java基础-gs(垃圾回收)

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 ...

  5. java基础学习之垃圾回收机制

    回收过程: 1.发现无用的对象 2.回收无用对象占用的内存的空间. 垃圾回收相关算法: 1.引用计数法 堆中每个对象都有一个引用计数.被引用一次,计数加一.被引用变量值变为null,则计数减一. 到计 ...

  6. 【JVM基础】JVM垃圾回收机制算法

  7. Java垃圾回收介绍(译)

    在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...

  8. java 笔记(1)-—— JVM基础,内存数据,内存释放,垃圾回收,即时编译技术JIT,高精度类型

    1.java中5个存放数据的地方: (1).寄存器(Registers):位于CPU内部,是速度最快的存储区,但是数量和容量有限.在java中不能直接操作寄存器. (2).栈(Stack):栈位于通用 ...

  9. JavaScript—面向对象开发详解和垃圾回收

    面向对象的概述 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP). 面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...

随机推荐

  1. Day 34 黏包

    一.什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 应用程序所看到的数据是一个整体,或说是一 ...

  2. 201621123018《Java程序设计》第4周学习报告

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 继承.多态.子类.父类.抽象类.abstract.super.object 1.2 尝试使用思维导图将这些关键词组织起来.注:思 ...

  3. Android---------------Service的学习

    一.创建与启动Servcie的三个步骤 : 1. 创建一个类并继承Servcie 2.在配置文件中注册服务 3.通过Intent来启动服务 二.Service的两种启动方式 1.startServce ...

  4. HTTP协议、HTTP协议原理分析

    百度百科中说明: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...

  5. “全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. 字符串(tjoi2016,heoi2016,bzoj4556)(sam(后缀自动机)+线段树合并+倍增+二分答案)

    佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了 一个长为\(n\)的字符串\(s\),和\(m\)个问题.佳媛姐姐必须正确回答这\(m\)个问题, ...

  7. oi之詩

    §3我看到你所说的那位OIer了. §2OIERNAME? §3是的.小心.他已达到了更高的境界.他能阅读我们的思想. §2没关系.他认为我们是代码的一部分. §3我喜欢这个OIer.他做得很好.他从 ...

  8. es6中箭头函数 注意点

    var aaabbb = 'kkkooo' setTimeout(()=>{ var aaaa = 'kkkk'; console.log(this) },1000); 因为据我了解,箭头函数指 ...

  9. Elasticsearch安装与环境配置

    Elasticsearch安装与环境配置 确保机器上已经安装了jdk7以上版本 下载:官网下载地址:https://www.elastic.co/downloads/elasticsearch 将下载 ...

  10. python处理自然语言:1、调用LTP的API,2、使用pyltp

    最近在学习处理自然语言处理,就发现LTP的(哈工大语言云),这个比我最先使用的jieba分词更好,词库更大,功能也更强大. 这里介绍两种方法:1.调用LTP的API,2.使用pyltp,这里的方法基于 ...