精华内容
下载资源
问答
  • 原始类型 原始类型变量直接包含着值 The Java programming language is a statically typed language, which means that every variable and every expression has a type that is known at compile time. 通俗...

    原始类型

    原始类型变量直接包含着值

    The Java programming language is a statically typed language, which means that every variable and every expression has a type that is known at compile time.

    通俗解释:

    If I gave you a $50 note(票据), then the note in and of itself is worth $50. The value is stored in the note itself.(如果我给你一张50美元的钞票,那么这张钞票本身就值50美元、价值存储在票据本身)

    Java is a statically-typed programming language(静态类型编程语言). It means, all variables must be declared before its use. That is why we need to declare variable’s type and name.
    在Java语言中,原始数据类型是数据操作的构建块。这些是Java语言中最基本的数据类型

    有8种基本数据类型:
    
    1. char
    2. byte
    3. int
    4. short
    5. long
    6. boolean
    7. float
    8. double

    引用类型

    引用类型没有直接包含值,引用类型是对对象的引用
    引用数据类型将包含变量值对象的内存地址,因为引用类型不是直接存储原始值,而是引用对象
    引用类型包含类,接口类型和数组类型,以及特殊的类型

    通俗解释:

    现在想像一下,不是给您50美元,而是给您一张纸,上面写着我在瑞士银行的保险箱的地址。
    我给您的那张纸本身并不值50美元,但它指向一个地址,您可以在其中获得50美元。
    这张纸基本上是“引用”类型的,因为它本身不存储任何值,而仅指向某些地址。 But I can give you an address to
    anything: planes飞机, castles城堡, rainforrests雨林: anything!任何东西

    总结:

    你不能只从你的口袋里给别人一架飞机或一辆新干线火车:你只要给他们一个地址。但如果你有50美元或任何类型的货币:实际的物质在你的后口袋里。你不会把藏宝图放在你的50美元纸币上。
    简而言之,这就是原始类型和引用类型之间的区别。

    展开全文
  • js基本数据类型: js基本数据类型包括:undefined,null...1. 基本数据类型的值是不可变的 任何方法都无法改变一个基本类型的值,比如一个字符串: var name = "change"; name.substr();//hang console.log(name...

    js基本数据类型:

    js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值

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

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

    var name = "change";
    name.substr();//hang
    console.log(name);//change
    
    var s = "hello";
    s.toUpperCase()//HELLO;
    console.log(s)//hello
    

    通过这两个例子,我们会发现原先定义的变量name的值始终没有发生改变,而调用substr()和toUpperCase()方法后返回的是一个新的字符串,跟原先定义的变量name并没有关系

    或许有人会有以下的疑问,看代码:

    var name = "change";
    name = "change1";
    console.log(name)//change1

    这样看起来name的值“改变了”
    其实,var name = "change",这里的基础类型是string,也就是"change",这里的"change"是不可以改变的,name只是指向"change"的一个指针,指针的指向可以改变,所以你可以name = "change1".此时name指向了"change1",同理,这里的"change1"同样不可以改变

    也就是说这里你认为的改变只是“指针的指向改变”

    这里的基础类型指的是"change",而不是name,要区分清楚

    2. 基本数据类型不可以添加属性和方法

    var p = "change";
    p.age = 29;
    p.method = function(){console.log(name)};
    console.log(p.age)//undefined
    console.log(p.method)//undefined
    

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

    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中的10是完全独立的.b中的值知识a中值的一个副本.所以这两个变量可以参与任何操作而不会相互影响.如下图:

    4. 基本数据类型的比较是值的比较

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

    5. 基本数据类型是存放在栈区的

    假如有以下几个基本类型的变量:

    var name = "jozo";
    var city = "guangzhou";
    var age = 22;

    那么它的存储结构如下图:

    栈区包括了变量的标识符和变量的值

    js引用类型:

    js中除了上面的基本类型之外就是引用类型了,也可以说就是对象了,比如:Object,Array,Function,Data等

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

    var o = {x:1};
    o.x = 2;//通过修改对象属性值更改对象
    o.y = 3;再次更改对象,给它增加一个属性
    
    var a = [1,2,3];
    a[0] = 0;//更改数组的一个元素
    a[3] = 4;//给数组增加一个元素

    2. 引用类型可以添加属性和方法

    var person = {};
    person.name = "change";
    person.say = function(){alert("hello");}
    console.log(person.name)//change
    console.log(person.say)//function(){alert("hello");}

    3. 引用类型的赋值是对象引用

    先看以下代码:

    var a = {};
    var b= a;
    a.name = "change";
    console.log(a.name)//change;
    console.log(b.name)//change
    b.age = 29;
    console.log(a.age)//29
    console.log(b.age)//29
    

    当从一个变量向另一个变量赋值引用类型的值时,同样也会将储存在变量中的对象的值复制一份放到为新变量分配的空间中.引用类型保存在变量中的是对象在堆内存中的地址,所以,与基本数据类型的简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象.那么赋值操作后,两个变量都保存了同一个对象地址,而这两个地址指向了同一个对象.因此,改变其中任何一个变量,都会互相影响

    他们的关系如下图:

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

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

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

    为什么两个对象看起来一摸一样,但是却不相等呢?

    因为引用类型的比较是引用的比较,换句话说,就是比较两个对象保存在栈区的指向堆内存的地址是否相同,此时,虽然p1和p2看起来都是一个"{}",但是他们保存在栈区中的指向堆内存的地址却是不同的,所以两个对象不相等

    5. 引用类型是同时保存在栈区和堆区中的

    引用类型的存储需要在内存的栈区和堆区共同完成,栈区保存变量标识符和指向堆内存的地址

    假如有以下几个对象:

    var person1 = {name:"change1"};
    var person2 = {name:"change2"};
    var person3 = {name:"change3"};

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

    基本包装类型(包装对象):

    先看下以下代码:

    var s1 = "helloworld";
    var s2 = s1.substr(4);

    上面我们说到字符串是基本数据类型,不应该有方法,那为什么这里s1可以调用substr()呢?

    通过翻阅js权威指南第3.6章节和高级程序设计第5.6章节我们得知,ECMAScript还提供了三个特殊的引用类型Boolean,String,Number.我们称这三个特殊的引用类型为基本包装类型,也叫包装对象.

    也就是说当读取string,boolean和number这三个基本数据类型的时候,后台就会创建一个对应的基本包装类型对象,从而让我们能够调用一些方法来操作这些数据.

    所以当第二行代码访问s1的时候,后台会自动完成下列操作:

    1. 创建String类型的一个实例;// var s1 = new String("helloworld");

    2. 在实例上调用指定方法;// var s2 = s1.substr(4);

    3. 销毁这个实例;// s1 = null;

    正因为有第三步这个销毁的动作,所以你应该能够明白为什么基本数据类型不可以添加属性和方法,这也正是基本装包类型和引用类型主要区别:对象的生存期.使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都是一直保存在内存中.而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁

    转载于:https://www.cnblogs.com/chaoyuehedy/p/7894971.html

    展开全文
  • JS的数据类型 首先需要注意的是JS是弱类型语言,它的类型是可变的。而JS为了节省内存空间而划分了不同的数据类型。 JS一共有五种简单数据类型,三种复杂数据类型。 JS的五种简单类型 ...字符串类型的

    JS的数据类型

    首先需要注意的是JS是弱类型语言,它的类型是可变的。而JS为了节省内存空间而划分了不同的数据类型。
    JS一共有五种简单数据类型,三种复杂数据类型。

    JS的五种简单类型

    Number数据类型

    • Number数据类型包含整数和浮点数,其中浮点数至少包含到小数点后一位。
    • NaN也属于Number类型。
      1.对于NaN经过任何操作(加减乘除等)后结果均为NaN。
      typeof(NaN) ## NaN
      
      2.NaN不等于NaN。
      NaN==NaN  ##false
      

    string类型

    • 字符串类型的数据有length属性
    • String()函数适用于将任何数据类型转为string类型,但不支持转进制字符串
    String(null) ##'null'
    
    • .toString()函数不支持将null、undefined类型转为string类型,但支持转进制字符串(如可以将字符串转成二进制形式)
    false.toString() ##'false'
    null.toString() ##报错
    var b = "a"
    b.charCodeAt().toString(2) ##'100001',即已将字符串a的ascii码转为二进制
    

    Boolean类型

    • 包含两个值,True和False。

    undefined类型

    • undefined类型只包含一个值就是undefined。
      • 如果使用var声明了一个对象,但没有对其初始化,那么它的值就是undefined。

    Null类型

    • null被看做是空对象指针。

    JS的三种复杂类型

    Object类型

    • 构造Object类型的两种方法
    var person = new Object();
    person.name="aaa"
    person.age=24
    
    var person={
      name:"aaa",
      age:24
    }
    

    原始值和引用类型及区别

    • 原始值,即五种简单数据类型
    • 引用值,即三种复杂数据类型
    • 区别: 简单数据类型直接存储在变量访问的位置,引用值存储在变量处的仅仅只是一个指针(内存地址)。
    展开全文
  • js的原始类型 Number String Boolean Null Undefined Symbol 原始类型的值无法更改 对象类型的值是可以修改 2.对象类型:相等比较 比较对象是否相等,不是比较它们的值。对象的比较是在比较引用地址:当且仅当...
    1. js的原始类型

              Number String Boolean Null Undefined Symbol

          2. 原始类型的值无法更改,对象类型的值是可以修改

          3. 对象类型:相等比较

               比较对象是否相等,不是比较它们的值。对象的比较是在比较引用地址:当且仅当它们的引用的是同一个对象时,它们才相等。

          4. 复制原始、对象类型的值

                复制原始类型变量的值时,会将值拷贝一份,和原来的值是相互独立的

                复制对象类型变量的值时,会将存储在变量中的值拷贝一份,也就是它所指向的对象在内存中的地址值。复制操作结束后,它们俩指向同一对象。

     

    展开全文
  • 一、他们是什么 1. 原始数据类型:5种 - Number - String - Boolean - Null - Undefine 2. 引用数据类型:3种 - Object (对象) ...原始数据类型 按值传递,无法改变一个原始数据类型的值; 引用数据类型 按引用
  • js 基本类型与引用类型的区别 ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型。也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型, 还可以分为可变类型和不可变类型,其实...
  • ECMAScirpt 变量有两种不同数据类型:基本类型,引用类型。也有其他叫法,比如原始类型和对象类型,拥有方法类型和不能拥有方法类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种类型...
  • 通过这篇文章你将了解堆、栈、方法区等以及8种基本类型与引用类型在内存中的区别 栈区: 栈中只存储方法中(不包括对象的成员变量)的基础数据类型和引用数据类型地址,对象都存放在堆区中每个栈中的数据(原始类型...
  • 原始类型与封装类的区别

    千次阅读 2013-10-24 15:54:18
    引用类型原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • ECMAScirpt 变量有两种不同数据类型:基本类型,引用类型。也有其他叫法,比如原始类型和对象类型,拥有方法类型和不能拥有方法类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种类型...
  • ECMAScirpt 变量有两种不同数据类型:基本类型,引用类型。也有其他叫法,比如原始类型和对象类型,拥有方法类型和不能拥有方法类型, 还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种类型...
  • 引用类型处理是对象,引用可以看做指针,指向引用内存堆栈区 基本类型 基本数据类型有5种: Number String null Boolean undefined 调用typeof()可以查看相应类型 typeof() 当类型为引用类型或者null 时会...
  • 原文地址:由js applycall方法想到的js数据类型(原始类型引用类型) js的call方法apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,...
  • Java中int和Integer的区别Java各种数据类型详细...但是有一点需要说明的是,Java里面只有八种原始类型,其列表如下: 实数:double、float 整数:byte、short、int、long 字符:char 布尔值:boolean复杂类型和...
  • 当形式参数为基本类型时,传递过来是一个值. 方法在调用后,会在栈空间开辟一个空间,创建一个局部变量,然后将接受到值复制到形式参数变量上,然后对其进行操作.在方法结束时,创建局部变量也会消失.同时其原始...
  • 文章目录一、原始对应的封装类二、引用类型和原始类型的区别:三、总结: 比如: Int是java的原始数据类型,Integer是java为int提供的封装类。 一、原始对应的封装类 Java为每个原始类型提供了封装类,常见的原始...
  • JavaScript中的原始值(undefined、null、布尔值、数字和字符串)对象(包括数组和函数)有着根本区别原始值是不可更改(字符串是不可更改!)。原始比较是值比较;对象比较并非值比较:即使两个...
  • 如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。 引用和指针的区别 n是m的一个引用(reference),m是被引用物(referent)。 ...
  • Java提供了两类数据类型:一种是基本数据(原始类型),一种是引用类型。 数据类型图: 基本数据类型: 注意: 1.在基本数据类型中,除了boolean类型所占长度平台有关外,其他数据类型长度都是平台无关。比如...
  • 1.对于存放两种数据类型的变量 :存放 js基本数据类型的变量存放的是基本类型数据的实际值,而存放引用数据类型的变量是保存对它的引用即指针 2 变量的交换(复制变量时): 对于存放基本数据类型的变量的交换,等于...
  • 原始与引用值、基本包装类型: 1、原始值(栈):表示单一数据,ES设计了6种原始值,undefined、null、boolean、number、string和symbol(做标识),保存原始变量是按值访问,即存储在内存中是实际值; 2...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 344
精华内容 137
关键字:

原始类型与引用类型的区别