今天老何与大家分享Java中的数据类型,从一个大家相对感兴趣的话题聊起吧,随着智能手机与网络的普及,大家都办理了流量套餐,每到月底大家也非常关心有没有流量了?费用是如何被扣掉的?
好,让我们带着问题了解2个概念。
1、数据
数据是信息的表现形式和载体,可以是符号、文字、数字、图像、语音、视频等。
手机/电脑上安装的软件,Word文档、PPT文档,短信、微信,图片、视频等等都是数据。
之所以我们使用手机会有流量费用,是因为发送和接收了数据(如在线听歌、发送微信、查看朋友圈,这些都是走数据流量的,如同用水电一样),运营商是计费的,比如联通(0.0003元/kb),这里提到数据单位kb,来接着看第二个概念。
2、数据单位
数据是有单位的(如尺寸有单位米,厘米、毫米等,它们之间有换算关系,1米=100厘米,1厘米=10毫米),从小到大依次是比特(Bit)、字节(Byte)、千字节(KB)、兆字节(MB)、吉字节(GB)、太字节(TB)......它们之间的换算关系为:
1B=8bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
......
> 比特(Bit):比特是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。
> 字节(Byte):字节是计算机存储容量的基本单位,一个字节由8位二进制数组成,如10011000,在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。
> 其他KB,MB、GB、TB......每一个级别都是前面的乘以1024。
了解完上面概念后,再回答我们前面的问题,如果你通过手机在线看一个视频,为100M(现在文件都很大,M即MB,按照联通费用标准需换算成KB),那么花费=100Mx1024x0.0003元/KB≈30元,自我感觉hei不hei:),独此三家,别无选择。
OK,进入我们的今天主题“数据类型”
3、数据类型
数据除了有单位,也是有类型的,数据类型是对数据的分类,每种数据类型都具有独特的特征、不同的分配空间(最大位数/字节数不同)与相应的操作功能(举个例子:房子有别墅、住宅、办公楼等分类,产权不一,大小不一,功能不一,但都是房子)
Java中分成两种数据类型,一是基本数据类型,二是引用数据类型(两者区别在内存分配和地址指向的不同,可先大致了解,如详细了解可@老何)
一、基本数据类型
/*
1、整数类型:byte、short、int、long
用来表示一个整数
byte字节型、short短整型、int 整型、long 长整型
*/
/*
(1)、byte字节型:占1个字节(8位)
取值范围:-128~127(-2^7~2^7-1)
默认值:0
*/
byte b = 50;
System.out.println("byte b的值为:"+b);
/*
(2)、int 整型:占4个字节(32位)
整型的默认值为int
取值范围:-2,147,483,648~2,147,483,647(-2^31~2^31-1)
默认值:0
*/
int i = 18000;
System.out.println("int i的值为:"+i);
/*
(3)、short短整型:占2个字节(16位)
取值范围:-32768~32767(-2^15~2^15-1)
默认值:0
*/
short si = 1800;
System.out.println("short si的值为:"+si);
/*
(4)、long 长整型 :占8个字节(64位)
取值范围:-9,223,372,036,854,775,808~9,223,372,036,854,775,807(-2^63~2^63-1)
默认值0L,后面有一个L或l
*/
long li = 180000l;
System.out.println("long li的值为:"+li);
/*
2、浮点类型:float、double
float单精度浮点类型、double双精度浮点类型
Java用浮点型表示实数,简单的说就是带有小数的数据。
*/
/*
(5)、float 长单精度浮点类型 :占4个字节(32位)
默认值:0.0f,后面要跟一个f或F表示
*/
float f = 3.14f;
System.out.println("float f的值为:"+f);
/*
(6)、double 双精度浮点类型 :占8个字节(64位)
浮点型的默认类型
默认值:0.0d, 后面要跟一个d或D表示,浮点数不添加默认代表双精度
*/
double d = 3.14d;
System.out.println("double d的值为:"+d);
/*
(7)、boolean 类型 :
有两个值:true、false
用作标记或条件判断
*/
boolean hasChecked = false;
System.out.println("boolean hasChecked的值为:"+hasChecked);
/*
(8)、char 字符类型 :占2个字节(16位)
存放单个字符,用单引号引用起来
*/
char a = 'a';
System.out.println("char a的值为:"+a);
二、引用数据类型
这里先讲一个常用的String类型,其他的后续陆续讲解。
/*
(1)、String 字符串类型
char字符型仅表示一个字符,多个字符要用String
默认值:null
可用+链接多个字符串
*/
String name = "zhangsan";
System.out.println("String name 的值为:"+name);
4、数据类型转换
不同数据类型的数据是可以转换的,分为自动数据类型转换和强制数据类型转换
/* 1、自动数据类型转换
按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型。
不同类型数据间 按照下面关系的从左到右(从低到高)自动转换:
boolean、char、short int-> int ->long int-> float -> double 。
*/
int height=170;
float fHeight=height;
System.out.println(" int自动转换成float的值为:"+fHeight);
/*
2、强制数据类型转换
如果类型转换是右到左情况,就需要强制类型转换了,转换方法就是在数据前面加上(目标类型),
但是这种转换是存在风险的,有可能造成数据的丢失,需要谨慎进行。
*/
double weight=23.56;
int iWeight=(int)weight;
System.out.println("double强制转换成int的值为:"+iWeight);
5、变量与常量
最后补充一些知识,之前我们使用的代码格式都为
int i = 18000;
这个是什么呢?实际上是变量定义
/*
一、变量
1、概念:是Java程序的一个基本存储单元,变量是由一个标识符及一个可选的初始值组合定义。
定义规则为:
1:必须以字母、下划线“_”、或“$”符号开头
2:可以包括数字、区分大小写
3:不能使用Java语言的关键字,例如int、float、public等(更多见附注1Java关键字)
变量的值是可以改变的
2、变量定义格式:
变量数据类型 变量名;
例如 int age;
*/
//1,先定义变量,再初始化
int score;
score=200;
//2,定义的时候直接初始化
float heightf=180.6f;
//3,变量值的改变(可多次改变)
double money=1234.56;
money=3456.78;
money=5678.9;
//4,变量值的传递(从一个变量传递给另一个变量)
int age=6;
int ageb=age;
/*
二、常量
常量是变量中的一个特例,用final关键字修饰,常量的值是不可以修改的
对常量命名的定义规则:建议尽量全部大写,并用下划线将词分开
*/
//5,定义常量,常量不能修改,仅能定义时初始化
final float PI=3.1415f;
// PI=3.14159f;
System.out.println("变量分数值:"+score+"变量身高值:"+heightf+"存款:"+money+"年龄:"+ageb+"常量PI:"+PI);
6、运行结果
保存程序并运行,结果如下:
byte b的值为:50
int i的值为:18000
short si的值为:1800
long li的值为:180000
float f的值为:3.14
double d的值为:3.14
boolean hasChecked的值为:false
char a的值为:a
String name 的值为:zhangsan
int自动转换成float的值为:170.0
double强制转换成int的值为:23
变量分数值:200变量身高值:180.6存款:5678.9年龄:6常量PI:3.1415
附注:
1、Java关键字
Java官方使用的特定标识,代表特殊含义,如int,代表整型数据类型