知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

Java中的数据类型

发表时间:2022-03-25来源:网络

Java中的数据类型

作者:韩茹
公司:程序咖(北京)科技有限公司
程序咖:IT职业技能评测平台
网址:https://www.chengxuka.com




任务

1.数据类型的分类 2.基本数据类型有哪些 3.每种基本数据类型所占用的内存空间以及取值范围 4.数据类型之间的转换


Java语言是强类型语言:对数据类型的要求很严格。声明是什么类型的变量,就要存储什么类型的数值。

一、数据类型的分类

Java数据类型可分为两大类:基本数据类型引用类型

基本数据类型:byte、short、int、long、float、double、char、boolean

引用数据类型:类、接口、数组、枚举(后面讲解)

本小节,我们先来探讨基本数据类型。



二、基本数据类型

2.1 基本数据类型

基本数据类型,也叫原始数据类型。在Java中,有八种原始数据类型:布尔型,字符型,字节型,短型,整型,长型,浮点型和双精度。基本数据类型有以下4类8种:

整数型---- byte(字节), short(短整型), int(整型), long(长整型)
用于存储整数。浮点型---- float(单精度浮点型), double(双精度浮点型)
用于存储小数。字符型---- char
用于存储字符布尔型---- boolean
用于存储true和false,表示对和错。


2.2 基本数据类型的存储

Java中所有的基本数据类型都有固定的存储范围和所占内存空间的大小,而不受具体操作系统的影响,以保证Java程序的可移植性 。

2.2.1 整数型



byte:它可以容纳-128到127之间的整数。通常用于节省内存,并且可以确定数字在字节数据类型指定的限制内。

