zoukankan      html  css  js  c++  java
  • 9_1:概念:简单数据类型 + 复杂数据类型

    知识梳理

    简单类型与复杂类型
    堆和栈
    简单类型的内存分配
    复杂类型的内存分配
    简单类型传参
    复杂类型传参

    一 数据类型分类

    1)基本概念

    //1 简单数据类型:也称 值类型 又称 基本数据类型
    string number Boolean undefined null
    null 返回的是对象比较特殊
    //2 复杂数据类型:也称 引用类型
    在存储变量时存储的仅仅是地址(引用),因此叫做引用数据类型
    通过new关键字创建的对象(系统对象 自定义对象)如 Object Array Date等

    2)两者区别

    //基本类型
    1. 基本类型变量存放在栈内存里(Stack)
    2. 基本类型的值是按值访问的
    3. 基本类型的值是不可变的
    4. 基本类型的比较是指的比较
    
    //引用类型
    1. 引用类型的值 存放在堆内存(Heap)中的对象(Object)里
    2. 引用类型的值是按引用访问的
    3. 引用类型的值是可变的
    4. 引用类型的比较是引用的比较

    二 两者的内存分配机制

    //1 值类型:存放在栈里面,直接开辟空间存放变量的值
    
    //2 引用类型:首先在栈里面存放索引地址,让后这个地址指向堆里面的数据

    三 两者的参数传递

    1)简单类型传参

    function fun(a){
        a++;
        console.log(a);
    }
    var x = 10;
    fun(x);//输出11
    console.log(x);//输出10
    
    简单类型:把自己的值 复制一份给了形参
    在函数内部修改形参变量 不影响原来的变量本身

    2) 复杂类型传参

    function Person(name) {
        this.name = name;
    }
    function f1(x) { //x = p
        console.log(x.name + '2');//刘德华
        x.name = '张学友';
        console.log(x.name + '3');//输出张学友
    }
    var p = new Person('刘德华');
    console.log(p.name + '1');//输出:刘德华
    f1(p);
    console.log(p.name + '4');//输出:张学友
    
    把变量在栈空间里的堆地址 复制给了形参
    形参和实参起其实保存的是同一个堆地址,操作的是同一个对象
    = PHP中的引用传参

    f1(p);   x = p ( 他们最后都指向了堆里面的数据 )

    堆和栈的概念 

    内存空间里面分为两种 栈内存空间 和 堆内存空间
  • 相关阅读:
    Spring IoC容器实现
    Spring IoC简介及使用
    tomcat使用及原理
    tomcat的连接数与线程池
    tomcat配置文件server.xml
    java源码之Comparable和Comparator
    java源码之TreeSet
    25 二叉搜索树与双向链表
    24 复杂链表的复制
    条款04:确定对象被使用前已被初始化
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14420041.html
Copyright © 2011-2022 走看看