Java学习03

数据类型
1、数据类型有什么用?
数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
2、数据类型在java语言中包括两种:
第一种:基本数据类型
  基本数据类型又可以划分为4大类8小种:
  第一类:整数型
  byte,short,int,long (没有小数的)
  第二类:浮点型
  float,double (带有小数的)
  第三类:布尔型
  boolean:只有两个值true和false,true表示真,false表示假
  第四类:字符型
  char:java中规定字符型字面量必须使用单引号括起来。属于文字。
  8小种:byte,short,int,long;float,double;boolean;char

第二种:引用数据类型
  字符串型String属于引用数据类型。
  String字符串不属于基本数据类型范畴。
  java中除了基本数据类型之外,剩下的都是引用数据类型。
  引用数据类型后期面向对象的时候才会接触。

8种基本数据类型中
整数型:byte short int long有什么区别?
浮点型:float和double有什么区别?
区别:占用的空间大小不同。

关于计算机存储单位?
计算机只能识别二进制。(1001101100…)
1字节 = 8bit(8比特)–> 1byte = 8bit
1bit就是一个1或0.
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

byte b = 2; 在计算机中是这样表示的:00000010
short s = 2; 在计算机中是这样表示的:00000000 00000010
int i = 2;在计算机中是这样表示的:00000000 00000000 00000000 00000010

类型 占用字节数量(byte)
------------------------------------
byte     1
short     2
int      4
long      8
float     4
double    8
boolean    1 (1byte的1或0,00000001(true)或00000000(false))
char      2

byte类型的取值范围?
byte是 [-128 ~ 127] 共可以标识256个不同的数字。
byte类型的最大值是怎么计算出来的?
byte是1个字节,是8个比特位,所以byte可以存储的最大值是:01111111
注意:在计算机当中,一个二进制位最左边的是符号位,当为0时表示正数,当为1时表示负数。所以byte类型最大值是:01111111

byte类型最大值是:2的7次方 - 1.
(1个字节)byte: [-128 ~ 127]
(2个字节)short:[-32768 ~ 32767] 可以表示65536个不同的数字
(4个字节)int: [-2147483648 ~ 2147483647]
(2个字节)char: [0~65535] 可以表示65536个不同的数字

short和char实际上容量相同,不过char可以表示更大的数字。
因为char表示的是文字,文件没有正负之分,所以char可以表示
更大的数字。

对于8种基本数据类型来说:
其中byte,short,int,long,float,double,boolean,这7种类型计算机表示起来比较容易,因为他们都是数字。其中布尔类型只有两个值true和false,实际上true和false分别在C++中对应的是1和0,1为true,false为0。

对于char类型来说计算机表示起来比较麻烦,因为char对应的是文字,每一个国家的文字不一样,文字不能直接通过“自然算法”转换成二进制。这个时候怎么办?字符编码诞生了。

什么是字符编码?
字符编码是人为的定义的一套转换表。
在字符编码中规定了一系列的文字对应的二进制。
字符编码其实本质上就是一本字典,该字段中描述了文字与二进制之间的对照关系。
字符编码是人为规定的。(是某个计算机协会规定的。)

字符编码涉及到编码和解码两个过程,编码和解码的时候必须采用同一套字符编码方式,不然就会出现乱码。

关于字符编码的发展过程?
起初的时候计算机是不支持文字的,只支持科学计算。实际上计算机起初是为了战争而开发的,计算导弹的轨道…后来随着计算机的发展,计算机开始支持文字,最先支持的文字是英文,英文对应的字符编码方式是:ASCII码。

ASCII码采用1byte进行存储,因为英文字母是26个。(键盘上所有的键全部算上也超不过256个。1byte可以表示256种不同的情况。所以英文本身在计算机方面就占有优势。)
‘a’ --(采用ASCII码进行编码)-> 01100001
01100001 --(采用ASCII码进行解码)-> ‘a’
如果编码和解码采用的不是同一个编码方式,会出现乱码。
‘a’ —> 97
‘b’ —> 98
‘c’ —> 99…

