精华内容
下载资源
问答
  • 什么是数据类型

    千次阅读 2017-12-27 14:26:52
    数据类型是固定大小内存的别名
    数据类型是固定大小内存的别名
    
    展开全文
  • C语言中提供了许多的数据类型,...什么是数据类型? C语言为我们提供了int, float等基本数据类型,这些都是表示基本数据用的。然而C语言也为我们提供了复杂的数据类型,比如struct, union等。这些可以由基本数据类型

    C语言中提供了许多的数据类型,如下图所示:

    这里写图片描述

    C语言为什么要引入这么多的数据类型呢?因为C语言归根结底只是一门编程语言,一种让计算机为我们做事情的工具。引入这么多的数据类型是为了更加方便的表现现实世界中事物。

    1.什么是数据类型?

    C语言为我们提供了int, float等基本数据类型,这些都是表示基本数据用的。然而C语言也为我们提供了复杂的数据类型,比如struct, union等。这些可以由基本数据类型抽象组合而成,可以对应现实世界的任何抽象事物,方便我们编写程序。
    那我们怎么去理解数据类型。我们通常用一个数据类型,比如int 去定义一个变量,就像这样:
    int a;
    其实我是这么认为的,就像数学里面的“设”一样,设出一个未知数a,当然我们也可以为它设置初始值。然后我们就可以使用这个a了,因为a是没有但是我们要用到的,所以要先声明。至于要用那种数据类型完全取决于自己的需求。

    2.数据类型的本质是什么?

    其实数据类型的本质就是“固定内存块大小的别名”,为什么这么说呢?
    我们可以做一个测试用例:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        printf("sizeof(int) : %d\n", sizeof(int));
        printf("sizeof(float) : %d\n", sizeof(float));
        printf("sizeof(double) : %d\n", sizeof(double));
        printf("sizeof(long) : %d\n", sizeof(long));
        printf("sizeof(char) : %d\n", sizeof(char));
        system("pause");
        return 0;
    }

    结果:
    sizeof(int) : 4
    sizeof(float) : 4
    sizeof(double) : 8
    sizeof(long) : 4
    sizeof(char) : 1

    从上面的测试来看,各种数据类型的大小都是固定的,我们声明变量的时候就是在告诉编译器我要申请这么大的一块内存,而这块内存的标号就是这个变量的名字。所以变量和内存是两码事,我们是通过变量向内存里边读写数据而不是向这个变量在读写数据。
    学习C语言最重要的就是要搞懂内存的概念,C语言与其他高级语言比如C#,java不同,C语言是弱类型的语言,对数据类型没有那么严格的检查。所以自己要务必分清楚数据类型和变量的关系,往往就是因为概念不清晰而导致BUG。

    展开全文
  • 万剑归宗,到底什么是Java的基本数据类型啊?

    千次阅读 多人点赞 2021-06-14 21:40:52
    经常听人们说Java语言的数据类型分为基本数据类型和引用数据类型。那有人要问了,到底什么是数据类型什么是基本数据类型什么是引用数据类型啊?

    镇楼

    前言

    经常听人们说Java语言的数据类型分为基本数据类型和引用数据类型。那有人要问了,到底什么是数据类型,什么是基本数据类型,什么是引用数据类型啊?

    别急,听二当家的慢慢说。

    注:本文不是单纯的搬运,而是二当家的经验和思想的总结,希望能帮助大家加深理解。

    本文由 二当家的白帽子 https://le-yi.blog.csdn.net/ 博客原创,转载请注明来源,谢谢~



    什么是数据类型

    如果要解释什么是数据类型,那可能先要搞明白什么是数据,从百科引用一下。

    数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
    数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。
    在计算机系统中,数据以二进制信息单元0、1的形式表示。

    百科的解释非常严谨,但可能有点抽象。我再通俗的解释下,这么说吧,计算机里我们看见的,听见的都是数据。说白了,我们用计算机,其实就是用的数据。

    图片,视频,音乐,文档都是数据。

    而数据类型就是数据的类型嘛,我知道我说了等于没说哈,哈哈哈。

    而Java的数据类型其实就是指Java里可以用来定义数据的类型。

    其实二当家的知道来看文的小伙伴都是专业的大佬,肯定知道什么是数据,什么是数据类型,我只是想阐述下我是如何理解的,希望能帮助小伙伴们去更好的理解。

    什么是基本数据类型

    如果计算机里存储的万物都是数据,那么数据就是基本单位喽?就像从化学角度看万物都是元素组成,所以元素的种类对应的就是基本数据类型。

    再比如积木,积木可以拼成各种各样的形状,但是它也有基本单位,而那个最小的几种就是基本数据类型。

    Java语言规定了8种基本数据类型。也就是在Java的世界,只有8种元素,只有8种积木。

    而我们想要用Java语言定义任何复杂数据类型最终都是用基本数据类型组合而成。就像元素组成化合物,积木拼成大的形状一样。

    基本数据类型的种类

    其实这部分内容不是本文的重点,很多文都说过,但是二当家的还是也说说吧,说的不好的地方,小伙伴敬请谅解。

    1. 整型

      byte 、short 、int 、long

    2. 浮点型

      float 、 double

    3. 字符型

      char

    4. 布尔型

      boolean

    数据类型 占用字节 默认值 取值范围
    byte(字节型) 1 0 -128 ~ 127
    short(短整型) 2 0 -32768 ~ 32767
    int(整型) 4 0 -231 ~ (231) - 1
    long(长整型) 8 0l -263 ~ (263) - 1
    float(浮点型) 4 0f 3.402823e+38~1.401298e-45
    double(双精度浮点型) 8 0 1.797693e+308~4.9000000e-324
    char(字符型) 2 \u0000 各种unicode字符
    boolean(布尔型) 视情况而定 false true,false

    注:

    1. 其实JVM标准里并没有规定boolean实际占用几个字节,但是它本身只有2个值,用一位就够了。然而操作系统想要定位内存,最小也只能按照字节寻址,所以你就算只需要1位就够了,但是实际占用至少也得是1个字节,具体占多少可以由虚拟机实现决定,我觉得大家应该基本都是占了一个字节,不能少,多了没必要。

    2. 局部变量是没有默认值的

    3. 上面的这些类型就是Java语言里可以用来存储业务数据的全部类型了。

    什么是引用数据类型

    引用就是内存地址,就像我们现实的地址一样。

    我用积木拼了一栋大楼,我现在需要装修师傅帮忙装修,我有两种办法,一种是把大楼带到师傅面前,还有一种是我把大楼的地址给师傅,让他过来。

    内存有一个特点,就是访问任何位置的速度是一样的。你可以认为没有路程花费,这一点和现实是有区别的,你就当做是时空穿梭吧。但是拷贝内存数据,写数据却是实打实的要花费时间的。所以内存里的数据,尤其是大块的内存,通常都是传递地址,进行程序逻辑,因为这样快,而且所有程序逻辑修改的都是同一份数据,这也恰好符合一般的程序逻辑。

    讲的深入一点,调用方法的时候,方法参数都是利用栈去传递的,进入方法前分配空间,方法结束后回收空间,这部分空间的生命周期和方法调用周期一致,换句话说,你调用完某个方法,它的参数和返回值就都被销毁了,你要是想要留着,就得搞一份副本,或者说拷贝,所以如果你是直接把房子搬到师傅面前,那么师傅处理完房子后,你得根据师傅装修的房子,原样自己装修一把,也就是拷贝。但是这样的事情在Java里不会发生,因为Java里除了基本数据类型外,其他数据类型的参数传递和方法返回,都是用的引用,也就是地址。作为调用方,如果是参数,那么传递给被调用方法的参数本身就是一份地址拷贝,所以调用方自己那里肯定有一份源地址,而如果是方法的返回值,那么你就得接收,否则方法返回值就被销毁了,也就无法再去访问方法返回值了。

    另外对于实例方法,修改实例属性,其实是编译器会把实例的引用传递进去,名称就是“this”。

    在Java的世界里除了基本数据类型外,剩下的数据类型都是引用数据类型。

    引用数据类型的种类

    人们普遍认为Java引用数据类型有三种:数组,接口,类。

    当我们定义引用数据类型的变量时,只需要能放下地址的空间,至于它里面实际存了什么,我们需要寻址过去,里面可能继续是引用类型,或者存储真实数据的基本数据类型。

    尾声

    真正有用的业务数据都是存在基本数据类型的,而复杂数据类型,是用来整合数据的。

    复杂数据类型里包含基本数据类型的属性,引用类型的属性,还有就是逻辑方法了。基本数据类型是真正存放数据的,而复杂数据类型,自定义数据类型,引用数据类型,其实就是容器,盒子,箱子,它把一些基本数据类型的数据整合到一起,划分到一组,来协同作用,逻辑则是对数据的一系列操作。

    所以大神曾说过程序就是数据加上逻辑。

    展开全文
  • JS数据类型之基本数据类型

    万次阅读 多人点赞 2019-06-28 16:46:43
    一、数据类型简介: 1.JavaScript(以下简称js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型); 2.js常用的基本数据类型包括undefined、null、number、boolean、string; 3.js的...

    一、数据类型简介:

    1.JavaScript(以下简称js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型);

    2.js常用的基本数据类型包括undefined、null、number、boolean、string;

    3.js的引用数据类型也就是对象类型Object,比如:Object、array、function、data等;

    二、基本数据类型特点:

    1.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值;

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

      let name = 'zhangsan'
      name.substr()
      console.log(name) // 输出:zhangsan
      let age = 'firstblood'
      age.toUpperCase()
      console.log(age) // 输出:firstblood

    通过上面的例子,我们可以发现原来定义的变量name的值始终没有发生改变,而调用substr()和toUpperCase()方法后返回的是一个新的字符串,跟原来定义的变量name并没有什么关系。

    再看下面的代码:

      let name = 'zhangsan'
      name = 'lisi'
      console.log(name) // 输出:lisi

    上面的例子看来name的值好像“改变了”,这里的基础数据类型是string,也就是“zhagnsan”,这里的“zhangsan”是不可以改变的,name只是指向“zhagnsan”的一个指针,指针的指向不可以改变,所以下面的name = 'lisi',将name指向了“lisi”,这里的“lisi”也是不可以改变的。也就是说这里的改变只是“指针指向的改变”。

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

      let user = 'zhangsan'
      user.age = 18
      user.method = function () {
        console.log('12345')
      }
      console.log(user.age) // 输出:undefined
      console.log(user.method) // 输出:undefined

    上面的代码可以看出,基本数据类型是不能添加属性和方法的,再次说明基本数据类型是不可变的。

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

      let a = 18
      let b = a
      a++
      console.log(a) // 输出:19
      console.log(b) // 输出:18

    上面的代码,a中保存的值是18,当使用a的值来初始化b时,b中也保存了值18,但是b中的18和a中的18完全是独立的,b中的值只是a中值的一个副本,所以这两个变量可以参与任何操作而不会相互影响。

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

      var a = '{}'
      var b = '{}'
      console.log(a === b) // 输出:true

    6.基本类型的值在内存中占据固定大小的空间,被保存在栈内存中。(从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本);

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

      let name = 'zhangsan'
      let age = 18
      let weight = '60kg'

    他的存储结构如下图(栈区包括了变量的标识符和变量的值):

    三、基本数据类型详解:

    1.number类型

    ①number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后至少有一位数字)。

    浮点数会自动转换为整数,如下:

      let num = 1.00
      console.log(num) // 输出:1,自动转换为了整数

    ②浮点数的最高精度是17位,看下面的例子:

      let a = 0.1
      let b = 0.2
      console.log(a + b) // 输出:0.30000000000000004

    上面的例子,结果竟然不是0.3,至于其他变成语言,也会遇到这种情况(关于浮点数计算会产生误差问题,其他有些变成语言也会出现类似情况。)

    ③NaN:非数字类型,特点:涉及到任何关于NaN的操作,都会返回NaN,而且NaN不等于自身。如下:

      let name = 'lisi'
      console.log(name / 10) // 输出:NaN
      console.log(NaN === NaN) // 输出:false

    ④isNaN()函数用于判断是否是一个非数字类型,如果传入的参数是一个非数字类型,那么返回true,否则返回false;

    ⑤isNaN()函数传入一个参数,函数会先将参数转换为数值,如果参数类型为对象类型,会先调用对象的valueOf()方法,再确定该方法返回的值是否可以转换为数值类型,如果不能,再调用对象的toString()方法,再确定返回值;

    ⑦数值转化:

    Number(),转型函数,可以用于任何数据类型

    parseInt(),将值转换为整型,用的较多

    parseFloat(),将值转换为浮点型

    2.string类型

    ①字符串类型中的单双引号作用一样;

    ②字符串有length属性,可以取得字符串的长度:

      let str = 'Hello world'
      console.log(str.length) // 输出:11

    ③字符串的值是不可变的,要改变一个字符串的值,首先要销毁原来的字符串,再用另一个包含新值得字符串区填充该字符串;

    ④字符串转换:

    String(),转型函数,适用于任何数据类型(null,undefined转换后为null和undefined)

    toString()方法可以把一个逻辑值转换为字符串,并返回结果(null、undefined没有toString()方法)

      let ab = 'zhangsan'
      let bc = null
      let cd = undefined
      console.log(ab.toString())  // 输出:zhangsan
      // console.log(bc.toString())  // error 报错
      // console.log(cd.toString())  // error 报错
      console.log(String(ab))  // 输出:zhangsan
      console.log(String(bc))  // 输出:null
      console.log(String(cd))  // 输出:undefined

    3.boolean类型

    ①这个类型只有两个值,true和false;

    ②Boolean(),转型函数,将某个值转换为Boolean类型

    4.null类型

    ①null类型被看做空对象指针,只有一个值,即null值,所以在用typeof操作符去检测null类型的值得时候,结果是object类型;

    ②如果你定义了一个变量,但是想在以后把这个对象当做一个对象来使用,最好将该对象初始化为null值

    5.undefined类型

    ①只有一个值,即undefined,如果声明了一个变量,但是未给变量初始化值,那么这个变量的值就是undefined:

      let name = 'zhangsan'
      let age
      console.log(name) // 输出:zhangsan
      console.log(age) // undefined,因为声明了age,但是没有给初始化值

    ②调用函数时,应该提供的参数没有提供,该参数等于undefined;

    ③对象没有赋值的属性,该属性的值为undefined;

    ④函数没有返回值,默认返回undefined。

     

     

     

    参考文章:

    https://mp.weixin.qq.com/s/YMpKnUUKPPIG6FD6CGzfTg  

    http://www.jb51.net/article/101341.htm

    展开全文
  • 1.泛型的定义:在程序中我们将一个...2.泛型要求包容的是对象类型,而基本数据类型在Java中不属于对象。但是基本数据类型有其封装类,且为对象类型。 3.想放int类型,要放Integer类型不能直接放int(基本数据类型...
  • PVOID是什么数据类型

    千次阅读 2018-06-16 15:56:27
    PVIOD 一个普通指针类型等价于(viod *)还有一些对你有用win api 编程中的数据类型很多,有没有人能 具体讲讲啊?CALLBACK 在应用程序的回调例程中取代FAR PASCALHANDLE 一个32位的无符号整数,用作句柄HDC 设备...
  • Java数据类型

    万次阅读 多人点赞 2019-09-29 00:12:35
    文章目录定义分类计算机存储单元Java基本数据类型数据类型转换 定义 Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。 分类 基本数据类型 数值型 ...
  • 什么是POD数据类型

    千次阅读 2017-08-19 18:44:46
    *在之前的vector扩容问题源代码剖析中,发现源码中对数据类型进行了是否为POD类型的检查,这篇就看看什么是POD。。。→_→*
  • 数据类型 c++从广义上根据量的值是否可变,可分为常量和变量两种数据类型。 C++根据数据复杂程度,划分为基本数据类型和构造数据类型这两大类。 其中,基本数据类型包括:整型(short,int,long)、实型(又称浮点型...
  • Java 数据类型(基本数据类型、引用数据类型)

    千次阅读 多人点赞 2013-12-11 23:40:11
    Java 数据类型(基本数据类型、引用数据类型) 简单的介绍
  • Python数据类型有哪些,哪些是可变类型,哪些是不可变类型? 类型: 整数int 字符串str 浮点数float 布尔型bool 列表list 字典dict 集合set 元组tuple 可变类型:就是这个数据类型的值在不改变这一块内存空间,而去...
  • uint8_t是什么数据类型 在C的扩展语言中,你会看到很多你不认识的数据类型,比如uint8_t,in_addr_t等。但这些并不是新的数据类型。   _t的意思到底表示什么? 它就是一个结构的标注,可以理解为type/typedef的...
  • javascript中基本数据类型和引用数据类型的区别1、基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型。 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成...
  • python不支持的数据类型什么

    千次阅读 2019-12-27 01:59:23
    python不支持的数据类型什么? python不支持的数据类型是char 、byte类型。Python没有char或byte类型来保存单一字符或 8 比特整数。你可以使用长度为 1 的字符串表示字符...
  • JS数据类型之引用数据类型

    千次阅读 2019-06-28 16:46:51
    1、引用数据类型也就是对象数据类型object,比如:object、array、function、data等; 2、引用类型的值可以改变: let person = {name: 'lisa'} person.name = 'Jane' // 通过修改对象属性值更改对象 console....
  • MySQL数据类型详解

    万次阅读 多人点赞 2018-08-13 16:40:22
    上一篇博客中我们学习了MySQL的基础知识以及表结构的相关操作,知道了MySQL中常用的数据类型有数值型、字符串型、日期时间类型 下面我们来使用一下这些数据类型。 数值类型 首先数值类型分为整型和浮点型 我们...
  • Integer 数据类型

    千次阅读 2018-01-20 22:19:50
    Integer 数据类型 简介 JavaScript 所有数字都保存成 64 位浮点数,这决定了整数的精确程度只能到 53 个二进制位。大于这个范围的整数,JavaScript 是无法精确表示的,这使得 JavaScript 不适合进行科学和金融...
  • Impala数据类型

    万次阅读 2017-10-20 14:59:08
    数据类型及说明 BIGINT 此数据类型存储数值,此数据类型的范围为-9223372036854775808至9223372036854775807.此数据类型在create table和alter table语句中使用。 BOOLEAN 此数据类型只存储true或false值,它...
  • MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的。一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型...
  • 数据类型:  undefiend 没有定义数据类型  number 数值数据类型 例如 10或者1或者5.5  string 字符串数据类型用来描述文本 例如 "你的姓名"  boolean 布尔类型 true|false 不是正就是反,是或者否,有或者...
  • Vivado HLS数据类型数据类型转换

    千次阅读 2020-05-25 19:40:42
    Vivado HLS数据类型与C语言的基本数据类型稍微有些不同,由于FPGA所需要的数据类型可能是任意bit的,而C语言则是以8bit为单位的,所以如果继续沿用C语言的数据类型,会在利用C语言开发FPGA时造成资源的极大浪费。...
  • Java引用数据类型String详解

    万次阅读 2020-07-02 23:54:44
    Java引用数据类型(String)引用数据类型概述引用数据类型与基本数据类型的差别(举例说明) 引用数据类型概述 说到引用数据类型,那么何为引用数据类型? 引用类型,都可以用null值作为值,也就是说可以在初始化的...
  • python中不可变数据类型和可变数据类型

    万次阅读 多人点赞 2019-05-29 17:43:15
    不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存...
  • python可变数据类型和不可变数据类型

    千次阅读 多人点赞 2019-01-06 23:44:46
    有很多人在刚开始接触 python 这个语言的时候,总是搞不清楚什么是 可变数据类型 什么是 不可变数据类型,今天就让我们通过这篇小文章来详细了解一下。 知识点目录: 1.python 的数据类型 2.可变数据类型 和 不可...
  • float数据类型及double数据类型整理

    万次阅读 2017-02-15 21:27:06
    float数据类型及double数据类型内存存储及精度分析;
  • Java List: 列表是什么数据类型,怎么用? 偶然发现容器类的结构在很多代码中越用越多。故,有意识开始整理。方法上觉得:用Java来了解和运用。然后用C++来实现和掌握最为便捷有效。 1 List array vector set 都...
  • Mysql数据库中数据类型的长度是什么

    万次阅读 2017-07-30 16:18:09
    在mysql中新建数据表的时候会有长度一说,其实用建表语句建数据表的时候也有涉及 ...不知道你有没有注意这个数据类型后面的括号有什么玄机,今天看了《Mysql 5.6 从零开始学》这本书,算是把这个地方搞清
  • JAVA基本数据类型与引用数据类型

    万次阅读 多人点赞 2016-11-09 09:30:34
    基本数据类型 对象类型 在栈中进行分配 在堆中进行分配 基本类型之间的赋值是创建新的拷贝 对象之间的赋值只是传递引用 “==”和“!=”是在比较值 “==”和“!=”是在比较两个引用是否...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,689,803
精华内容 2,275,921
关键字:

什么是数据类型