精华内容
下载资源
问答
  • js基本类型与引用类型

    千次阅读 多人点赞 2018-06-15 11:21:22
    1.基本类型:Underfined ,...而对象,以及装箱的数据放在堆中栈内存中存放地址指向堆内存中的对象基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象基本类型在内存中分别占有固...

    1.基本类型:Underfined ,Null, Boolean,Number,String

    2.引用类型: Object,Array,Date,Function

    首先了解一个概念:栈内存与堆内存---这是两种不同的内存分配方法

    一般代码逻辑,简单变量,结构体都是放在栈中;而对象,以及被装箱的数据放在堆中


    栈内存中存放地址指向堆内存中的对象

    基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象

    基本类型在内存中分别占有固定大小的空间,他们的值保存在栈空间中,我们通过按值访问

    引用类型:值的大小不固定,栈内存中存放地址指向堆内存中的对象,是按引用访问的。栈内存中存放的只是该对象的访问地址

    3.在堆内存中为这个值分配空间。由于这种值的大小不固定,因此不能把他们保存在栈内存中。但内存地址大小是固定的,因此可以将内存地址保存在栈内存中。这样,当查询引用类型的变量时,先从栈中读取内存地址,然后再通过地址找到堆中的值。对于这种,我们把它叫做按引用访问。

    当我们看到一个变量类型是已知的,就分配在栈里面,比如INT,Double等,其它未知的类型,比如自定义类型,因为系统不知道需要多大,所以程序自己申请,这样就分配在堆里面。基本类型大小固定,引用类型大小不固定,分开存放使得程序运行占有内存最小。

    4.基本类型在当前执行环境结束时销毁,而引用类型不会随执行环境结束而销毁,只有当所有引用它的变量不存在是这个对象才被垃圾回收机制回收。


    基本类型有一下几个特点:

    1.基本类型的值是不可变的

    任何方法都无法改变一个基本类型的值,比如一个字符串:


    var name  = 'hello';
    
    name.toUpperCase();  //输出HELLO
    
    console.log(name);   //输出 hello

    会发现原始的name并未发生改变,而是调用了toUpperCase()方法后返回的是一个新的字符串

    再来个例子:

    var person = 'Mary';
    
    person.age = 22;
    
    person.method = function(){};
    
    console.log(person.age); //underfined
    
    console.log(person.method);//underfined

    通过上面代码可知,我们不能给基本类型添加属性与方法,再次说明基本类型是不可变的


    2.基本类型的比较是值的比较

    只有他们的值相等的时候他们才相等

    var a =1;
    
    var b = true;
    
    console.log(a==b);  //true

    有这个疑问,这就得了解一下类型转换和 == 运算符的知识了,也就是说在用==比较两个不同类型的变量是会进行一些类型转换,像上面的比较先会把true转换为1,再和数字1笔记,结果就是true了。这是当比较两个值的类型不同的时候的时候==运算符会进行类型转换,但是当两个值的类型相同的时候,即使是 == 也相当于 ===。

    3.基本类型的变量是存放在栈区的(栈区指内存里的栈内存)


    引用类型:除了基本类型就是引用类型,也就是说对象。对象是属性与方法的集合

    也就是说引用类型可以拥有属性与方法,属性又可以包含基本类型与引用类型。来看看引用类型的一些基本特性:

    1.引用类型的值是可变的

    我们可以为引用类型添加属性与方法,也可以删除其属性与方法。如:

    var person = {}; //创建一个对象 ---引用类型
    
    person.name = 'Mary';
    
    person.age = 22;
    
    person.sayName = function() {console.log(person.name);}
    
    person.sayName(); //'Mary'
    
    delete person.name;  //删除person对象的name属性
    
    person.sayName();  //underfined
    
    

    上面代码说明来引用类型可以拥有方法与属性,并且可以动态改变


    2.引用类型的值是同时保存在栈内存和堆内存中的对象

        js与其它语言不同,其不允许直接访问内存中的地址,也就是说不能直接操作对象的内存空间,那我们操作啥呢实际上,是操作对象的引用,所以引用类型的值是按引用访问的。

    准确的说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也就是说该对象在堆内存的地址。

    假如有以下几个对象:

    这三个对象在内存中保存的情况如下图:

    var person1 = {name: 'Mary'};
    var person2 = {name: 'xioaming'};
    var person3 = {name: 'xiaohua'};
    


    3.引用类型的比较是引用的比较

     

    var person1 = '{}';
    var person2 = '{}';
    console.log(person1 == person2);  //true

    上面讲基本类型的比较的时候提出里当两个比较值的类型相同的时候,相当于用 === ,所以输出是true;

    这里比较的是两个对象,为啥就不相等了呢:

    var person1 = {};
    var person2 = {};
    console.log(person1 ==person2);  //false
    
    

    ⚠️别忘了,引用类型是按引用访问的,换句话说,就是比较两个对象的堆内存的地址是否相同,那很明显,person1 和 person2在堆内存中地址是不同的


    所以这两个是完全不同的对象,所以返回false;


    3.简单赋值

    从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上:

    var a =10;
    var b =a;
    a ++;
    console.log(a); //11
    console.log(b); //10
    
    

    此时,a中保存的值为10,当使用a来初始化b时,b中保存的值也为10,但b中的10与a中的是安全独立的,该值只是a中的值的一个副本,此后,这两个变量可以参加任何操作而相互不受影响。


    也就是说,基本类型在赋值操作后,两个变量是相互不受影响的。

    4.对象引用

    从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到新变量分配的空间中,前面讲引用类型的时候提到过,

    保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象,那么赋值操作后,两个变量都保存了同一个对象地址,则两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响:

    var a ={};
    var b = a;
    a.name = 'Mary';
    console.log(a.name); //'Mary'
    console.log(b.name);//'Mary'
    
    b.age = 22;
    console.log(b.age); //22
    console.log(a.age); //22
    console,.log(a==b);  //true

    引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何操作都会相互影响。

    展开全文
  • 首先了解一个概念:栈内存堆内存—这是两种不同的内存分配方法 一般代码逻辑,简单变量,结构体都是放在栈中;而对象,以及装箱的数据放在堆中 栈内存中存放地址指向堆内存中的对象 基本类型就是保存在栈内存中...

    1.基本类型:Underfined ,Null, Boolean,Number,String

    2.引用类型: Object,Array,Date,Function

    首先了解一个概念:栈内存与堆内存—这是两种不同的内存分配方法

    一般代码逻辑,简单变量,结构体都是放在栈中;而对象,以及被装箱的数据放在堆中

    栈内存中存放地址指向堆内存中的对象

    基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象

    基本类型在内存中分别占有固定大小的空间,他们的值保存在栈空间中,我们通过按值访问

    引用类型:值的大小不固定,栈内存中存放地址指向堆内存中的对象,是按引用访问的。栈内存中存放的只是该对象的访问地址

    3.在堆内存中为这个值分配空间。由于这种值的大小不固定,因此不能把他们保存在栈内存中。但内存地址大小是固定的,因此可以将内存地址保存在栈内存中。这样,当查询引用类型的变量时,先从栈中读取内存地址,然后再通过地址找到堆中的值。对于这种,我们把它叫做按引用访问。

    当我们看到一个变量类型是已知的,就分配在栈里面,比如INT,Double等,其它未知的类型,比如自定义类型,因为系统不知道需要多大,所以程序自己申请,这样就分配在堆里面。基本类型大小固定,引用类型大小不固定,分开存放使得程序运行占有内存最小。

    4.基本类型在当前执行环境结束时销毁,而引用类型不会随执行环境结束而销毁,只有当所有引用它的变量不存在是这个对象才被垃圾回收机制回收。

    基本类型有一下几个特点:

    1.基本类型的值是不可变的

    任何方法都无法改变一个基本类型的值,比如一个字符串:

    var name  = 'hello';
     
    name.toUpperCase();  //输出HELLO
     
    console.log(name);   //输出 hello
    

    会发现原始的name并未发生改变,而是调用了toUpperCase()方法后返回的是一个新的字符串

    再来个例子:

    var person = 'Mary';
     
    person.age = 22;
     
    person.method = function(){};
     
    console.log(person.age); //underfined
     
    console.log(person.method);//underfined
    

    通过上面代码可知,我们不能给基本类型添加属性与方法,再次说明基本类型是不可变的

    2.基本类型的比较是值的比较

    只有他们的值相等的时候他们才相等

    var a =1;
     
    var b = true;
     
    console.log(a==b);  //true
    
    有这个疑问,这就得了解一下类型转换和 == 运算符的知识了,也就是说在用==比较两个不同类型的变量是会进行一些类型转换,像上面的比较先会把true转换为1,再和数字1笔记,结果就是true了。这是当比较两个值的类型不同的时候的时候==运算符会进行类型转换,但是当两个值的类型相同的时候,即使是 == 也相当于 ===。
    

    3.基本类型的变量是存放在栈区的(栈区指内存里的栈内存)

    引用类型:除了基本类型就是引用类型,也就是说对象。对象是属性与方法的集合

    也就是说引用类型可以拥有属性与方法,属性又可以包含基本类型与引用类型。来看看引用类型的一些基本特性:

    1.引用类型的值是可变的

    我们可以为引用类型添加属性与方法,也可以删除其属性与方法。如:

    var person = {}; //创建一个对象 ---引用类型
     
    person.name = 'Mary';
     
    person.age = 22;
     
    person.sayName = function() {console.log(person.name);}
     
    person.sayName(); //'Mary'
     
    delete person.name;  //删除person对象的name属性
     
    person.sayName();  //underfined
    

    上面代码说明来引用类型可以拥有方法与属性,并且可以动态改变

    2.引用类型的值是同时保存在栈内存和堆内存中的对象

    js与其它语言不同,其不允许直接访问内存中的地址,也就是说不能直接操作对象的内存空间,那我们操作啥呢实际上,是操作对象的引用,所以引用类型的值是按引用访问的。

    准确的说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也就是说该对象在堆内存的地址。

    假如有以下几个对象:

    这三个对象在内存中保存的情况如下图:

    var person1 = {name: 'Mary'};
    var person2 = {name: 'xioaming'};
    var person3 = {name: 'xiaohua'};
    

    在这里插入图片描述
    3.引用类型的比较是引用的比较

    var person1 = '{}';
    var person2 = '{}';
    console.log(person1 == person2);  //true
    

    上面讲基本类型的比较的时候提出里当两个比较值的类型相同的时候,相当于用 === ,所以输出是true;

    这里比较的是两个对象,为啥就不相等了呢:

    var person1 = {};
    var person2 = {};
    console.log(person1 ==person2);  //false
    

    ⚠️别忘了,引用类型是按引用访问的,换句话说,就是比较两个对象的堆内存的地址是否相同,那很明显,person1 和 person2在堆内存中地址是不同的

    在这里插入图片描述
    所以这两个是完全不同的对象,所以返回false;

    3.简单赋值

    从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上:

    var a =10;
    var b =a;
    a ++;
    console.log(a); //11
    console.log(b); //10
    

    此时,a中保存的值为10,当使用a来初始化b时,b中保存的值也为10,但b中的10与a中的是安全独立的,该值只是a中的值的一个副本,此后,这两个变量可以参加任何操作而相互不受影响。

    也就是说,基本类型在赋值操作后,两个变量是相互不受影响的。

    4.对象引用

    从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到新变量分配的空间中,前面讲引用类型的时候提到过,

    保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象,那么赋值操作后,两个变量都保存了同一个对象地址,则两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响:

    
    var a ={};
    var b = a;
    a.name = 'Mary';
    console.log(a.name); //'Mary'
    console.log(b.name);//'Mary'
     
    b.age = 22;
    console.log(b.age); //22
    console.log(a.age); //22
    console,.log(a==b);  //true
    

    在这里插入图片描述

    展开全文
  • 引用和指针的区别

    2015-07-28 21:13:22
    不同点:引用在初始化后不能再重新声明为另一变量的别名,而指针变量可执行任意地址空间; 引用只是数据的一种联系,自身不占有内存空间,指针在不同操作系统及编译环境下占有不同内存空间 Example: 引用版:...

    相同点:都指向同一内存空间

    不同点:1、引用在初始化后不能再被重新声明为另一变量的别名,而指针变量可执行任意地址空间;[引用初始化不可变,而指针可变]

    2、引用只是与数据的一种联系,自身不占有内存空间,指针在不同操作系统及编译环境下占有不同内存空间

                    3、指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算,而引用只能进行赋值运算

     附:java的方法参数只能传值,引用做参数使用时,返回


    Example:

    引用版:void f(&a)

                   {

    a=&b;//企图使a改变成b的别名,错误

    }

                    f(c);

    指针版:void f(*a)

                   {

    a=&b;

    }

                    f(&c);

    附:c++引用和java引用有所区别,而java引用类似与c++指针,php引用类似与c++引用

    java引用版:void f(A a)

                         {

     a=A(3);

         }

                         f(c);

    展开全文
  • 当一个对象在堆内存中运行时,根据它被引用变量所引用的状态,可以把它所处的状态分为如下三种。 可达状态:当一个对象被创建之后,若有一个以上的引用变量引用它,则这个对象在程序中处于可达状态,程序可以通过...

    对象在内存中的状态

    当一个对象在堆内存中运行时,根据它被引用变量所引用的状态,可以把它所处的状态分为如下三种。

    • 可达状态:当一个对象被创建之后,若有一个以上的引用变量引用它,则这个对象在程序中处于可达状态,程序可以通过引用变量来调用该对象的实例变量和方法。
    • 可恢复状态:如果程序中某个对象不再有任何引用变量引用它,他就进入可恢复状态。在这种状态下,系统的垃圾回收机制准备回收该对象所占有的内存,在回收该对象之前,系统会调用所有可恢复状态和对象的finalize()方法进行资源清理。如果系统再调用finalize()方法时重新让一个引用变量引用该对象,则这个对象会再次为可达状态;否则该对象进入不可达状态。
    • 不可达状态:当对象与所有引用变量的关联都被切断,且系统已经调用所有对象的finalize()方法后依然没有使该对象变成可达状态,那么这个对象将永久性的失去引用,最后变成不可达状态,只有当一个对象处于不可达状态时,系统才会真正的回收该对象所占有的资源。 

     finalize方法

    在垃圾回收机制回收某个对象所占用的内存之前,通常要求程序调用适当的方法来清理资源,在没有明确指定清理资源的情况下,java提供了默认机制来清理该对象的资源,这个机制就是finalize()方法。

    finalize()方法具有以下四个特点

    • 永远不要主动调用某个对象的finalize()方法,该方法应该交给垃圾回收机制调用。
    • finalize()方法何时被调用,是否被调用具有不确定性,不要把finalize()方法当成一定会被执行的方法。
    • 当JVM执行可恢复对象的finalize()方法时,可能使该对象或系统中其他对象重新变成可达状态。
    • 当JVM执行finalize()方法时出现异常时,垃圾回收机制不会报告异常,程序继续执行。

     强制垃圾回收

     当一个对象失去引用后,系统何时调用它的finalize()方法对它进行资源清理,何时他会变成不可达状态,系统何时回收它所占有的内存,对于程序完全是透明。因此程序无法精确控制java垃圾回收的时机,但依然可以强制系统进行垃圾回收-----这种的强制只是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不确定。大部分时候,程序强制系统垃圾回收后总会有一些效果。强制系统垃圾回收有如下两个方式。

    • 调用System类的gc()静态方法:System.gc()。
    • 调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc()。

    对象的软、弱和虚引用

    对于大部分对象而言,程序里会有一个引用变量引用该对象,这是最常见的引用方式。初次之外,java.lang.ref包下提供了3个类:SoftReference、PhantomReference和WeakReference,他们代表了系统对象的3种引用方式:软引用、虚引用和弱引用。因此java语言对对象的引用有如下4种方式。

    1. 强引用(StrongReference) :这是java程序中最常见的引用方式。程序创建一个对象,并把这个对赋给一个引用变量,程序通过该引用变量来操作实际的对象,前面介绍的对象和数组都是采用了这种强引用的方式。当一个对象被一个或一个以上的引用变量所引用时,它处于可达状态,不可以被系统的垃圾回收机制回收。
    2. 软引用(SoftReference):软引用需要通过SoftReferece类实现,当一个对象只有软引用的时候,它有可能被垃圾回收机制回收。对于只有段引用的对象而言,当系统内存足够时,它不会被系统回收,程序也有可能使用该对象;当系统的内存不足时,系统可能会回收它。软引用通常用于对内存敏感的程序中。
    3. 弱引用(WeakReference):弱引用通过WeakReference类实现,弱引用和软引用很像,但弱引用的引用级别更低。对于只有弱引用的对象而言,当系统垃圾回收机制运行时,不管系统内存是是否够,总会回收该对象占用的内存。当然,并不是说当一个对象是弱引用时,他就会立即被回收------正如那些失去引用的对象一样,必须等到系统垃圾回收机制运行的时候才会被回收。
    4. 虚引用(PhantomReference):虚引用通过PhantomReference类实现,虚引用完全类似于没有引用。虚引用对对象本身没有太大的影响,对象甚至感觉不到虚引用的存在。如果一个对象只有一个虚引用的时候,那么它共和没有引用的效果大致相同。虚引用主要用于跟踪对象被垃圾回收的状态,虚引用不能单独使用,虚引用必须和引用队列(ReferenceQueue)联合使用。
    展开全文
  • 6.指针数组

    2018-05-26 11:36:00
    6. 指针数组数组名变量,它们有各自的内存空间,指针可以指向相同的常量区域数组的引用被转化为指针加偏移量的引用编译器为了简化对数组的支持,实际上是利用指针实现了对数组的支持。具体来说,就是将表达式中的...
  • synchronized可用来修饰需要加锁的变量引用,也可以用来修饰方法。内置锁拥有重入机制,即如果一个线程试图拥有一个已经由它自己获得的锁,那么再次请求获得锁可以成功。一种实现方法是JVM为每个内置锁设置一个...
  • 1.今天在项目中,又发现内存暴增的情况,后来,...所以要么定义为临时变量,要么你就要在合适的时机,将它置为null(这时,它就会在随后的垃圾回收机制中回收),或者你将它占有的内存量降低(在这里的话,你可以Dequeue
  • 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址,而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。...
  • 内存泄漏:应用/JVM使用资源之后没有及时释放,导致应用内存中持有了不需要的资源,这是一种状态描述。android中常见的常见有下面几种 Activity对象未回收 容器造成 ...因为静态变量存在JVM的方法...
  • Python虚拟机

    千次阅读 2019-05-23 00:55:14
    当一个常量的引用指数为0时,就是没有变量指向时,该常量占用的内存会回收。 2. id(变量名):查看内存地址 可以看出来nameuser指向同一个内存地址 3. del(变量名):删除一个变量 如果变量不在了,那么就会释放...
  • 经过跟踪变量值发现循环变量i的阀值pSysHead->dbf_count的数值为0xFFFFFFFF,该值是从破坏的内存数据库中获取的,正常情况下该值小于127。而pDBFat是数据库的起始地址,如果pSysHead->dbf_count值异常过大,将...
  • java性能优化(一)

    2019-06-29 10:47:04
    当某个对象定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如 publicclassA{ privatestaticBb=newB(); } 此时静态变量b的生命周期A类同步,如果A类不会卸载,那么b对象会常驻内存,...
  •   当某个对象定义为stataic变量引用,那么GC通常是不会回收这个对象所占有的内存,如: public class A{ static B b = new B(); }   此时静态变量b的生命周期A类同步,如果A类不会卸载,那么b对象会常驻...
  • 要知道,当某个对象定义为stataic变量引用,那么gc通常是不会回收这个对象所占有的内存,如 public class A{  static B b = new B(); } 此时静态变量b的生命周期A类同步,如果A类不会卸载,那么b对象会...
  • 要知道,当某个对象定义为stataic变量引用,那么gc通常是不会回收这个对象所占有的内存,如 [code="java"]public class A{ static B b = new B(); } [/code] 此时静态变量b的生命周期A类同步...
  • 某天的日志2

    2010-03-17 09:35:00
    this指向当前对象*this就是对象本身静态成员对象的实例无关,只类本身有关,你不能用this来引用它程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能访问。 类的静态成员(变量和方法)属于类本身,...
  • JVM 虚拟机堆和方法区 ​ 虚拟机堆和方法区都存在 JVM 的线程共享区,占有 JVM 内存中的很大一部分 虚拟机堆 ​ 堆(Haep),在 Java 中所有通过 new ...​ 垃圾回收机制是回收不再被引用、使用的变量,如果...
  • 2.尽量避免随意使用静态变量要知道,当某个对象定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如:此时静态变量b的生命周期A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止...
  • 函数

    千次阅读 2012-04-21 01:00:11
    在函数未调用时,函数的形参并不占有实际的内存空间,也没有实际的值。只有在函数调用时才为形参分配储存单元,并将是实参形参结合。 1、值调用 ... 引用调用是一种特殊类型的变量,可认为
  • 注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。 可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    04023引用被空白行和列包围的单元格区域 04024利用Offset属性动态引用某个单元格 04025利用Offset属性动态引用单元格区域 04026利用Resize属性引用变更为指定大小的单元格区域 04027引用不包括标题行的单元格区域 ...
  • 7、 const的用法,以及声明const变量与宏的区别? 答: const的用法有四种: a): const对象和const类型的对象; b): const指针 和 指向const的指针 及两者结合; c): const 参数修饰 和 参数返回类型的const修饰; ...
  • 实例011 仓库盒子的学问——数据类型与变量 26 实例012 数据类型之值类型的使用 27 实例013 数据类型之引用类型的使用 30 实例014 数据类型之浅复制:包含引用类型的值类型 31 实例015 按值传递引用类型 33 实例...
  • 实例011 仓库盒子的学问——数据类型与变量 26 实例012 数据类型之值类型的使用 27 实例013 数据类型之引用类型的使用 30 实例014 数据类型之浅复制:包含引用类型的值类型 31 实例015 按值传递引用类型 33 实例...
  • 实例011 仓库盒子的学问——数据类型与变量 26 实例012 数据类型之值类型的使用 27 实例013 数据类型之引用类型的使用 30 实例014 数据类型之浅复制:包含引用类型的值类型 31 实例015 按值传递引用类型 33 实例...
  • windows 程序设计

    2011-07-24 21:16:30
    尽管Macintosh的市场占有率在下降,但是它仍然认为是衡量所有其它图形环境的标准。包括Macintosh和Windows的所有图形环境,其实都要归功于Xerox Palo Alto Research Center(PARC)在70年代中期所作的开拓性研究...
  • 实例266 利用饼图分析不同编程语言的市场占有率 实例267 利用柱形图显示某Ajax网站不同框架的年下载量 实例268 利用折线图分析不同城市气温变化情况 实例269 利用区域图分析不同学生的成绩变化 实例270 利用时序图...
  • Java开发实战1200例.第2卷.part3

    热门讨论 2013-05-08 22:46:34
    占有率 429 实例267 利用柱形图显示某Ajax网站不同框架的 年下载量 431 实例268 利用折线图分析不同城市气温变化 情况 432 实例269 利用区域图分析不同学生的成绩变化 433 实例270 利用时序图分析股票价格走势 434 ...
  • Java开发实战1200例.第2卷.part2

    热门讨论 2013-05-08 22:45:35
    占有率 429 实例267 利用柱形图显示某Ajax网站不同框架的 年下载量 431 实例268 利用折线图分析不同城市气温变化 情况 432 实例269 利用区域图分析不同学生的成绩变化 433 实例270 利用时序图分析股票价格走势 434 ...
  • Java开发实战1200例.第2卷.part1

    热门讨论 2013-05-08 22:44:13
    占有率 429 实例267 利用柱形图显示某Ajax网站不同框架的 年下载量 431 实例268 利用折线图分析不同城市气温变化 情况 432 实例269 利用区域图分析不同学生的成绩变化 433 实例270 利用时序图分析股票价格走势 434 ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

引用变量与被引用变量占有