‘A’ —> 65
‘B’ —> 66

‘0’ —> 48
‘1’ —> 49

随着计算机语言的发展,后来国际标准组织制定了ISO-8859-1编码方式,又称为latin-1编码方式,向上兼容ASCII码。但不支持中文。
后来发展到亚洲,才支持中文,日文,韩文…中文这块的编码方式:GB2312<GBK<GB18030 (容量的关系)
以上编码方式是简体中文。

繁体中文:big5(台湾使用的是大五码。)

在java中,java语言为了支持全球所有的文字,采用了一种字符编码方式叫做unicode编码。unicode编码统一了全球所有的文字,支持所有文字。具体的实现包括:UTF-8 UTF-16 UTF-32…

ASCII('a’是97 'A’是65 '0’是48…)
ISO-8859-1(latin-1)
GB2312
GBK
GB18030
Big5
unicode(utf8 utf16 utf32)

转义字符
Java中“\”负责转义。
\t 制表
\n 换行
\\代表普通的
\u 表示后面的是一个字符的unicode编码(Unicode编码是十六进制)。

在Java语言中整数型字面量有4种表示形式:
十进制:最常用的。
二进制  以“0b”开头
八进制  以"0"开头
十六进制 以"0x"开头

在任何情况下,整数型的“字面量/数据”默认被当做int类型处理。如果希望该“整数型字面量”被当做long类型处理,需要在“字面量”后面添加L/l。建议使用L
小容量可以自动转换成大容量,这种被称为:自动类型转换。
大容量转换成小容量,需要加强制类型转换符,进行强制类型转换,但是运行的时候有可能损失精度。
long a = 2147483648;编译会报错
因为在Java中,对于整数型字面量,编译器就会将它看做 int 类型,而2147483648已经超过了int范围,所以在没有赋值之前就出错了。
当这个整数型自变量没有超过byte/short的取值范围,那么这个整数型字面量可以直接赋值给byte/short类型的变量。

整数型
1、计算机在任何情况下都只能识别二进制。
2、计算机在底层存储数据的时候,一律存储的是二进制补码形式。
  计算机采用补码形式存储数据的原因是补码形式效率最高。
3、二进制有:原码、反码、补码。
4、对于一个正整数来说:二进制原码、反码、补码完全相同。
  对于一个负数来说:补码相对于原码,符号位不变,其他位取反。
  补码为:反码+1

byte、short、char做混合运算的时候,先各自转换成int再做运算。多种数据类型做混合运算的时候,最终的结果是“最大容量”对应的类型。
char d = ‘a’;
byte b = 1 ;
short s = d +b ;错误:编译器不知道这个加法最后的结果是多少,只知道是int类型。
short s = (short)(d + b);

浮点型
float 单精度
double 双精度(更精确)
 需要注意的是,如果在银行或者财务方面的时候,double也是远远不够,在Java中提供了一种精度更高的类型,这种类型专门使用在财务方面:java.math.BigDecimal(不是基本数据类型,属于引用数据类型)。
float和double存储的都是近似值。

long类型占用8个字节,float类型占用4个字节,但是float的容量比较大。
任意一个浮点型都比整数型容量大。

java中规定,任何一个浮点型数据默认被当做 double 来处理,如果想让这个浮点型字面量被当做 float 类型来处理,那么,请在字面量后面加上F/f。

布尔类型
在java语言中boolean类型只有两个值,没有其他类型:true 和 false。不像C语言中1和0也能表示布尔类型。
boolean类型通常使用在逻辑判断中,通常放在条件的位置上。

在类型转换的时候需要遵循哪些规则?
第一条:八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
第二条:如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;
第三条:小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double,其中 short和 char 都占用两个字节,但是char 可以表示更大的正整数;
第四条:大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
第五条:byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
第六条:多种数据类型混合运算,各自先转换成容量最大的那一种再做运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值