基本数据类型

编程语言类型详解
本文详细介绍了多种编程语言(包括Java、C、C++、PHP、Python、JS、Objective-C和Swift)的基本数据类型、类型转换、常量和引用等概念,并对比了强类型与弱类型语言的特点。

       突然想写博客了,因为学的东西比较杂,而且忘性又是一流的好,笔记也是乱糟糟的,所以总是学了忘,用到了又总是掘地三尺找不到 写博客至少工整一点,为以后查找方便,如果能够对别人有点小帮助,那就更好了,不过本人也只有小学学历,我写的只能耐着性子看了,如果有错误和不好的地方,希望能够指正

       本文及之后的内容 主要是总结一下本人所学过编程语言的基础部分


编程语言有强类型与弱类型之分:主要区别在变量类型检查的严格程度

强类型语言中变量是不允许改变类型的,但是弱类型语言中变量的类型却可以随具体情况而定,许多脚本语言是弱类型

ps:刚百度下还有个无类型 搜了一下 没找到结果

另ps:强类型语言有强制转换,转换的是变量的值的类型,而不是变量的类型


1 java

1.1 基本类型

java的数据类型在强语言中是蛮标准的,分别是:

byte:   [-128, 127]  是最小的整数类型。主要用于节省内存空间关键。主要用作 网络、文件或者其他IO的数据流

short  [- 2^15, 2^15 - 1]   不太常用

int      [- 2^31, 2^31 - 1]

long  [- 2^63, 2^63 - 1] 默认为0L  如果long放不下的整数用BigInteger

char  [0, 2^16 -1]  无符号,默认值为'\u0000',char类型可以参与整数运算

float   32位的单精度浮点数

double 64位将浮点子面子赋给某个变量时,如果不显示在字面值后面加f或者F,则默认为double类型  如果double放不下的浮点数用BigDecimal

boolean 只有true  false 没有其他可能

1.2 字面量

1.2.1 整形字面量

二进制:加前缀0B     0B11转为十进制为3   1.7之后版本才有

八进制:加前缀0       011转为十进制为9

十六进制:加前缀0X

float:加后缀F

double:后缀D

long:后缀L

1.2.2 字符字面量

转义字符用 \ 表示,可以使用八进制\ddd或十六\xxxx进制表示字符,如'a'的十进制为97,转为八进制为141  十六进制为61 则'\141','\u0061'都为'a'  还有\r  \t等等

1.3 类型转换

基本类型的顺序为:byte <(short=char)< int < long < float < double

1.3.1 自动类型转换

1.3.2  强制类型转换

如果将大的数据转为小的 则需用强制转换,需要注意的是如果强制转换超出存储范围,得到的将是错误的数据,浮点数强转会丢失精度

1.4 常量

在java中定义常量用final关键字,不过一般为调用方便,会加个static

ps:final修饰的基本类型的值不可变,修饰的引用类型变量的引用不可变,但是引用变量的内部的值是可以变得

1.5 自动装箱、拆箱

将基本类型与封装类型自动转换,如 Integer i=5;    int j=i;

最后附上java类型的图



2 c

2.1.基本类型

c语言也是强类型语言 也是char、byte、short、int、long、float、double

但是c中有有符号类型singed和无符号类型unsinged之分,而且基本类型的长度是根据系统而定的,他们之间的大小规则为长整形至少和整形一样长,整形至少和短整形一样长  <c和指针>中有说各类型的最大最小值在limits.h中有定义

sizeof也可以查看

另外,c语言中的bool为非0即真

枚举类型 enum a{CUP,PINT=10,HALF};    枚举中的值表示符号常量

指针类型  如int *a;

2.2 typedef   #define

typedef关键字可以重新定义一个方便使用的别名,类似#define,但是他是由编译器解释

#define没有类型检查 只是做替换工作

一般推荐使用typedef创建新的类型名

2.3 const

c中定义常量 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有存储与读内存的操作



3 c++

3.1 基本类型与c类似

3.2 引用

引用是变量的别名,对引用的操作与对变量直接操作完全一样 形如int a=123;   int &b=a;    改变b的值,a也会改变


4 php

4.1   数据类型

php是弱类型语言  有八种类型

boolean 只有true和false

string     字符串类型  字符串用单引号和双引号是有区别的

integer   整形

float      (也称作double) 浮点型

array     数组

object    对象

resource  资源类型

null       空值

php定义变量一个万能的$就可以

php如果需要转换类型 可以用强制转换  如:$a=123//整形   $b=(string)$a;//此时 $b就是字符串类型,还可以用settype函数

如果需要确定变量的类型 可以使用 is_xxx  进行检测,如is_int($a);

4.2  常量

常量有define和const,他们的区别还是蛮大的,具体的百度一下吧

此外 php还预定义了一些常用的常量 如__FILE__,__LINE__

4.3  引用

类似c++中的引用 但是一般使用频繁或者大的对象的时候用

4.4   全等

比较数据类型相等且值相等 如"5"==5  //true       "5"===5 //false   许多弱类型语言都有这个


5 python

python的语法算是比较特殊的了 变量直接赋值就可以  而且函数的大括号被缩进替代

5.1 数据类型

整形有int,long,float,complex

布尔类型只有true和false

字符串类型   有单引号 双引号 三引号(类似php的<<<)  python中字符串可以通过下标获得

列表  类似数组  list=['1','2','3']

元组   类似列表 但是元组的值是不能改变的 list=('1','2','3')

字典   键值对  dict= {'name': 'john','code':6734}

日期

5.2  类型转换

有专门的函数调用 如:float(x) 将x转为float类型


6 js

js定义变量用一个通用的var   如 var a=123;

js提供了typeof检测变量的类型     instaceof确定一个对象是类的实例、类的子类,还是实现了某个特定接口

undefined  var声明的变量未初始化是 变量的值即undefined  主要用于判断

null             空对象指针

boolean      js中Boolean的值根据具体请而定,

number      数字类型 包括整形 浮点型

string         字符串

array          数组

object        对象类型 


7 object-c 

7.1 基本数据类型

oc是c的扩展 所以有一些数据类型与c一样 int、short、long、float、double、long double、char

oc特有的类型

id  类似c的void *

BOOL

SEL  选择器类型

Class 类类型

nil  Nil   空对象


8 swift  一种强类型静态语言

声明变量用var   常量 let

8.1

swift的基本类型有Int Int8 Int16Int32Int64和UIntxx   浮点型有Float和Double  布尔型Bool  字符串String 字符型Character

可选类型用var a?等同var a:Optional<type>   一种安全机制  如果必选 则var a!

元组  let a=(1,2,3);   可以带键

8.2 别名

typealias short=Int8;    类似c的type

8.3 强制类型转换

用类型的构造 如Int(12.3)

8.4 断言

assert


总结:

好多人说编程语言一通百通,虽然不全对 但是还是很有道理的 最起码有很多相通的地方,基本类型都差不多,只不过语言对基本类型的精度不同,通过对比,或许更能了解各种语言的差别


第一次写 有点混乱 而且很多都是边找书边写的 应该漏了不少东西 基础果然忘了好多  初学还是不要看了 免得误导










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值