精华内容
下载资源
问答
  • 2021-01-20 03:27:50

    【单选题】下面哪个坐标系不属于在椭球面上表示点位置的坐标系统。

    【简答题】2.根据形体的两面投影,补绘其第三面投影(尺寸可由图上直接量取)。 (1) (2) (3) (4) (5) (6) (7) (8)

    【单选题】图中的代码第( )行进行了数据的强制类型转换

    【单选题】您需要我帮忙吗?

    【单选题】您要不要试驾一下?

    【单选题】2000国家大地坐标系其长半轴为( )

    【填空题】按照三色谱,()+()=青色

    【单选题】在Mysql中,我们推荐使用( )数据类型来存储字符型字符串。

    【单选题】1980年西安国家大地坐标系其坐标原点在( )

    【判断题】在windows98中,控制面板可以更改硬件设置,但无法更改软件设置()

    【单选题】如下图,在Windows的搜索栏中输入需要的相关信息搜索的结果是()

    【判断题】判断下列英汉语句子意思是否一致(一致则正确,否则选错误)。 His silence is equivalent to an approval. 他的沉默等于同意。

    【单选题】我国的高程基准在( )

    【单选题】1980西安坐标系采用的椭球体为: ( )

    【单选题】

    【单选题】图中代码运行后的结果是:

    【简答题】工作坑支护是否列在措施项目清单中?

    【判断题】在定义指针变量时可以对它 初始化:语句 int

    *p=&a[0];与语句 int

    * p=a;是等价的。

    【判断题】实参数组名代表一个固定的地址,或者说是指针常量,但形参数组名并不是一个固定的地址,而是按指针变量处理。

    【单选题】您觉得这款汽车怎么样?

    【简答题】工程量调整是工程数量调整,还是按综合单价调整,如289页表中如石灰炉渣垫层量调整了,是按综合单价24.32调整,还是按序号1、2各项实际增减量调整。

    【判断题】正常菌群在正常情况下对人体无害。

    【单选题】您的家庭地址是哪里呢?

    【单选题】在Mysql中,以下哪种数据类型使用4个字节来存储数据?( )

    【单选题】图代码运行后的结果是( )

    【单选题】欲配制 pH=5 的缓冲溶液 , 下列物质的共轭酸碱对中最好选择

    【单选题】已知毒物中毒性最强的是:

    【单选题】下列( )类型不是MySQL中常用的的数据类型。

    【简答题】轨道的水平运输考虑在何处?

    【单选题】下列哪个不是我们国家采用过的高程系:( )

    【简答题】计算机高级语言有哪些?

    【单选题】您喜欢什么样的车型呢?

    【多选题】常见的基于页面的信息集成工具有哪些()

    【多选题】在Mysql中,能从用户指定的多个自定义选项值中选择其一输入的字段数据类型有( )。【本题2项正确】

    【填空题】所谓缓冲溶液,是一种能对溶液的酸度起____________作用的溶液。

    【单选题】上次为您服务的顾问是谁呢?

    【判断题】影响资金等值计算的因素有:金额的大小、金额发生的时间、利率的大小。

    【判断题】数组名不代表整个数组,只代表数组首元素的地址。

    【判断题】用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。

    【判断题】判断下列英汉语句子意思是否一致(一致则正确,不一致则错误) They've found the flight recorder, the so-called black box. 他们发现了飞行记录器,即所谓的黑匣子。

    【单选题】您对我们这个品牌熟悉吗?

    【单选题】浓度相同的下列物质水溶液的 pH 最高的是

    【填空题】酸性缓冲溶液是由_______________组成。

    【单选题】您什么时间有空呢?

    【单选题】图中的代码第( )行进行了数据的自动类型转换

    【简答题】1.根据形体的立体图,绘制其三面投影图,并标注其表面上点和线的投影(投影方向自行确定)。 (1) (2) (3) (4) (5) (6) (7) (8)

    【单选题】图代码运行后的结果是( )

    【单选题】水溶液中共轭酸碱对 K a 与 K b 的关系是

    【判断题】在定义指针变量时必须指定基类型。

    【判断题】set是一个字符串对象数据类型,与枚举类型一样,Set数据类型字段的值也是来自创建时所定义的列值,但它可以是列值中多个元素的随机组合。( )

    更多相关内容
  • java中引用数据类型有哪些?

    万次阅读 多人点赞 2016-07-18 09:45:37
    Java中有俩种数据类型,其中主要有8中基本数据类型和引用数据类型,除了8中基本数据类型以外都是引用数据类型,8中基本数据类型分别是byte,short,int,long,char,boolean,float,double,具体如下:1、boolean:数据值...

    Java中有俩种数据类型,其中主要有8中基本数据类型和引用数据类型,除了8中基本数据类型以外都是引用数据类型,8中基本数据类型分别是byte,short,int,long,char,boolean,float,double,具体如下:
    1、boolean:数据值只有true或false,适用于逻辑计算。
    2、char:char型(字符型)数据在内存中占用2个字节。char型数据用来表示通常意义上的字符,每个字符占2个字节,Java字符采用Unicode编码,它的前128字节编码与ASCII兼容字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1, 
    3、byte:byte型(字节型)数据在内存中占用1个字节,表示的存储数据范围为:-128~127。
    4、short:short型(短整型)数据在内存中占用2个字节。
    5、int:int型(整型)数据在内存中占用4个字节。
    6、long:long型(长整型)数据在内存中占用8个字节。
    7、float:float型(单精度浮点型)数据在内存中占用4个字节。(float精度为7-8位)
    8、double:double型(双精度浮点型)数据在内存中占用8个字节。
    下面说说java中引用数据类型:
    引用数据类型分3种:类,接口,数组;
    一、类Class引用 
    可以是我们创建的,这里我不多讲,主要是讲解几个java库中的类 
    Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。用Object可以定义所有的类 
                  如: 
                  Object object= new Integer(1); 来定义一个Interger类 
                   Integer i=(Integer) object;     在来把这个Object强制转换成Interger类 
    String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为大写或小写形式。 
    Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替 
    Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。 
    同时也有对应的Class如:Integer  Long  Boolean  Byte  Character  Double  Float   Short 

    二、接口interface引用 

    可以是我们创建的,这里我不多讲,主要是讲解几个java库中的接口interface
    List<E>:列表 ,此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引 (在列表中的位置)访问元素,并搜索列表中的元素。List 接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。 List 接口提供了两   种在列表的任意位置高效插入和移除多个元素的方法。 
    add() : 在列表的插入指定元素。 
    remove():移除列表中指定位置的元素。 
    get(int index):返回列表中指定位置的元素。
    Map<K,V>: 
    K - 此映射所维护的键的类型 
    V - 映射值的类型 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 
    put(K key,V value):将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当,返回 true 时,才能说映射 m 包含键 k 的映射关系)。  remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。更确切地讲,如果此 映射包含从满足(key==null ? k==null :key.equals(k))的键 k 到值 v 的映射关系,则移除该映射关系。(该映射最多只能包含一个这样的映射关系.) get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
    这里我们主要是用String List Map Object 是最常用Number ArrayList<E> Arrays等 

    三、数组引用

    数组:存储在一个连续的内存块中的相同数据类型(引用数据类型)的元素集合。

    数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引(下标)从0开始

    数组的定义

    第一种方式:类型[] 数组名 int[] nums; 
    第二种方式:类型数组名[];  int nums[];
    大多数Java程序员喜欢使用第一种风格,因为它把数据类型int[],和变量名num分开了.
    数组的初始化
    Java中数组必先初始化后才能使用.
    初始化就是给数组元素分配内存,并为每个元素赋初始值。
    初始化数组的两种方式:

    静态初始化:
    语法格式:类型[] 数组名 = new 数组类型[]{元素1,元素2,元素3,...元素n};
    简化语法:类型[] 数组名 = {元素1,元素2,元素3...元素n};
    动态初始化:
    如果我们事先不知道数组里存储哪些数据,只知道需要存储数据的个数,此时可以使用动态初始化方式。
    动态初始化:初始化时由我们指定数组的长度,系统自动为数组元素分配初始值。
    格式:类型[] 数组名 = new 数组类型[数组长度];
    注意:无论,以哪种方式初始化数组,一旦初始化完成,数组的长度就固定了,不能改变,除非重新初始化。也就是说数组是定长的。

    为什么Java里有基本数据类型和引用数据类型?

    引用类型在堆里,基本类型在栈里。

    栈空间小且连续,往往会被放在缓存。引用类型cache miss率高且要多一次解引用。

    对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高

     

    展开全文
  • 基本数据类型和引用数据类型的区别 Java中的数据类型分为两大类,基本数据类型和引用数据类型。 一、基本数据类型 基本数据类型只有8种,可按照如下分类 ①整数类型:long、int、short、byte ②浮点类型:float、...

    基本数据类型和引用数据类型的区别

    Java中的数据类型分为两大类,基本数据类型和引用数据类型。
    一、基本数据类型
    基本数据类型只有8种,可按照如下分类
    ①整数类型:long、int、short、byte
    ②浮点类型:float、double
    ③字符类型:char
    ④布尔类型:boolean

    2、引用数据类型
    引用数据类型非常多,大致包括:
    类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
    例如,String类型就是引用类型。
    简单来说,所有的非基本数据类型都是引用数据类型。
    1. 基本数据类型的值是不可变的
    任何方法都无法改变一个基本类型的值,比如一个字符串:

    var name = "change";
    name.substr(1);//hange
    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看起来都是一个"{}",但是他们保存在栈区中的指向堆内存的地址却是不同的,所以两个对象不相等
    在这里插入图片描述
    基本数据类型和引用类型的区别详解
    javascript
    发布于 2017-02-24
    前两天看到kraaas大神的关于基本数据类型和引用类型的区别的文章觉得写得非常不错,就想着在其基础上加上自己平时看到的一些知识点和理解,所以就有了以下的文章

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

    1. 基本数据类型的值是不可变的
      任何方法都无法改变一个基本类型的值,比如一个字符串:

    var name = “change”;
    name.substr(1);//hange
    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,要区分清楚

    1. 基本数据类型不可以添加属性和方法
      var p = “change”;
      p.age = 29;
      p.method = function(){console.log(name)};
      console.log(p.age)//undefined
      console.log(p.method)//undefined
      通过上面的代码,我们知道不能给基本类型添加属性和方法,也再次说明基本类型是不可变的

    2. 基本数据类型的赋值是简单赋值
      如果从一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上

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

    图片描述

    1. 基本数据类型的比较是值的比较
      var person1 = ‘{}’;
      var person2 = ‘{}’;
      console.log(person1 == person2); // true
    2. 基本数据类型是存放在栈区的
      假如有以下几个基本类型的变量:

    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
    

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

    他们的关系如下图:
    图片描述

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

    1. 引用类型的比较是引用的比较
    var person1 = {};
    var person2 = {};
    

    console.log(person1 == person2)//false
    为什么两个对象看起来一摸一样,但是却不相等呢?

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

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

    假如有以下几个对象:

    在这里插入图片描述
    基本包装类型(包装对象):
    先看下以下代码:

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

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

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

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

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

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

    展开全文
  • js数据类型(基本数据类型 | 引用数据类型

    千次阅读 多人点赞 2020-08-06 16:46:45
    引用数据类型:Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象) 1、基本数据类型(六种)存放在栈中 基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存...

    一、数据类型

    JS分两种数据类型:

    基本数据类型:**Number、String、Boolean、Null、 Undefined、Symbol(ES6),**这些类型可以直接操作保存在变量中的实际值。

    引用数据类型Object(在JS中除了基数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)

    1、基本数据类型(六种)存放在栈中

    基本数据类型是指存放在中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问

    • 1、Number数值类型
      Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一个数字)两种值

    注意:在js中浮点数的精度是17位,计算是二进制的计算数 据,所以得到的不是整数

    var num1 = 0.1;
    
    var num2 = 0.2;
    
    console.log(num1 + num2);   //0.30000000000000004
    

    NaN:非数字类型,属于数值型基本数据类型

    特点:
    1):设计任何的NaN操纵都会返回NaN
    console.log('ab'/10); // NaN
    2) NaN不等于自身。
    console.log(NaN == NaN);// false;

    判断是否是Number类型

    1、isNaN:判断是否是一个非数字类型,传入的非数字类型,返回true,否则返回false
    注意:传入的参数首先会被转化为数值,如果参数类型为对象类型,先调用valueOf()方法,再确定该方法返回的值是否可以转换为数值类型,如果不能,再调用toString()方法,再确定返回值
    2、typeof
    console.log(typeof 12) //Number

    数值类型的转换:
    Number():可以用于任何的数据类型
    parseInt:提取 整数数值
    paseFloat:提取浮点数值

    • 2、String 字符串类型

    特点:
    1、字符串的单引号和双引号作用效果一样
    2、字符串有length属性,可以取得字符串的长度
    3、字符串的值是不可变的,所以很多的字符串的api不会改变原字符串值

    字符串转换:
    String():适用于任何的数据类型(null -> null undefined -> undefined)
    toString()nullundefined没有这个功能
    console.log(null.toString()); //error 报错

    • 3、Boolean 布尔类型
      该类型只有两个值:truefalse
    转换为`boolean`:    `Boolean()`
    Boolean(undefined):false
    
    Boolean(null):false
    
    Boolean(非空对象包括空数组[]和空对象{}):true
    
    Boolean(0): true || Boolean(0NaN):false
    
    Boolean(非空包括空格字符串):true || Boolean(''):false
    
    [注意]true不一定等于1false也不一定等于0
    

    出现场景:
    (1)条件语句导致执行的隐士类转换
    (2)字面量或变量定义

    类型转换:
    Number(true): 1     ||   Number(false) : 0
    
    String(true):'true'      ||   String(false):'false'
    
    • 4、Null 空对象指针类型
      如果定了一个对象,初始化可以为null,因为null的基本类型是Null,在if语句中默认转化为false,在和数值计算默认为0
      出现场景:对象不存在
    类型转换:
    Booleam(null)  false
    
    Number(num)  0
    
    String(null)  'null'
    

    Number(null) // 0

    • 5、Undefined
      申明了变量但是没有初始化,默认为undefined,在if语句中默认转化为false,

    undefined:表示‘缺少值’,就是应该有一个值,但是没有定义,以下用法是典型的出现undefined情况
    (1)变量被申明,等于undefined
    (2)调用函数时,应该提供的参数没有提供,该参数等于undefined
    (3)对象没有赋值的属性,该属性值为undefined
    (4)函数没有返回值,默认返回undefined

    类型转换:
    Boolean(undefined):  false
     
    Number(undefined):  NaN
    
    String(undefined):  'undefined'
    
    • 6、Symbol
      ES6新增的一个基本数据类型,表示唯一性
     let id1 = Symbol('id');
     let id2 = Symbol('id');
     console.log(id1 == id2);  //false
    

    Symbol属性类型不支持for...inObject.keys()

     let id = Symbol("id");
     let obj = {
      [id]:'symbol'
     };
     for(let option in obj){
         console.log(obj[option]); //空
     }
    

    但是也能有方法去访问:Object.getOwnPropertySymbols
    方法会返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。

    console.log(Object.getOwnPropertySymbols(obj))
    // [ Symbol(c) ]
    
    • 介绍两个Symbol.forSymbol.keyFor
      (1)、Symbol.for :方法根据给到的键key来运行时的symbol注册表中找到对应的symbol,如果找到了,则返回它,否则新增一个与该键关联的symbol,并放入全局的symbol,这个Symbol值可以是被二次用到的
      返回值:
      返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol。
    Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中,键为 "foo"
    Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbol
    
    Symbol.for("bar") === Symbol.for("bar"); // true,证明了上面说的
    Symbol("bar") === Symbol("bar"); // false,Symbol() 函数每次都会返回新的一个 symbol
    
    为了防止冲突,最好给你要放入 symbol 注册表中的 symbol 带上键前缀。
    Symbol.for("mdn.foo");
    Symbol.for("mdn.bar");
    
    

    (2)、Symbol.keyFor
    方法用来获取 symbol 注册表中与某个 symbol 关联的键。

    var globalSym = Symbol.for("foo"); 
    Symbol.keyFor(globalSym); // "foo"
    

    2、引用数据类型

    引用数据类型也叫对象数据类型,包括function,object,array,date,RegExp等可以可以使用new创建的数据,又叫对象类型,他们是存放在(heap)内存中的数据
    特点:

    • 引用类型的值可以改变
    • 引用数据类型可以添加属性和方法
    • 引用数据类型的赋值是对象引用
    • 引用类型的比较是引用的比较
    • 引用类型是同时保存在栈区中和堆区中的,引用类型的存储需要在内存的栈区和堆区中共同完成,栈区保存变量标识符和指向堆内存的地址

    注意:在引用类型赋值时对象的引用,所以从一个变量向另一个变量赋值引用类型的值时,同样会将存在在变量中的对象的值赋值一份到新的变量分配的空间,引用类型保存在变量中的时对象在堆存在的地址,所以与基本数据类型的简单赋值不同,这个值的副本实际上时一个指针,而这个指针指向储存在堆内存的一个对象,那么赋值操作后,两个变量都保存了同一个对象的地址,而这个地址都指向同一个对象,因此改变其中任何一个变量,都会影响
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jbmIM5T9-1596703084649)(images/screenshot_1595230430200.png)]

    在ECMAScript中,Object类型是所有它的实例的基础

    Object的每个实例都具有下列的属性和方法:

    • constructor:构造函数
    • hasOwnProperty(proertyName)
      用于检查给定的属性在当前对象实例(而不是实例的原型)中是否存在。
    • isPropertyOf(Object)
      用于检查其原型链的对象是否存在于指定对象的实例中,是则返回true,否则返回false。
    var a = {} function Person() {} 
    
    var p1 = new Person() // 继承自原来的原型,但现在已经无法访问  
    
    var Person.prototype = a var p2 = new Person() // 继承a  
    
    console.log(a.isPrototypeOf(p1)) // false a是不是p1的原型 
    
     console.log(a.isPrototypeOf(p2)) // true a是不是p2的原型  
    
    console.log(Object.prototype.isPrototypeOf(p1)) // true  
    
    console.log(Object.prototype.isPrototypeOf(p2)) // true
    
    
    • propertyIsEnumerable(propertyName)
      用于检查给定的属性是否可以用 for-in 语句进行枚举。
    • toLocaleString()
      返回对象的字符串表示,该字符串与执行环境的地区对应。
    • toString()
      返回对象的字符串表示。
    • valueOf()
      返回对象的字符串、数值、布尔值表示。通常与toString()方法的返回值相同。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ncTTVVzi-1596703084652)(images/screenshot_1595228465109.png)]

    拓展:声明对象的几种方式

     <script>
    //内置函数
            var obj1=new Object();
            obj1.name="zhuyu";
            obj1.age=21;
            obj1.uni=function(){
                console.log(this.name+this.age);
            }
            console.log(obj1);
            obj1.uni();
     
    //字面量
            var obj2={
                name:"zhuyu2",
                age:21,
                uni2:function(){
                    console.log(this.name+this.age)
                }
            }
            console.log(obj2);
            obj2.uni2();
     
     
    // 自定义函数
            function Obj(name,age){
                this.name=name;
                this.age=age;
                this.uni3=function(){
                    console.log(this.name+this.age)
                }
            }
            var obj3=new Obj("zhuyu3",21);
            console.log(obj3);
            obj3.uni3();
     
    // Es6类
     
            class Obj2{
                constructor(name,age){
                    this.name=name;
                    this.age=age;
                }
                uni4(){
            console.log(this.name+this.age)
                }
            }
            var obj4=new Obj2("zhuyu4",21);
            console.log(obj4);
            obj4.uni4();
     
    //使用Object.create()
     
            var person={
                image:"true",
                uni5:function(){
                    console.log(`名字是${this.name},年龄是${this.age}`);
                }
            }
           var obj5=Object.create(person);
           obj5.name="zhuyu5";
           obj5.age=21;
           obj5.image=false;
           obj5.uni5();
           console.log(obj5)
        </script>
    

    3、基本数据类型和引用数据类型的区别

    总结基本数据类型和引用数据类型区别

    1、声明变量时内存分配不同

    *原始类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXBAdxMe-1596703084654)(images/screenshot_1595226759783.png)]

    *引用类型:存在堆中,栈中存储的变量,只是用来查找堆中的引用地址。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsfodwlF-1596703084656)(images/screenshot_1595226765978.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1467GOxa-1596703084658)(images/screenshot_1595227087417.png)]

    这是因为:引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响

    2、不同的内存分配带来不同的访问机制

    在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获得这个对象中的值,这就是传说中的按引用访问。而原始类型的值则是可以直接访问到的。

    3、复制变量时的不同

    1)原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。

    2)引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。(这里要理解的一点就是,复制对象时并不会在堆内存中新生成一个一模一样的对象,只是多了一个保存指向这个对象指针的变量罢了)。多了一个指针
    浅拷贝:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoeUg10W-1596703084659)(images/screenshot_1595226833036.png)]

    深拷贝:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxsVP0Bi-1596703084660)(images/screenshot_1595226846817.png)]

    4、参数传递的不同(把实参复制给形参的过程

    首先我们应该明确一点:ECMAScript中所有函数的参数都是按值来传递的。

    但是为什么涉及到原始类型与引用类型的值时仍然有区别呢?还不就是因为内存分配时的差别。

    1)原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。

    2)引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,这一点你要时刻铭记在心!

    因此它传递的值也就是这个内存地址,这也就是为什么函数内部对这个参数的修改会体现在外部的原因了,因为它们都指向同一个对象。

    4、检测类型

    • 法一:typeof

    最基本的判断方式,该操作符返回一个表示数据类型的字符串,numberstringbooleanobjectfunctionundefinedsymbol

    1. ‘undefined’ --未定义的变量或值

    2. ‘boolean’ --布尔类型的变量或值

    3. ‘string’ --字符串类型的变量或值

    4. ‘number’ --数字类型的变量或值

    5. ‘object’ --对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理)

    6. ‘function’ --函数类型的变量或值

         console.log(typeof a);    //'undefined'
    
        console.log(typeof(true));  //'boolean'
    
        console.log(typeof '123');  //'string'
    
        console.log(typeof 123);   //'number'
    
        console.log(typeof NaN);   //'number'
    
        console.log(typeof null);  //'object'    
    
        var obj = new String();
    
        console.log(typeof(obj));    //'object'
    
        var  fn = function(){};
    
        console.log(typeof(fn));  //'function'
    
        console.log(typeof(class c{}));  //'function'
    
    • 法二:instanceof

    运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
    语法:object instanceof constructor
    (1)基础类型

    let num = 1
    num instanceof Number // false
    
    num = new Number(1)
    num instanceof Number // true
    

    这两个都是一样的数值,为什么不一样?
    因为instanceof 检测的是:检测目标的__proto__与构造函数prototype,相同返回true,不同返回false,对于stringboolean是一样的
    注意:

    new String(1) // String {"1"}
    String(1) // "1"
    

    (2) 继承关系的用法

    // 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
     function Aoo(){}
     function Foo(){}
     Foo.prototype = new Aoo();//JavaScript 原型继承
    
     var foo = new Foo();
     console.log(foo instanceof Foo)//true
     console.log(foo instanceof Aoo)//true
    

    (3) 复杂类型

    let arr = []
    arr instanceof Array // true
    arr instanceof Object // true
    Array.isArray(arr) // true
    

    注意:
    (new Number(1)) instanceof Object // true
    (4) 其他类型

    let reg = new RegExp(//)
    reg instanceof RegExp // true
    reg instanceof Object // true
    
    let date = new Date()
    date instanceof Date // true
    date instanceof Object // true
    

    但是Fuction不一样

    function A() {}
    let a = new A()
    a instanceof Function // false
    a instanceof Object // true
    A instanceof Function // true
    

    –>分析a为什么不是?

    • a是new出来,所以是经过构造,因此已经是对象,不再是函数,所以false。
    • a是经过构造的对象,返回ture没问题。
    • 如上所述,A是个函数,因此没什么概念上的问题。但是要知道A.__proto__Function.prototypeƒ () { [native code] },这是与object以后处于原型链上层的存在,而且与object平级:
    let obj = {}
    obj.__proto__ // {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
    obj.__proto__.prototype // undefined
    
    let A = function() {}
    A.__proto__ // ƒ () { [native code] }
    A.__proto__.prototype // undefined
    

    本章内容图谱:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZLYd9tI-1596703084662)(images/screenshot_1595231058140.png)]

    展开全文
  • Java中的数据类型分为两大类,基本数据类型和引用数据类型 一、数据类型二、基本数据类型和引用数据类型的区别
  • Java数据类型引用数据类型

    万次阅读 多人点赞 2018-06-26 23:33:29
    我们接着来说数据类型,上一次我们提到了java中的八种数据类型,没有涉及到引用类型,而java的引用类型只有三种,分别是类(class)、接口(interface)、数组。如下图所示 Java把内存分成两种,一种叫做栈内存,一种...
  • 2011新版JAVA题解JAVA简单数据类型 2011新版JAVA题解JAVA简单数据类型1下列哪一个是合法的标识符 A12class; B+viod; C-5; D_black; 答D 2下列哪一个不是JAVA语言中保留字 Aif; Bsizeof; Corivate; Dnull; 答B 3下列...
  • Java的引用数据类型可分为三种:类(class)、接口(interface)、数组。1、“==”和“equals()”方法的区别 String str1 = "Hello”; String str2 = new String("Hello"); String str3 = str2; ...
  • 转自原文 在C#的数据类型中,什么属于值类型,什么属于引用类型 类型:整数,浮点数,高精度浮点数,布尔,字符,结构,枚举引用类型:对象(Object),字符串,类,接口,委托,数组除了值类型和引用类型,还有一...
  • JavaScript数据类型,包括原始类型和引用类型有哪些? 原始类型有五个 Number类型 专门保存数字的类型,可用于进行数学计算等的数值 String类型 专门用来保存字符串的类型;” “,用来存储字符串类型的文本. ...
  • Java的四种引用类型有哪些?

    千次阅读 2021-02-12 11:01:54
    学过Java的人们都知道,Java的类型一般有两种,一种是基本数据类型,另一种是引用数据类型。其中,基本数据类型的值通常储存与栈内存,用于对该类型的对象进行存储;而引用数据类型则在存储堆中对需要引用的对象进行...
  • 2007-07-01VB问题VB有哪几种数据类型?每种数据类型所占的字节数分别是多少?列举每种数据类型的实例。1Boolean数据类型Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值...
  • python的可变与不可变数据类型

    千次阅读 2020-12-08 20:22:47
    用一句话来概括上述过程就是:“python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来...
  • 关于Python中组合数据类型的分类

    千次阅读 2019-01-22 21:53:44
    引用数据类型 组合数据类型【可以存放一组数据】 列表list 元组tuple 集合set 字典dict 引用数据类型【】 关于组合数据类型语法基础,我们一般有常用的: 列表,元组,集合,字典 在了解这四种数据类型之前,我们先...
  • 在c语言中引用数组元素时其数组下标的数据类型有哪些发布时间:2021-01-22 13:37:26来源:亿速云阅读:99作者:小新这篇文章主要介绍了在c语言中引用数组元素时其数组下标的数据类型有哪些,具有一定借鉴价值,感...
  • 【单选题】以下不是Python序列类型的是:【判断题】if语句与elif语句的使用没有本质的区别【单选题】import timemyD = {1:'a',2:'b'}for key,value in dict.items(myD):print(key,value)time.sleep(0.01) 程序的输出...
  • 常用数据库基本数据类型

    千次阅读 2021-02-08 12:11:18
    数据类型 描述 存储 Text 用于文本或文本与数字的组合 最多 255 个字符。 Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。 注释:无法对 memo 字段进行排序。不过它们是可搜索的。 Byte 允许 0 到 255 的...
  • 11.2 日期和时间数据类型

    千次阅读 2021-01-31 22:13:26
    文章目录 官方文档地址:11.2 Date and Time Data Types 表示时间值的日期和时间数据类型是DATE、TIME、DATETIME、TIMESTAMP和YEAR。...关于时间数据类型存储要求的信息,参见11.7 数据类型存储要求。 用于描述
  • Pandas是基于NumPy构建的数据分析包,但它含有比ndarray更为高级的数据结构和操作工具,如Series类型、DataFrame类型等。 Pandas的便捷功能离不开高效的底层数据结构的支持。 Pandas主要有三种数据结构: Series...
  • 0039003100390031003874 关于Python组合数据类型,以下描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪...
  • Java基本类型变量与引用类型变量

    千次阅读 2021-03-06 15:41:26
    Java中数据类型分为两大类:基本数据类型与复合数据类型。...1.基本类型与引用类型变量*基本类型(primitive type)基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个...
  • Python 中 NumPy 的数据类型

    千次阅读 2019-10-20 11:06:40
    NumPy 中有些数据类型是与 C 中的数据类型是类似的。 Numpy 的类型 C 的类型 描述 np.bool bool 存储为字节的布尔值(True或False) np.byte signed char 平台定义 np.ubyte unsigned ...
  • web前端数据类型详解

    千次阅读 2019-04-11 14:50:33
    数据类型 数据类型 JavaScript 拥有动态类型:字符串、数字、布尔、数组、对象、Null、Undefined ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。 typeof typeof ...
  • 类型引用类型

    千次阅读 热门讨论 2019-01-02 20:18:16
    注:引用类型当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间,当使用new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。...
  • sqlite 数据类型 转载自:http://blog.csdn.net/zanfeng/article/details/17436381 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型: ...
  • PostgreSQL 数据类型

    千次阅读 2017-11-06 20:13:06
    PostgreSQL 数据类型 6.1概述    PostgreSQL提供了丰富的数据类型。用户可以使用 CREATE TYPE 命令在数据库中创建新的数据类型。PostgreSQL 的数据类型被分为四种,分别是基本数据类型、复合数据类型、域和伪类型...
  • Unity中C#数据类型(3)

    千次阅读 2019-02-22 16:29:13
    C# 数据类型 在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value types) 值类型变量可以直接分配给一个值。它们是从类 System....
  • 我们都知道,c#的两大数据类型分别为值类型(int,float,double,char,DataTime)和引用类型(类、托管、数组和接口)。很多人或许闭着眼睛都能说出值类型包括简单类型、结构体类型和枚举类型引用类型包括自定义类、数组...
  • Kotlin 基本数据类型

    千次阅读 2020-08-10 16:46:09
    Kotlin 基本数据类型基本数据类型字面常量 ...不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。 类型 位宽度 Double 64 Float 32 Long 64 Int 32 short 16 byte 8 字面常量 ...
  • 1. 写一个方法对任意引用数据类型数组进行排序。具体要求如下: 1) 方法声明为public void sortArr(Object arr[]){ } 2) 方法中首先输出排序前数组内容,然后进行排序,最后输出排序后数组内容。 3) 可以是冒泡...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,801
精华内容 49,120
关键字:

下列属于引用数据类型