1 public class Demo04datatype 2 { 3 public static void main(String[] args) 4 { 5 //定义byte类型的变量 6 byte num = 10; 7 System.out.println(num); 8 //存储的大小如果超过了byte的取值范围,就会报错了 9 byte num2 = 129; 10 System.out.println(num2); 11 } 12 } 13

定义变量进行赋值的时候,不能超出该种数据类型的取值范围:




short:短整型,就大小而言,它大于字节,并且小于整数。其范围是-32768到32767。


int:当short不足以容纳数字时使用,它的取值范围更大,int类型也是我们平时使用最多的一种整型类型。它也是整数类型中的默认类型。


long:当int的大小不足以容纳该值时使用,它的范围比int数据类型的范围更广,范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。

要声明long型可以加"l"或者"L",小写l或者大写L。

1 public class Demo04datatype 2 { 3 public static void main(String[] args) 4 { 5 //1.定义byte类型的变量 6 byte num = 10; 7 System.out.println(num); 8 //存储的大小如果超过了byte的取值范围,就会报错了 9 //byte num2 = 129; 10 //System.out.println(num2); 11 12 //2.short类型的变量, 13 short s = 129;//取值范围:-32768~32767,共(65536个数值) 14 System.out.println(s); 15 16 //3.int类型的变量 17 int i = 1314;//取值范围:-2147483648~2147483647 18 System.out.println(i); 19 20 //4.long类型的变量 21 long l1 = 9223372036854775807L;//加L表示该数值是long类型的 22 System.out.println(l1); 23 24 25 int age = 19; 26 long l2 = 100000000L; 27 } 28 } 29

运行结果:



最后:

1 Java语言的整型数值默认为int型int i = 3; 2 要声明long型可以加l L’,long l = 3L; 3 注意:在数值超过int的表述范围时(2147483647),需要加上l/L对long赋值


2.2.2 浮点型

浮点型所存储的数据,就是我们平时所说的小数。带精度的。



float: 单精度浮点数(精度6,7位) 4个字节double:双精度浮点数 (精度15,16位) 8个字节

注意:Java浮点型常量默认为double型,如要声明一个float型,则需在赋值的数字后面加f或F,如: double d = 3.14; float f = 3.14f;

1 Java浮点类型常量有两种表示形式 2 十进制数形式必须含有小数点例如: 3 3.14 314.0 0.314 4 科学记数法形式 5 3.14e2 3.14E2 314E2 6 7 注意float double存储的数据都是近似值


示例代码:

1 public class Demo05FloatAndDouble 2 { 3 public static void main(String[] args) 4 { 5 //1.单精度浮点数:float 6 float f = 3.14f; 7 System.out.println(f); 8 9 //2.双精度浮点数:double 10 double d = 1.23;//java中的小数,默认类型是double 11 System.out.println(d); 12 13 14 //科学计数法 15 double d2 = 2000;//int,隐含了数据类型的自动转换 16 System.out.println(d2); 17 18 double d3 = 2000.0;//double 19 System.out.println(d3); 20 21 double d4 = 2E3;//相当于2*10的3次方 22 System.out.println(d4); 23 24 //1.7E308,相当于1.7乘以10的308次方。17后有307个0 25 double d5 = 17000000000000000000000000.0;//double 26 System.out.println(d5); 27 28 29 //1.浮点类型:IEEE754标准。 30 } 31 } 32

运行结果:




踩坑:计算机中表示小数使用工业标准IEEE754,所以小数的加减运算,都是带精度的近似数,不一定和你口算的结果完全相同。

2.2.3 字符型

char型数据用来表示通常意义上“字符”。表示单个的字符,使用单引号引起来的,但本质上是个数值,因为对应的字符编码值。Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示(Unicode是全球语言统一编码)。

可以通过单个字符直接赋值。 1 char c1 = 'a';


也可以赋值为一个汉字(汉字也是一个字符,中文字符) 1 char c2 = '中';


还可以通过编码进行赋值char c3 = 97;//ASCII美国标准信息交换码相当于'a'


还可以通过16进制的编码值进行赋值char c4 = '\u0061';//相当于a


ASCII编码表:




示例代码:

1 public class Demo06Char 2 { 3 public static void main(String[] args) 4 { 5 //字符类型:char,使用单引号引起来 6 char c = 'A'; 7 System.out.println(c); 8 9 //使用编码值进行存储 10 char c2 = 65;//65是字符A的编码值 11 System.out.println(c2); 12 13 //采用unicode编码:16进制赋值 14 char c3 = '\u0041'; 15 System.out.println(c3); 16 17 char c4 = '中'; 18 System.out.println(c4); 19 System.out.println((int)c4);//将c4这个字符按照数值打印:其实就是该字符的编码值 20 21 char c5 = 20013; 22 System.out.println(c5);//中 23 24 char c6 = '国';//22269 25 System.out.println((int)c6); 26 27 char c7 = 22269; 28 System.out.println(c7); 29 } 30 } 31 32

运行结果:





转义字符:Java语言中还允许使用转义字符,来将其后的字符转变为其它的含义。
将字符进行转义-->语法上使用\ 1、将有特殊作用的字符,转为普通的字符,不再起作用 ',",\ 2、还可以将一些普通的字符,转为有特殊含义的作用 \n,\t




示例代码:

1 public class Demo07TranserSign 2 { 3 public static void main(String[] args) 4 { 5 /* 6 转义字符:将字符进行转义-->语法上使用\ 7 1、将有特殊作用的字符,转为普通的字符,不再起作用 8 \',\",\\ 9 2、还可以将一些普通的字符,转为有特殊含义的作用 10 \n,\t 11 */ 12 13 char c = '\'';//' 14 System.out.println(c); 15 char c2 = '"';//" 16 System.out.println(c2); 17 18 System.out.println("Hello\nWor\tld"); 19 System.out.println("D:\\Ruby\\程序咖");//路径 20 System.out.println("\"HelloWorld\"");//打印带双引号的helloworld 21 } 22 } 23

运行结果:





2.2.4 布尔类型

boolean类型适于逻辑运算,一般用于程序流程控制 boolean类型数据只允许取值true或false,不可以用0或非0的整数替代true和false。

示例代码:

1 public class Demo08Boolean 2 { 3 public static void main(String[] args) 4 { 5 //定义一个boolean类型 的变量 6 //该类型,只有2个值:true,false 7 boolean b1 = true; 8 boolean b2 = false; 9 10 //"表达式",就是一个式子,数值和一些运算符组成的 11 // 3 + 5 -->8 12 boolean b3 = 3 > 5;//3 > 5的计算结果:false 13 //当给boolean类型变量赋值的时候, 14 //可以直接赋值:true,false 15 //也可以赋值为一个表达式:该表达式的计算结果是true或者false 16 17 System.out.println(b1); 18 System.out.println(b2); 19 System.out.println(b3);//false 20 21 22 23 } 24 } 25

运行结果:





2.2.5 基本数据类型总结




三、基本数据类型的转换

Java语言是一种强类型语言,定义的变量数据类型和赋值的数据类型需要统一。但是允许程序上做一定程度的数据类型转换。分为以下两种:

自动类型转换强制类型转换

注意:boolean类型不能和其他类型进行转换。



3.1 自动类型转换

自动类型转换:容量小的类型自动转换成容量大的数据类型。这里的容量是指该数据类型的取值范围。

1 自动类型转换:数据类型取值范围小的转为取值范围大的 2 1.byte ---> short--->int--->long--->float --->double 3 2.char---> int 4 3.byte,short,char三者在计算时会转换成int类型 (了解) 5 4.int整型常量和字符常量在合理范围内可以直接赋值给 byte、short、int、char (了解)


示例代码:

1 public class Demo09Convert 2 { 3 public static void main(String[] args) 4 { 5 //1.自动类型转换:取值范围小的自动转为取值范围大的。 6 short s1 = 123;// 7 int i1 = s1;//隐含着将s1这个数值由short类型转为int,再赋值给i1这个变量 8 System.out.println(s1); 9 System.out.println(i1); 10 11 byte b1 = 10; 12 int i2 = b1;//byte-->int 13 System.out.println(i2); 14 } 15 } 16

运行结果:




3.2 强制类型转换

强制类型转换:容量大的类型,被强制转换成容量小的数据类型。有可能造成精度降低或数据溢出,使用时要小心。

强制类型转换数据类型取值范围大的 转为 取值范围小的 long l = 100L; int i = (int)l; 但有可能造成精度降低或数据溢出使用时要小心

需要使用强制转换符:就是在要转换的数值前,使用小括号扩起来要转换的数据类型。

(要转换的类型)要转换的数据


示例代码:

1 public class Demo09Convert 2 { 3 public static void main(String[] args) 4 { 5 //1.自动类型转换:取值范围小的自动转为取值范围大的。 6 short s1 = 123;// 7 int i1 = s1;//隐含着将s1这个数值由short类型转为int,再赋值给i1这个变量 8 System.out.println(s1); 9 System.out.println(i1); 10 11 byte b1 = 10; 12 int i2 = b1;//byte-->int 13 System.out.println(i2); 14 15 //2.强制类型转换 16 //byte的取值范围:-128~127之间 17 byte b2 = (byte)s1;//将s1由short类型,强制转为byte类型,再赋值给byte类型的变量b2 18 System.out.println(b2);//123 19 20 short s2 = 128; 21 byte b3 = (byte)s2;//-128 22 System.out.println(b3); 23 24 double d1 = 2.5; 25 int i3 = (int)d1;//强制转换:浮点到整数:直接截取整数部分,忽略小数 26 System.out.println(i3); 27 28 long l1 = 100L; 29 float f1= l1; 30 System.out.println(f1); 31 32 33 } 34 } 35

运行结果:




最后:

自动转换: A:两种类型兼容 B:目标类型的取值范围 大于 源类型取值范围 强制转换: A:两种类型兼容 B:目标类型的取值范围 小于 源类型的取值范围 需要加强制转换符的语法:说明要强制转为哪种类型 (要转换的类型)数值 取值范围: byte-->short-->int-->long-->float-->double char

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