类型_类型转换 - CSDN
精华内容
参与话题
  • java的八大基本类型

    万次阅读 2018-09-04 16:30:15
    Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。...

    1. Java的简单类型及其封装器类

    Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:

    byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

    short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

    int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

    long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

    float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

    double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

    boolean:只有true和false两个取值。

    char:16位,存储Unicode码,用单引号赋值。

    Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。

    简单类型

    boolean

    byte

    char

    short

    Int

    long

    float

    double

    void

    二进制位数

    1

    8

    16

    16

    32

    64

    32

    64

    --

    封装器类

    Boolean

    Byte

    Character

    Short

    Integer

    Long

    Float

    Double

    Void

       对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。如:

    基本类型byte 二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE

    基本类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE

    基本类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE

    基本类型double 二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE

    注意:float、double两种类型的最小值与Float.MIN_VALUE、 Double.MIN_VALUE的值并不相同,实际上Float.MIN_VALUE和Double.MIN_VALUE分别指的是 float和double类型所能表示的最小正数。也就是说存在这样一种情况,0到±Float.MIN_VALUE之间的值float类型无法表示,0 到±Double.MIN_VALUE之间的值double类型无法表示。这并没有什么好奇怪的,因为这些范围内的数值超出了它们的精度范围。

    Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

    Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5.0(1.5)开始,JAVA虚拟机(JavaVirtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。

    基本类型的优势:数据存储相对简单,运算效率比较高

    包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想

     

    2.Java中的常量

    十六进制整型常量:以十六进制表示时,需以0x或0X开头,如0xff,0X9A。

    八进制整型常量:八进制必须以0开头,如0123,034。

    长整型:长整型必须以L作结尾,如9L,342L。

    浮点数常量:由于小数常量的默认类型是double型,所以float类型的后面一定要加f(F)。同样带小数的变量默认为double类型。

    如:float f;

        f=1.3f;//必须声明f。

    字符常量:字符型常量需用两个单引号括起来(注意字符串常量是用两个双引号括起来)。Java中的字符占两个字节。一些常用的转义字符:

    ①\r表示接受键盘输入,相当于按下了回车键;

    ②\n表示换行;

    ③\t表示制表符,相当于Table键;

    ④\b表示退格键,相当于Back Space键;

    ⑤\'表示单引号;

    ⑥\''表示双引号;

    ⑦\\表示一个斜杠\。

     

    3. 数据类型之间的转换

    1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

    自动转换

    具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些类型由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小

    ①下面的语句可以在Java中直接通过:

    byte b;int i=b; long l=b; float f=b; double d=b;

    ②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如

    char c='c'; int i=c;

    System.out.println("output:"+i);输出:output:99;

    ③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

    short i=99 ; char c=(char)i; System.out.println("output:"+c);输出:output:c;

    强制转换

    将"大"数据转换为"小"数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。

    2)表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。

    ①所有的byte,short,char型的值将被提升为int型;

    ②如果有一个操作数是long型,计算结果是long型;

    ③如果有一个操作数是float型,计算结果是float型;

    ④如果有一个操作数是double型,计算结果是double型;

    例, byte b; b=3; b=(byte)(b*3);//必须声明byte。

    3)包装类过渡类型转换

    一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

    ①当希望把float型转换为double型时:

    float f1=100.00f;

    Float F1=new Float(f1);

    double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

    ②当希望把double型转换为int型时:

    double d1=100.00;

    Double D1=new Double(d1);

    int i1=D1.intValue();

    简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

    而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

    4)字符串与其它类型间的转换

    其它类型向字符串的转换

    ①调用类的串转换方法:X.toString();

    ②自动转换:X+"";

    ③使用String的方法:String.volueOf(X);

    字符串作为值,向其它类型的转换

    ①先转换成相应的封装器实例,再调用对应的方法转换成其它类型

    例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

    ②静态parseXXX方法

    String s = "1";

    byte b = Byte.parseByte( s );

    short t = Short.parseShort( s );

    int i = Integer.parseInt( s );

    long l = Long.parseLong( s );

    Float f = Float.parseFloat( s );

    Double d = Double.parseDouble( s );

    ③Character的getNumericValue(char ch)方法

    5)Date类与其它数据类型的相互转换

    整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:

    ①Date(int year, int month, int date):以int型表示年、月、日

    ②Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分

    ③Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒

    在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)。

    获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。

    而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。

    有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,

    import java.text.SimpleDateFormat;

    import java.util.*;

    java.util.Date date = new java.util.Date();

     

    //如果希望得到YYYYMMDD的格式

    SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");

    String dateFormat=sy1.format(date);

     

    //如果希望分开得到年,月,日

    SimpleDateFormat sy=new SimpleDateFormat("yyyy");

    SimpleDateFormat sm=new SimpleDateFormat("MM");

    SimpleDateFormat sd=new SimpleDateFormat("dd");

    String syear=sy.format(date);

    String smon=sm.format(date);

    String sday=sd.format(date);

    总结:只有boolean不参与数据类型的转换

    (1).自动类型的转换:a.常数在表数范围内是能够自动类型转换的

    b.数据范围小的能够自动数据类型大的转换(注意特例)

    int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度

    c.引用类型能够自动转换为父类的

    d.基本类型和它们包装类型是能够互相转换的

    (2).强制类型转换:用圆括号括起来目标类型,置于变量前

     

    4.Java引用类型

    Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注

    引用类型:底层结构和基本类型差别较大

    JVM的内存空间:(1). Heap 堆空间:分配对象 new Student()

    (2). Stack 栈空间:临时变量 Student stu

    (3).Code 代码区 :类的定义,静态资源 Student.class

    eg:Student stu = new Student(); //new 在内存的堆空间创建对象

    stu.study(); //把对象的地址赋给stu引用变量

    上例实现步骤:a.JVM加载Student.class 到Code区

         b.new Student()在堆空间分配空间并创建一个Student实例;

         c.将此实例的地址赋值给引用stu, 栈空间;

    -----------------------------------------  个人总结 -----------------------------------------

    1、如果小数类型,并且小数比较小,比如四位小数,建议使用 BigDecimal 如果 是 double 类型会有失精度,有的时候会用科学记数法表示;

    比如 0.0001 会变成 1.0E-4,试问谁能看懂,如果偏要用 double 还要对类型进行转换。

    2、int double 都是有包装类型的,建议使用包装类型,包装类型能区分 null 和 0,就像在spring-mvc接收时使用 int 类型接收值,如果这个属性不传值,ajax 请求会报 400 错误,而且不能区分这个值是否是空;

    3、for 循环中如果要对字符串进行拼接,建议使用 StringBuffer ,如果没有线程安全问题,直接使用 StringBuilder,原因StringBuffer的所有操作是保证线程安全的,可以理解成使用了 synchronized 关键字,对性能是有影响的。

    4、最后对所有包装类型进行操作(比如 toString())要进行空指针判断,我们并不能保证这个值是有的。

    5、 数据类型的转换

    数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。

    自动数据类型转换

    具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些类型由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小。

    自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下: 

    低 ---------------------------------------------> 高 

    byte,short,char-> int -> long -> float -> double

    运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:

    操作数 1 类型

    操作数 2 类型

    转换后的类型

    byte 、 short 、 char

    int

    int

    byte 、 short 、 char 、 int

    long

    long

    byte 、 short 、 char 、 int 、 long

    float

    float

    byte 、 short 、 char 、 int 、 long 、 float

    double

    double

    强制数据类型转换

    强制转换的格式是在需要转型的数据前加上 “( )” ,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确

     

    参考:https://blog.csdn.net/u014266877/article/details/54374867

     

    展开全文
  • C++8种常见类类型

    千次阅读 2019-06-11 21:59:24
    C++8种常见类类型 前言 大部分面向对象开发工作中都应用了以下部分或者全部的基本类别的类: 1、具体类(concrete class) 2、抽象类(abstract class) 3、接口类(interface class) 4、节点类(node class) 5、支持类...

    C++8种常见类类型

    前言

    大部分面向对象开发工作中都应用了以下部分或者全部的基本类别的类:
    1、具体类(concrete class)
    2、抽象类(abstract class)
    3、接口类(interface class)
    4、节点类(node class)
    5、支持类(support class)
    6、域类(domain class)
    7、应用类(utility class)
    8、集合和容器类(collection and container class)
    这些类并不是特定的语言结构,而是用于实现逻辑类的技术。

    类类型 描述
    具体类 独立类;表示一个祖先-后代世系终止的结束类
    抽象类 为所有的子类提供布局和蓝图的基准类,不能声明此类的对象;必须派生新的类,对抽象的基本中声明任何虚函数提供定义
    接口类 用于修改或者增强另外一个类得接口,为了非面向对象代码和数据,提供面向对象性,而用来封装独立函数
    节点类 提供了继承和多态的基础;不包含纯虚函数
    域类 创建类在指定域内部模拟部分现实或者实体
    支持 /应用类 不管在任何域内,对于不同的应用都非常有用
    集合和容器类 其他对象组的一般性容纳器

    具体类

    具体类是作为结束类而设计和实现的,表示祖先-后代世系的终止,所以并不适合相关类的一般系统,每个具体类都不必参考其他类就可以单独理解。
    具体类可以在它的实现中得到优化,因为没有必要去单担心派生类中的功能性;
    所以具体类是线程处理中多线程类的理想候选者,在线程化时,不必考虑派生类中出现的覆盖或者重载重要线程化成员函数。

    抽象类

    抽象类是为所有后代提供蓝图的类,所以实际上,抽象类也就仅仅是一个蓝图罢了,用户也不能声明一个抽象类的对象,为了使用抽象类,用户必须首先从基类中派生出一个新类,而且其为抽象类中声明的所有纯虚函数提供实际定义,默认情况下,抽象类至少需要一个后代,才可以发挥出作用。
    此外,为了让一个类成为抽象类,至少需要一个纯虚函数。

    class A{
    public:
         virtual void lock(void)=0;
         virtual void unlock(void)=0;
     virtual ~A(void);
    }
    

    而类B则从类A中派生出来:

    class B:public A{
    protected:
        pthread_,mutex_t x;
    public:
    B(void);
    ~B(void);
    virtual void lock(void) {pthread_mutex_lock(x);}
    virtual void unlock(void) {pthread_mutex_unlock(x);}
    }
    

    不能直接声明抽象类:
    A MemoryLock; //非法的
    B MemoryLock; //合法的

    接口类

    类用户可用的数据成员和成员函数组成了该类的接口,C++对于类有3种访问策略:
    1、私有(private)
    2、受保护(protected)
    3、公有(public)

    其中:
    1、当数据成员和成员函数为私有的时,它们仅仅只能被中间类的成员函数访问,无法被非该类的成员函数所访问
    2、类的成员函数和数据成员为受保护的时,它们可以被类的中间成员和该类的所有后代所访问,但该类之外的函数无法访问
    3、类可以将成员函数和数据成员声明为公有的,则不管是什么类的成员,都可以访问被定义为public的接口和成员

    例如以下,这可以保护敏感函数或者变量:

    class mutex{
    protected;
        pthread_mutex_lock x;
    public:
        lock() {pthread_mutex_lock(&x);}
        unlock() {pthread_mutex_unlock(&x);}
    };
    

    节点类

    节点类是继承和多态的基础,与抽象类一样,节点类设计用于继承,但是不同的是,节点类不包含纯抽象函数,其可以直接使用。
    节点类提供了可以直接被派生类继承的受保护的数据成员和成员函数,它使用基类的指针允许在后代类中操纵成员函数,用户可以通过多态和继承来特殊化节点类。
    节点类既可以是基类,也可以是派生类。

    域类

    域类是一种创建用来模拟指定域内实体的类,类的意义特定于该域;

    支持/应用类

    这一类和域毫无关系,可以跨域使用,其在不同的应用程序上都非常有用,例如日期类、时间类、计量类等等。

    集合和容器类

    这一类主要充当了其他类或者对象的容纳器对象。

    容器类 类型
    Stack List
    Queue Associative Array
    Deque Graph
    Set Tree
    Multiset Table

    实现集合和容器类的两个方法:
    1、基于对象途径;
    2、基于模板途径;

    其中基于对象结构非常依赖于多态和继承,产生了高度纵向的集合和容器结构;
    基于模板的结构则十分依赖于C++中模板结构的一般性功能,并且产生集合和容器类的横向结构;

    展开全文
  • 简单类型和复杂类型的区别

    千次阅读 2019-03-18 14:17:55
    简单类型和复杂类型的区别: 基本类型又叫做值类型,复杂类型又叫做引用类型类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型。 引用类型:复杂数据类型,在存储是,变量中...

    简单类型和复杂类型的区别:

    • 基本类型又叫做值类型,复杂类型又叫做引用类型
    • 值类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型。
    • 引用类型:复杂数据类型,在存储是,变量中存储的仅仅是地址(引用),因此叫做引用数据类型。

    堆和栈:

    堆栈空间分配区别:
      1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
      2、堆(操作系统): 存储复杂类型(对象),一般由程序员分配释放, 若程序员不释放,由垃圾回收机制回收,分配方式倒是类似于链表。
      注意:JavaScript中没有堆和栈的概念,此处我们用堆和栈目的是方便理解和学习。
      基本类型在内存中的存储
      复杂类型在内存中的存储
      基本类型作为函数的参数
      复杂类型作为函数的参数

    展开全文
  •   JS1997年标准化以后,定义了六种内置类型,包括五种原始(Primitive)类型以及一种引用类型,ES6又新增了一种原始类型-----symbol,接下来咱们一一来分析下这七种内置类型: 六种原始类型 分别是: number string ...

      JS1997年标准化以后,定义了六种内置类型,包括五种原始(Primitive)类型以及一种引用类型,ES6又新增了一种原始类型-----symbol,接下来咱们一一来分析下这七种内置类型:

    六种原始类型

    分别是:

    • number
    • string
    • null
    • undefined
    • boolean
    • symbol
    1. number
      和其他编程语言不同,JavaScript中的所有数字均采用浮点数值表示。JavaScript采用IEEE-754标准定义的64位浮点格式表示数字。然而在实际过程中,JavaScript则是基于32位整数。此外还有一点需要注意,实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限的个数,即当在JavaScript中使用实数的时候,常常只是真实值的一个近似表示。

    2. string
      字符串(string)是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集,JavaScript字符串的索引从零开始。在JavaScript程序中的字符串直接量,是由单引号或双引号包括起来的字符序列。在ECMAScript3中,字符串直接量必须写在一行中,而在ECMAScript5中,字符串直接量可以拆分成数行,但每行必须以反斜线()结束,反斜线和行结束符都不算是字符串直接量的内容。
      在这里插入图片描述
      上文中提到的反斜杠(),在JavaScript字符串中有着特殊的用途,反斜杠符号后加一个字符,就不再表示它们的字面含义了,比如,\n就是一个转义字符,它表示的是一个换行符。
      除此之外,在ES5中,字符串可以当做只读数组,除了使用charAt()方法,也可以使用方括号来访问字符串中的单个字符:
      在这里插入图片描述

    3. null
      null是JavaScript语言的关键字,他表示一个特殊值,常用来描述“空值”。对null执行typeof运算,结果返回字符串“object”,这个最初是JavaScript设计的一个缺陷,后来渐渐被大家接受,可以理解为object的占位符。表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象,Null表示“没有对象”,即该处不应该有值。

      	typeof(null)    结果: "object"
      
    4. undefined
      当声明的变量还未被初始化时,变量的默认值为undefined,表示“缺少值”,就是此处应该有一个值,但是还没有定义。undefined是预定义的全局变量,他的值就是“未定义”。在ES3中,undefined是可读/写的变量,可以给它赋任意值。这个错误在ES5中做了修正,undefined在该版本中是只读的。如果使用typeof运算符得到undefined的类型,则返回“undefined”,表明这个值是该类型的唯一成员。

      	typeof(undefined)      结果: "undefined"
      
    5. boolean
      布尔值指代真或假、开或关、是或否。这个类型只有两个值,保留字true和false。任意JavaScript的值都可以转换为布尔值。以下的一些类型会被转换成false,undefined、null、0、-0、NaN、“” //空字符串,所有其他值,包括所有对象(数组)都会转换成true。布尔值常用的运算符有"&&"、"||"、"!"。

    6. Symbol
      Symbol是ES6新增的一种数据类型,表示独一无二的值,Symbol最大的用途是用来定义对象的唯一属性名。ES5的对象属性名都是字符串,容易造成属性名的冲突。如果使用了一个他人提供的对象,但又想为期添加新的方法,那么新方法的名字有可能与已有方法产生冲突。因此,需要保证每个属性的名字都是独一无二的,以防止属性名的冲突。这就是ES6引入Symbol的原因。

    引用类型

    1. Object
      在JS中,除了原始类型,其它的都是对象类型了,对象类型和原始类型不同,原始类型存储的是值,对象类型存储的是地址(指针)。当你创建了一个对象类型的时候,计算机会在内存中帮我们开辟一个空间来存放值,但是我们需要找到这个空间,这个空间会拥有一个地址(指针)。
    	const a = []
    

    假设内存地址(指针)为#001,即表示在内存#001的地方存放了值[ ],常量a存放的是地址(指针)#001。那么如果将a赋值给b,这个过程中究竟发生了什么呢?写个小例子试试:

    const a = []
    b = a
    console.log("a:",a, "; b:",b)         //输出: a: [ ] ; b: [ ]
    b[0] = 1
    console.log("a:",a, "b:",b)           //输出: a: [1] ; b: [1]
    

    b = a好比是a有五斤苹果,但是a并没有将苹果复制五斤给了b,而是将他的苹果地址告诉了b。
    a: 我的苹果在客厅的篮子里,你可以对苹果随意“操作”;
    b: 哦!好的我知道了。
    一个小时后。。。
    a: 我的苹果咋都没了?
    b: 都被我吃完了,哈哈哈哈额嗝!
    a: …
    a将地址给了b,所以b对数组的操作一样会影响到a的值,这又引申出一个概念,深拷贝浅拷贝,下篇博客会做详细的介绍。

    展开全文
  • Redis五种数据类型介绍

    万次阅读 2015-10-30 11:31:24
    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,...字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字
  • 常见的硬盘类型介绍

    千次阅读 2019-07-31 21:56:00
    简介按接口类型分类概述IDESATASCSISASFCSSD参考资料 简介 对于硬盘来说,常见的有以下几种分类方式: 按生产厂家分类 大部分人选择硬盘都是会先看厂家,然后才是容量、材质等信息,常见的硬盘厂家主要有: 希捷...
  • VS2019项目出现"const char *" 类型的实参与 “char *” 类型的形参不兼容错误的解决方法 解决方案一 在VS2019中依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。 解决方案...
  • c++ pair 用法详解

    万次阅读 多人点赞 2017-01-25 10:21:51
    C++pair类型 ...标准库类型--pair类型定义在utility头文件中定义 ...pair包含两个数值,与容器一样,pair也是一种...但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型
  • hive 修改字段类型和增加字段表

    万次阅读 2018-12-04 15:34:13
    Hive 表修改字段类型 Alter table 表名 change column 原字段名称 现字段名称 数据类型   新增字段表 alter table 表名 add columns(字段名 数据类型)    
  • elasticSearch字段类型大全

    万次阅读 2020-09-28 14:12:07
    ES字段类型 核心数据类型 String类型:text、keywork number类型:long,integer,short,byte,double,float,half_float,scaled_float date类型:date boolean类型:boolean binary类型 : binary range类型:...
  • JQuery获取元素的标签类型

    万次阅读 热门讨论 2010-12-03 19:05:00
      如果想看某个元素是什么元素类型,只需要使用:   [object].attr("tagName")便可以知道。  
  • Java八种基本数据类型(图文详解)

    万次阅读 2020-07-02 22:57:53
    Java八种基本数据类型Java八种数据类型Java八种数据类型的分类(图)基本数据类型分为三大类①数值型②字符型③布尔型数值型整数类型(byte,short,int,long)浮点型(float,double)字符型(char)布尔类型(boolean)...
  • C#详解值类型和引用类型区别

    万次阅读 多人点赞 2016-05-17 20:24:39
    首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。 值类型(value type):byte,short,int,long,float,double,decimal,...
  • scala 数据类型体系一览图

    万次阅读 2019-02-19 15:20:20
    scala 数据类型体系一览图 在 scala 中有一个根类型 Any ,他是所有类的父类. scala中一切皆为对象,分为两大类AnyVal(值类型),AnyRef(引用类型),他们都是Any子类. Null 类型是 scalaNull 类型是 scala的特别类型...
  • Java - String是最基本的数据类型吗?

    万次阅读 2019-03-13 21:01:17
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!...除了基本数据类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(r...
  • C++ - string类型转换int类型

    万次阅读 多人点赞 2017-05-13 21:47:23
    string类型转换int类型本文地址: http://blog.csdn.net/caroline_wendyC语言转换形式:... std::string str; int i = atoi(str.c_str()); ...C++转换形式(C++11):... std::string str; int i = std::stoi(str); ......
  • GreenPlum常用数据类型

    万次阅读 2016-01-13 10:39:15
    GreenPlum数据类型
  • 基本数据类和引用数据类型

    万次阅读 多人点赞 2018-08-05 13:24:35
    Java提供了两类数据类型:一种是基本数据(原始类型),一种是引用类型。 数据类型图: 基本数据类型: 注意: 1.在基本数据类型中,除了boolean类型所占长度与平台有关外,其他数据类型长度都是与平台无关的...
  • 从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值 这个varchar格式是没错的,是因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误。 如果类型是“datetime” ...
  • 类型判断 typeof 类型转换 JS 数据类型 通过函数进行类型转换 String Number 之间的想换转换 自动类型转换 目录导航 类型判断 typeof JS 中可以使用关键字 typeof 判断 demo typeof "...
1 2 3 4 5 ... 20
收藏数 7,248,473
精华内容 2,899,389
关键字:

类型