美文网首页软件必备模块
软件必备模块-变量,对象类,数据结构

软件必备模块-变量,对象类,数据结构

作者: 于桓 | 来源:发表于2018-01-01 13:36 被阅读6次

为什么写这篇?

我想设计一个安卓,iOS或者Web应用的时候,开始做软件的时候一般都会找一个趁手的工具,一般是一门语言,java, objective-c,swift,c#等等。但是这些语言也是有共通的地方的。
很有可能会很想做一个东西,却必须新学一门语言。这篇可能有些纰漏,后面会继续修改。但是这篇是一个雏形。新学一个语言先理解它的变量。

变量

一般想学一个语言,先学变量,变量一般分为两种,值类型和引用类型。Java,C#,Objective-C,python。都有这些东西。入手一个语言先熟悉,这门语言的两种变量,值变量,引用变量。

值类型

值类型是地址里面直接存一个值。这些类型传递的是值和传递地址的类型有很多不同的特性。值类型分配在栈上。装箱的值类型会分配在堆上。值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放。
byte
short
int
long
long long

char

double
float

boolean
。。。。。。。

引用类型

一般想学一个语言,一般都会有一类引用类型。引用类型包括:数组,用户定义的类、接口、委托,object,字符串,null类型,类。引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被垃圾回收机制释放。

引用类型-结构类型

结构类型,主要是用来组织变量。用来实现常见的数据结构。栈,队列,二叉树,图。。。。等等。
字符串
集合
列表
字典

可变类型
时常我们会遇到一个概念是可变的类型和不可变的类型,这个可变与不可变是对地址来说的。对于不可变的字符串不管多少个拷贝,我们都将引用指向同一个地方就可以,这个问题实际就是编程中写出来的一些bug的源头。

拷贝
深拷贝,浅拷贝,对于可变和不可变类型的意义是不一样的。实际本质是我们是用一个地址指向了同一个地址,还是从新分配了一片内存,重新将值赋给新分配的内存。

引用类型-过程类型

过程类型主要用来调用或者封装调用,将对变量的各种操作封装成函数,函数多了不便于组织将很多函数可以封装成类,类可以单继承,多继承,有类方法,实例方法。需要组织多个类就出现了包,一个包不想让别人知道实现细节变出现了库。函数时常被我们理解成一个调用过程,实际它也存在一个地址只,异步回调的是函数,调用的是函数的地址,函数的指针。接口,委托,函数,类中的函数都可以理解为函数,函数指针。接口和代理是实现函数指针的抽象,类是将函数指针和变量做为一个整体。写程序时常是调用系统的包,类,函数,其实都是这样一个过程,我们要在会用的同时知道原理。
函数
学各种语言写hello world都会调用函数。

接口
委托

值类型和引用类型的区别

这个总结很常见也很实用,面试百分之90中奖。

值类型

存储方式:存储值
内存分配:分配在栈上
内存回收:用完回收
效率:效率高
转换:装箱才能变成引用类型

引用类型

存储方式:存储地址
内存分配:分配在堆上
内存回收:手动回收和垃圾回收
效率:效率低
转换:引用类型需要拆箱才能变成值类型

内存-作用域-生命周期-垃圾回收

内存

这篇讲的是变量,所有变量怎么跑也跑不出内存。一旦有不理解的问题请向内存追寻。这就是大学学操作系统的原因。内存是怎么分配的就是问题的源泉。

作用域

最近写代码犯过一个教科书式的错误,#define的变量为什么不生效,#define变量的作用域只是当前文件。注意变量的作用域。

垃圾回收

强引用,弱引用,引用环。垃圾回收时机,垃圾回收的方式。也是学习一个语言时要想明白的问题。

相关文章

  • 软件必备模块-变量,对象类,数据结构

    为什么写这篇? 我想设计一个安卓,iOS或者Web应用的时候,开始做软件的时候一般都会找一个趁手的工具,一般是一门...

  • 边用边学Python 内置(built-in)对象

    在 Python 中,一切皆对象,变量、函数、类、模块等都是对象 python内置函数、模块、类有很多,无论是初学...

  • python对象基础

    python对象:字符串对象、数字对象、列表、字典、函数、类、模块。 变量:可以是数字、字符串、算式,字母(大小写...

  • 模块化

    模块化概念: 实现特定功能的一组方法 原始“类模块”写法 缺点:污染了全局变量,模块成员之间没直接关系 对象“类模...

  • 数据结构概述1

    数据结构类别和优缺点: 对象:同时包括方法和变量。 类:针对一个或多个对象的说明(或蓝图)。类的声明并没有创建这个...

  • 006-面向对象,继承,方法重写,访问修饰符详解,final,多

    面向对象 对象 类 类和对象的关系 如何创建类 Student类 如何创建对象 测试类 成员变量和局部变量 测试 ...

  • Effective OC 第14条:理解"类对象"的用意

    类对象 OC对象所用的数据结构定义: Class 本身也是一个对象. 数据结构: 元类:用来表述类对象本身所具备的...

  • Dart --类

    类概述 普通类变量实例变量(创建对象后,使用 对象.变量名 调用)静态变量(用static修饰,使用 类...

  • [笔记] Python 核心笔记 第四章

    一切都是对象,Python使用对象模型来存储数据。包括变量,函数,类,模块等等 所有的python对象都有三个特性...

  • 文本处理--string模块

    模块描述 简要接口文档 模块全局变量 模块函数 模块类

网友评论

    本文标题:软件必备模块-变量,对象类,数据结构

    本文链接:https://www.haomeiwen.com/subject/zhqagxtx.html