六、对象和内存分析

面向过程思想:
         面向过程通过过程组成编程,遇到事情,第一步,第二步。。。。,不需要协作,适合小规模的程序,比如开车。
面向对象思维
       面向对象通过对象组成编程,比如造车,第一步,第二步。。。。,无法确定,需要大规模的协作,有设计者的思维,拆分成一个个个体,造轮胎的厂家、发动机的厂家、车壳、座椅 、挡风玻璃等等。当然,分成这些块以后,就是一个个的过程去实现。

综上:遇到复杂问题,用面向对象思考,找名词,确定各个名词的关系;面向过程思考,找动词,在面向对象设计好了以后,底层还是过程,执行者的思维。面对不同的问题,采取不同的思维。

对象的进化

数据在不断的进化中,出现了对象这个概念;将一类数据放在一起和处理这些数据的方法 ,统称为对象。

类:
 内存分析:

类是对象的模型。通过定义的对象调用类,执行了两个方法,一个是new一个对象,这个对象有自己的地址,另外一个是构造方法,对于创建的对象进行初始化,根据类名找到类的地址,将对象的地址传递到类名中,所有类中的数据方法,构造成了此对象。通过引用传递给变量名。则变量名就有了这个对象的地址,通过变量名,找到这个对象,找到对象的方法和数据。例如:c=Student("djw",124)

原文地址:https://www.cnblogs.com/dangjingwei/p/12238347.html

时间: 2024-11-05 23:26:43

六、对象和内存分析的相关文章

ios开发:OC对象的内存分析

最近要开始准备找实习单位了,做做笔试题,看看各位大神的面试经历,发现自己要学习的东西真的还有很多,虽然也做过几个的项目,但是真正拿过笔试题一看,才发现自己对基础这方面的东西,确实有点忽视了,所以最近开启恶补模式. 这几天在研究ios内存分析这一块,才发现自己原来忽视了这么多重要的东西,在这里和大家分享一下. 先来看一段代码: NSString* s;s = [[NSString alloc] initWithString:@"hello ios"]; 这是一段最简单的字符串定义,但是看

new Java对象占用内存分析

最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好:http://yueyemaitian.iteye.com/blog/2033046,里面提供的这个类也非常实用: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

黑马程序员 05-OC对象的内存分析

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 首先,完整的代码如下: 1 //1.类的声明 2 #import <Foundation/Foundation.h> 3 @interface Person : NSObject 4 { 5 @public 6 int _age;//年龄 7 double _weight;//体重 8 } 9 - (void)run;//跑 10 - (void)eat;//吃 11 @end 12 13 14 //2.

Java面向对象_对象内存分析—值传递和引用传递

对象内存分析,我一直学的比较模糊,今天抽空整理一下,希望能理清. 先说一下,内存分析从何而来,这对于我们这些刚接触java的人来说都比较模糊,就从new关键字说起吧. new关键字表示创建一个对象或者说是实例化对象或者说是申请内存空间,所有程序运行都需要内存来存储数据,这样内存的概念就出来了.举个例子说明:定义一个类Person,属性:char a;int sge;那么创建一个对象申请的内存空间就是所有属性所占字节之和,为6个字节. 详细理一下对象在内存中的结构: Person p=new Pe

源码分析:Java对象的内存分配

Java对象的分配,根据其过程,将其分为快速分配和慢速分配两种形式,其中快速分配使用无锁的指针碰撞技术在新生代的Eden区上进行分配,而慢速分配根据堆的实现方式.GC的实现方式.代的实现方式不同而具有不同的分配调用层次. 下面就以bytecodeInterpreter解释器对于new指令的解释出发,分析实例对象的内存分配过程: 一.快速分配 1.实例的创建首先需要知道该类型是否被加载和正确解析,根据字节码所指定的CONSTANT_Class_info常量池索引,获取对象的类型信息并调用is_un

Java之内存分析和String对象

http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中). 堆(heap):存放所有new出来的对象. 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本类型常量(float.int等).另外

多个对象的内存管理分析

// //  main.m //  03-多个对象的内存管理分析 // //  Created by apple on 14-3-17. // // #import <Foundation/Foundation.h> //人拥有一辆汽车 #import "Person.h" //1.野指针问题 //2.内存泄漏问题 int main(int argc, const char * argv[]) { @autoreleasepool { // 1 Person * p = [

对象的简单内存分析

在如今学习的过程中,我们更多的是在练习如何使用各种方法或某种套路,例如需要设计某个app的时候,我们可能会说我们之前设计过的模型中直接套过来使用,或者在网上需找类似的demo,随着时间和经验的积累,我们在这一方面越来越得心应手,以后一直是copy.copy等,但对一些简单的本质东西不甚了解了,虽然这些东西也可以不必去知道,但我认为多了解一些基本的东西还是有好处的,下面就来简单的说一些对象的内存的问题: 1.我们先来创建一个Person类: #import <Foundation/Foundati

『Python』内存分析_List对象内存占用分析

『Python』内存分析_下_list和array的内存增长模式 list声明后结构大体分为3部分,变量名称--list对象(结构性数据+指针数组)--list内容,其中id表示的是list对象的位置, v引用变量名称,v[:]引用list对象,此规则对python其他序列结构也成立,以下示范可用id佐证, a=b时,a和b指向同一个list对象 a=b[:]时,a的list对象和b的list对象指向同一个list内容 Q1:元素存储地址是否连续 首先见得的测试一下list对象存储的内容(结构3