之前,对于这些比较基础的东西,都不会刻意去记,觉得往上一大堆,要用到的时候网上查一下就完了,后来发现当有人问你你答不上来,要去网上查一下的时候,还是有些尴尬的,所以整合一下,没事干的时候看一看,记一记,对自己也会有帮助,以下内容摘自网络,整理了一下自己觉得说的比较清晰的,分享给大家:

一.java基本数据类型范围

在JAVA中一共有八种基本数据类型,他们分别是 

byte、short、int、long、float、double、char、boolean 

整型 

其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 

byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 

short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) 

int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 

long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

浮点型 

float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同 

float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 

double 1.797693e+308~ 4.9000000e-324 占用8个字节 

double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。 

浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。 

boolean型(布尔型) 

这个类型只有两个值,true和false(真和非真) 

boolean t = true; 

boolean f = false; 

char型(文本型) 

用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容 

字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1, 

char c = ' 1 '; 

我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0); 

结果却变成了49。 如果我们这样定义c看看 

char c = ' \u0031 ';输出的结果仍然是1,这是因为字符'1'对应着unicode编码就是\u0031

二.mysql数据库数字类型的存值范围

mysql整型bigint、int、mediumint、smallint 和 tinyint的语法介绍,如下:

1、bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到18446744073709551615。一位为 8 个字节。

2、int

一个正常大小整数。有符号的范围是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字),无符号的范围是0到4294967295。一位大小为 4 个字节。int 的 SQL-92 同义词为 integer。

3、mediumint

一个中等大小整数,有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 一位大小为3个字节。

4、smallint

一个小整数。有符号的范围是-2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据,无符号的范围是0到65535。一位大小为 2 个字节。MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

5、tinyint

有符号的范围是-128 - 127,无符号的范围是 从 0 到 255 的整型数据。一位大小为 1 字节。

MySQL中各数据类型的取值范围 :unsigned表示无符号,需要注明,默认是有符号的

TINYINT 
-128 - 127 
TINYINT UNSIGNED 
0 - 255 
SMALLINT 
-32768 - 32767 
SMALLINT UNSIGNED 
0 - 65535 
MEDIUMINT 
-8388608 - 8388607 
MEDIUMINT UNSIGNED 
0 - 16777215 
INT 或 INTEGER 
-2147483648 - 2147483647 
INT UNSIGNED 或 INTEGER UNSIGNED 
0 - 4294967295 
BIGINT 
-9223372036854775808 - 9223372036854775807 
BIGINT UNSIGNED 
0 - 18446744073709551615 
FLOAT 
-3.402823466E+38 - -1.175494351E-38,0,1.175494351E-38 - 3.402823466E+38 
DOUBLE 或 DOUBLE PRECISION 或 REAL 
-1.7976931348623157E+308 - -2.2250738585072014E-308,0,2.2250738585072014E-308 - 1.7976931348623157E+308 
DECIMAL[(M,[D])] 或 NUMERIC(M,D)

由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和D(小数点右边的位数)来决定,M缺省为10,D缺省为0 

DATE 
1000-01-01 - 9999-12-31 
DATETIME 
1000-01-01 00:00:00 - 9999-12-31 23:59:59 
TIMESTAMP 
1970-01-01 00:00:00 - 2037年的某天(具体是哪天我也不知道,呵呵)

其中,unsigned和signed的区别在于:整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编辑器都会认为是unsigned int。