数据类型


java

java基本数据类型就8种
java四类八种基本数据类型

第一类:整型 byte short int long 
第二类:浮点型 float double

第三类:逻辑型 boolean(它只有两个值可取true false)

第四类:字符型 char 

在栈中可以直接分配内存的数据是基本数据类型。 
引用数据类型:是数据的引用在栈中,但是他的对象在堆中。 
要想学好Java必须知道各种数据的在内存中存储位置。 
对内存有了很好的了解,可以有助你分析程序。

字节:
boolean 布尔型              1/8 (1位)
byte 字节类型                1
char 字符型                  2  一个字符能存储一个中文汉字
short 短整型                 2
int 整数类型                 4
float 浮点类型(单精度)     4
long 长整形                  8
double 双精度类型(双精度)  8



java中默认的整数类型是int类型,如果要定义为float型,则要在数值后加上l或L;
默认的浮点型也是双精度浮点,如果要定义为float型,则要在数值后加上f或F。

一个字节等于8位,一个字节等于256个数,就是-128到127一共256。
kB就是kBytes 
Bytes就是“字节”的意思! 
K就是千的意思,因为计算机是通过二进制来计算,10个1正好是1024
1111111111(二进制)=1024(十进制)
1Bytes(字节)=8bit(比特) 
一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节 
一个汉字就是两个字符,占用两个字节。 
一般讲大小是用Bytes,大写的“B”,讲网络速率是用bit,注意是小写的“b”。 
例:一个文件有8MBytes 
例:我下载文件的速率是256KB/s,即2Mbit,这通常就是我们宽带上网的速率。


基本数据类型自动转换
byte->short,char -> int -> long      
float -> double
int -> float
long -> double
小转大可转,大转小会丢失精度


C

1、C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double) 

类型

字节数

类型

字节数

char

1

short

2

int

根据系统而定,可能是24

long

4

float

4

double

8

同时字符型和整形还可以继续分为带符号的和不带符号的,默认情况下都是带符号的,如果想使用不带符号的,则使用时带上 unsigned说明即可,如果是带符号的,那么最高位将表示符号位,最高位为0表示为正数,最高位为1表示为负数,因此根据这个可以得到不同类型在分别带符号和不带符号的情况下表示的数据范围:

类型

范围

类型

范围

signedchar

-128——127

unsigned char

0——255

(signed) short

-32768——32767

unsigned short

0——65535

(signed ) int

-32768——32767

unsigned short

0——65535

(signed) long

-2147483648——2147483647

unsigend long

0——4294967295

float

-3.4*10-38——3.4*1038

double

-1.7*10-308——1.7*10308

 
2、对于字符型和整形特别需要注意其表示的范围,如果运算导致超出其范围的处理,如以下的代码:
  1. int main() 
  2. { 
  3.     signed char ch = 127;
  4.     ch += 1;
  5.     printf("%d\n", ch);

  6.     return 0; 
  7. }
输出结果为:-128,注意,定义ch时赋予的值为127,已经是char能表示的最大数,其最终结果-128的来历是这样的:
第一步:首先127在计算机中用二进制表示为:01111111;
第二步:01111111 + 00000001 = 10000000;
第三步:由于ch是带符号的,当最高位为1时,表示是负数,而负数的计算机中是利用补码来存储的,回忆计算负数补码的方法(首先取负数的绝对值,然后求二进制,对二进制取反,在对取反后的值加1,即为负数的补码);
第四步:于是根据求补码的反步骤,我们来求最原始的负数,由于本题中补码为10000000,首先10000000 - 00000001 = 01111111,然后对01111111取反为10000000,10000000 = 128,由于本身是负数,即ch为-128.
 
再看以下一段代码:
  1. int main() 
  2. { 
  3.     unsigned char ch = 255;
  4.     ch += 1;
  5.     printf("%d\n", ch);

  6.     return 0; 
  7. }
输出结果为:0;
其分析为:首先ch = 255提升为整形,在计算机的存储为:(000....)11111111,然后(000....)11111111+1 = (000...)0001 00000000;然后再将最后的八位二进制截取给ch,由于最后八位全是0,因此ch = 0了。
同理:对于遇到整形int short, long等出现上述情况时,我们也可以这样分析得到结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值