• 关于“结构”好别扭的一段话


    类和结构的相似之处有很多-结构可以实现接口,并且可以有同类一样的成员。结构和类在很多重要的方面也不相同,无论如何:结构是数值类型而不是引用类型,而且结构不支持继承。结构的数值或是存储“在堆栈中”或是“在线”。仔细的程序员可以通过明智地使用结构来提高性能。
    例如,对Point使用结构而不是类,会在成员的存储位置上造成很大不同。下面的程序创建并初始化了一个100个单元的数组。如果Point用类实现,程序就会占用101个分立对象,一个分给数组另外100个分给每个元素。
    class Point
    {
      public int x, y;
      public Point(int x, int y)
      {
        this.x = x;
        this.y = y;
      }
    }
    class Test
    {
      static void Main()
      {
        Point[] points = new Point[100];
        for (int i = 0; i < 100; i++)
          points[i] = new Point(i, i*i);
      }
    }
    如果Point用结构来代替,
    struct Point
    {
      public int x, y;
      public Point(int x, int y)
      {
        this.x = x;
        this.y = y;
      }
    }
    这样测试程序只会占用一个对象,代表的数组。Point实例在数组内在线分配。这种优化可能会被错误使用。由于当作为数值参数传输一个结构实例时会造成要创建结构,因此用结构替代类也许会使程序变得缓慢和庞大。小心的数据结构和算法设计是无可替代的。

    好费解的一段话。理解后,大概的意思是:结构与类有区别也有相似,建立数组时结构的性能还是比类好的,但如果做为参数传递时,结构的性能没有类好。
  • 相关阅读:
    [跟我学spring学习笔记][更多DI知识]
    [跟我学spring][Bean的作用域]
    [跟我学spring学习笔记][DI循环依赖]
    [跟我学spring学习笔记][IoC]
    [跟我学Spring学习笔记][DI配置与使用]
    [Spring入门学习笔记][静态资源]
    [Spring入门学习笔记][Spring的AOP原理]
    介绍map.entry接口
    hashmap的遍历方法
    java中的队列
  • 原文地址:https://www.cnblogs.com/yzx99/p/1238158.html
Copyright © 2020-2023  润新知