对于产品经理这一综合性职能来说,具备一定的技术知识,不论是在与工程师工作的配合中,还是在对技术产品的理解上,都能起到非常大的帮助作用。
本文选自《产品经理必懂的技术那点事儿》,我们简单聊聊非技术型产品经理需要了解的编程语言中的数据类型。
说产品经理学编程并不是真的让产品经理去学习如何写代码,而是让产品经理通过了解编程的基本原理,知道产品背后的程序逻辑是如何处理的。
工程师是一类理性和逻辑思维较强的个体,对于产品经理来说,首先需要做的就是能听懂工程师所说的话,在实际工作中来看,工程师在和产品经理配合的过程中,使用最多的就是技术语言。
如果你是技术人员,那么本文对你的帮助不大,但也可以跟着小编继续回顾一下这些知识点~
◆ ◆ ◆ ◆ ◆
那么进入本文正题,编程语言中的那些数据类型。
数据类型是用来在计算机世界中区分和表达数据载体的规则,数据类型是一种对数据的约束,每一种数据都有一种且唯一一种数据类型,数据类型代表编程语言中的最基本规则。介绍完什么是编程语言及几种主流的编程语言后,我们来看一下编程语言中的基本数据类型。“数据”是计算机世界中的基本单元,一张图片是一个数据,一个文字也是一个数据。如下图所示,一个基本的数据单元主要由几部分构成,分别是数据类型、数据名称和数据值。数据的名称也叫变量名,每一个变量都有对应的数据值,这部分内容我们会在接下来的章节里介绍。
每一门编程语言都有自己的基础语法,就像我们学外语需要掌握语法一样。编程语言是和计算机进行沟通的语言。计算机要理解程序的意思,首先就得从数据类型开始,数据类型好比我们说话用的单词的意思,计算机需要理解我们传递了什么信息。
另外就是语法结构,好比我们说的单词需要以什么样的顺序和方式被组织起来,不同的外语有不同的语法规则,也有不同的单词,例如表示苹果这一物体,中文里叫“苹果”,但英文里叫“apple”,中文的主谓语顺序和英语中的也略有差别。同理,在编程语言中也会有不同的语法规则和不同的关键字。我们先看一下编程语言中的基本数据类型。
1 表示整数的“整型”
在产品中,我们通常会在需要计算一些数值时使用到整型,比如需要统计通讯录有多少人时,需要声明一个整型变量来记录通讯录项目总数,而且这个变量是可以持续累加进行计算的。
整型是一种数字类型,所有的不带小数点的数字都属于整型,在编程语言中,用关键字int 来表示整型。关键字是编程语言中一种约定存在的表示一定具体意义的形容词,关键字一般都是固定存在的,就好比语言中的一些固定词语。int 实际上就是英文integer 的缩写,表示整数的意思。在不同的编程语言中,表示整型数据的关键字会略有不同,但大部分都是用“int”来表示整型数据。在程序中,我们可以给一个变量取一个名字,然后声明这个变量为整型,例如“int a = 10”,这是一个基本的程序语句,里面有几个关键字符号,从左到右,首先是“int”,说明这个数据类型被我们声明为整型,也就是整数类型,然后是“a”,这是我们随便取的名字,我们还可以叫x 或者y 都行,再往后就是“=”,这个“等号”其实是赋值号,代表的意思是,将“10”这个整数赋值给变量“a”。至此,我们就写完了一个最简单的程序语句。同时,整型是可以被用来进行数学计算的,例如我们可以将两个整数进行加减乘除的数学计算,“int a = 1;int b = 2;int c = a + b”,在这条程序语句中,最终变量“c”的计算结果是“3”。下图所示为三个数据单元,数据的名称也就是变量名分别是a、b、c,名称后面对应的是数据类型和数据的值,这也表示了所有类型数据的基本格式。
例如,我们还可以写一个声明整型的程序语句,“int x = 1024”,这句程序的意思就是我们声明了一个整型的变量“x”,并且赋值为整数1024。对于变量的取名也有一定的规则,例如我们可以取名为“a”和“x”,但我们不可以用一些特殊符号来命名变量,不能使用“%”或者“$”类的符号作为变量名,规范的变量取名一般是字母或者下画线开头,中间和结尾也可以是字母数字或者下画线,比如“a1”、“_a”、“a1_”都是合法的变量命名。
2 表示文本的“字符型”
字符型是一种文本类型,字符型的内容没有规则限制,可以是任意内容。在不同的编程语言中,表示字符型的关键字略有不同。例如在Java 语言中,我们使用关键字String 表示字符型数据;在C 语言中,字符型使用关键字char 来表示;在Objective-C语言中用NSString 表示字符型数据。使用哪一种关键字取决于各编程语言自身的特点,就好比使用不同国家的语言来表示“苹果”这个意思,说法不一样但本质其实是一样的。字符型数据一般会用引号表示该数据属于字符型,例如“hello”就是一个字符类型的数据,表示一个单词,也可以是“hello world”,表示一句话,中间的空格也算是这个字符型数据的一部分。如果字符型数据的内容是数字,比如“1024”,这时候并不代表是整数,而就是一个字符型数据。也就是说,字符型的“1024”并不具备数学意义,不能用来做计算。
字符型的数据在我们设计产品的过程中其实使用得最多,我们在产品界面上展示的所有信息在程序里都是以字符型的数据类型展示的。例如,我们在用户登录界面会看到用户名和密码的文字,这些都是以字符型的方式显示在界面上的,如果我们在用户名和密码的输入框中输入一些内容,那这些内容也是以字符型的数据被程序读取,然后做进一步处理。
再比如,我们在电商产品的购物车中填写购买商品的数量时,填写的是具体的数字,但是程序读取出来的实际上是字符类型,如果需要对购买商品的数量做进一步计算,比如要统计总共买了几件商品,那就需要将字符型的数据转换为整型,然后再做计算。在产品设计中,我们会定义某一个输入项的输入类型是文字还是数字,这是产品层面的定义,比如产品层面会定义购物数量是输入数字,但在程序里面,从这个输入框获取的内容却是字符型的,如果需要对这个值进行数学计算,则需要先将这个字符型的数值转换成整型数据。关于数据类型间的转换,我们会在后面章节做具体介绍。可以说,字符型是使用最广泛的一种数据类型。
3 表示小数的“浮点型”
浮点型也是一种数字类型,与整数型相比,浮点型的数据都是带小数点的数据。在编程语言中,一般使用float 或者double 标记浮点型数据。对于产品经理来说需要理解的是,虽然都是数字,但是整数和带小数点的数在程序里面是分别用不同的数据类型声明和表示的。了解这些基本数据类型后,在设计产品或者与技术人员沟通的过程中就可以对数据类型这一项做到心中有数了。
和前两种数据类型一样,在不同的编程语言中,表示浮点型的关键字也会根据编程语言的特点略有差别,但本质上都代表一类有小数点的数字类型。还是以Java 语言为例,我们可以声明一个浮点型的变量“float a = 1.5”,跟之前声明变量的方式一样,现在变量“a”的数据类型就是浮点型。与此同时,我们将数值“1.5”赋值给变量“a”,浮点型和整型一样,都是有数学意义的,也就是说可以被用来进行计算。例如,我们可以让两个浮点型的数相加,“float a = 1.5;float b = 1.5;float c = a + b”,这时候变量“c”的计算结果就是“3.0”,就算相加出来的结果是一个整数,但是因为声明变量“c”是浮点型,所以结果也是带小数点的浮点型。
在产品设计中,我们也会使用到浮点型,例如在填写体重的时候,我们可以输入“60.5”这样的数值来表示公斤,在一些专业型的工具产品中,我们会输入一些带小数点的数来设置一些参数,这时都会使用到浮点型。当然,如前文所说,在界面上获取的其实都是字符型,只是我们在程序里面将字符型转换为了浮点型。
4 表示是非判断的“布尔型”
布尔型是一种特殊的数据类型,布尔型的数据只有两种值,即“true”和“false”。“true”对应的序号是1,“false”对应的序号是0。布尔型变量的赋值只能是“true”或者“false”,一般用来做标记位使用,反映现实世界里的真假判断。在编程语言中,一般用关键字“boolean”或者“bool”表示和声明布尔型数据。例如,我们可以声明一个布尔型的变量“boolean a = true”或者“boolean b = false”,变量“a”和“b”的值只能是“true”或者“false”之一。
在产品设计中,我们经常会在流程设计里使用到布尔型。例如,如果用户在注册时需要同意一个注册协议,注册协议旁边往往有一个可以勾选的小框,勾上视为同意,不勾视为不同意。
在程序实现中,我们可以使用布尔型的数据对这个操作进行记录。例如,我们可以设置一个变量来记录这个操作,“boolean isSelected = false”,我们声明了一个变量名字叫“isSelected”,然后给它初始赋值为“false”,即设定默认是没有勾选的,如果用户在注册时将勾选项选上,我们就可以将这个变量的值修改为“true”。布尔型在程序设计中使用得比较多,主要用于控制流程或者做一些特殊标记。
5 数据类型间的转换
前面我们提到了编程语言中三种最常见的数据类型,分别是整型、字符型和浮点型。除了这三种基础类型之外,还有一些其他类型,例如长整型、单精度浮点型和双精度浮点型,这些都是基于基础数据类型的其他数据类型,它们一起构成了程序的数据基础。前文提到数据类型间的转换,例如我们从界面上获取的整型数据输入实际上首先得到的是字符型。这时,我们就需要将字符型转换为整型,在大部分编程语言中,都会有对应的工具来进行数据类型转换。例如,我们获取到购物车商品的数量,从界面上获取的值的数据类型是字符型的“10”,这时的“10”是不能直接进行数学计算的。如果我们要将商品的单价乘以商品数量,必须先将字符型的“10”转换为整型的“10”,转换成整型数据类型后,就具备了数学计算的能力。同理,我们也可以将字符型的数据“1.5”转换为浮点型的数据进行数学计算。反过来,我们也可以将整型或者浮点型的数据转换为字符型,数字类型的数据转换为字符型后就不具备数学计算意义了。
需要注意的是,如果字符型数据不是数字而是其他字符,比如“a”,这时将字符型转换为整型的话,得到的结果是“a”在ASCII(American Standard Code forInformation Interchange,美国标准信息交换代码,是基于字母的一套编码系统)中对应的具体数值,实际上就是字母“a”对应的二进制代码,也就是一串由0 和1 组成的代码。在计算机的世界里,所有的数据最终都是由0 和1 表示的,我们所编写的程序语言最终被解析编译后都会还原成计算机能识别的机器码。简单说,计算机真正认识的其实都是由0 和1 组成的各种序列,这些序列的顺序和组合及长度各不相同。
6 数据拼接
在编程语言中,数据拼接一般是字符型数据间的拼接,拼接后的字符型数据统称为字符串,字符串的内容可以表达任何内容,字符串简单来说就是一串文本。如前文所说,“1024”是一个文本,也就是一个字符串,并不是数学意义上的1024,字符串能表达的内容非常多,字符串的内容既可以是数字也可以是小数或各种符号。
在产品设计中,我们经常使用到数据拼接,例如要设计一个功能展示有多少人参与了活动,文本会设计成“目前有人参与了本次活动”,这句话在程序里是以字符型的数据类型存储的,整个字符串中间关于多少人的部分是变量,也就是说这里的数字是会动态变化的,在编程语言中,该如何实现呢?其实很简单,我需要用到数据拼接,以Java 语言为例,第一种是我们先将“目前有”这个字符串用变量“a”表示,将后面的“人参与了本次活动”这个字符串用变量“c”表示,中间的数字我们在程序中获取时是整型数据,先将整型转换为字符型然后用变量“b”表示。这时,我们通过“String s = a + b + c”这条程序语句就可以实现字符串数据的拼接,从而实现这个功能。
在进行产品设计时,如果某个功能涉及固定字符和动态字符的组合,就要考虑数据拼接了。
如果产品经理在产品设计过程中能对那些属于动态数据的部分做特殊标记,那么工程师一定刮目相看。
上图是上文提到的活动参与人数统计的例子,其中人数部分是动态变化的,数字前后的文字都是静态的。如果在产品设计图中能清晰地把动态变化的部分标记出来,就能明确地提示工程师在开发时需要特别注意,也降低了产品经理额外说明和解释的沟通成本。
本文选自《产品经理必懂的技术那点事儿》。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。