目录

8种基本数据类型

类型转换

题目


JAVA的数据类型分为:基本数据类型和引用数据类型。本篇博客会介绍基本数据类型及其使用的注意事项,其中包括隐式类型转换、显示类型转换、编译器的常量优化,结尾会给出10道练习题。

8种基本数据类型

字节型

byte

一个字节

 -128 ~ 127

字符型

char

二个字节

 0 ~ 2^16-1

短整型

short 二个字节 -2^15 ~ 2^15-1

整型

int 四个字节 -2^31 ~ 2^31-1

长整型

long 八个字节 -2^63 ~ 2^63-1

单精度浮点型

float 四个字节 1.401298 * 10^(-45) ~ 3.402823 * 10^38  

双精度浮点型

double

八个字节

4.9000000*10^(-324) ~1.797693*10^308

布尔类型

boolean 有争议

(为什么java的特点叫做“一次编译,到处运行”?因为上面的数据类型的字节大小不管是16位操作系统还是32位操作系统还是64位操作系统,都不变)

对于一个数据类型,给他一个超出其范围的值,报错

byte a = 128; // 报错
int b = 11111111111111; // 报错

为什么int类型的数值范围是 -2^31 ~ 2^31 - 1?

int 有4个字节,一共32位,即int可以表示 2^32个数,正数分一半负数分一半,正数从1 ~ 2^31,负数从 -1 ~ -2^31,但是正数还要表示0,所以最大值减一即 0 ~ 2^31 - 1

(这只是简单的理解,具体参见原码反码补码)

为什么char占两个字节?为什么它没有负数?

1、JAVA使用unicode字符集,里面的各种字符都是两个字节,'a' 、'b'...

2、因为char的第一位不是符号位,所以char 的数据范围为:0 ~ 2 ^ 16-1

在JAVA中,整数值默认为int类型,小数默认double类型。

如:

float a = 1.0; // 报错,1.0是double,不能给float
float a = 1.0F; // 正确
float a = 1.0f; // 正确但不推荐

那为什么可以进行 byte a = 1; 呢?

因为编译器进行了隐式类型转换:byte a = (byte) 1;

类型转换

隐式/显示类型转换的规则是比较数据范围而不是字节大小,即float可以转为long而long不能转为float。

1、byte/short/char 三种数据类型之间的任意两种进行运算时,都要用int或更大的类型类型接收

//第6行 为错误代码,a + b 系统自动转换为 int 类型,就不能赋值给 short
//第7行 为正确代码,进行强转
//第8行 为正确代码,直接用 int 接收
short a = 1;
short b = 2;
short c =  (a + b);
short c = (short) (a + b);
int c = a + b;

编译器在给 a 、b 赋值后将 a 、b 隐式(自动)转换为 int 类型

而当你进行强制类型转换后,如果值正常,报错消失,如果值太大,超过接收类型的范围,则进行绕圈圈行为。

byte a = 127;
// byte b = a + 1 报错,编译器认为a + 1是int,不能给byte
byte b = (byte)(a + 1); // 输出-128

但是 short a = 1 + 2;不会报错,

因为给变量赋值时,如果右侧全是常量,编译器也会进行隐式类型转换,这成为 “编译器的常量优化” ,如果右侧有变量参与,就不能进行这种优化

a++,a += 1;这两种是可以的,是因为+=、++是java语言中的运算符,Java编译器会对它特殊处理进行正确的编译。

short a = 1;
a++;
a += 1;

2、当两种不一样的数据类型进行运算时,会将其中一个较小的数据类型转换成较大的数据类型进行运算

int a = 10;
long b = 10L;
int c = a + b; // 错误,右边已经是long类型了

题目

1、基本数据类型在使用时不初始化能用吗?

答案 :不能

2、JAVA有无符号整型吗?

答案 :无

3、下列错误的选项为:()

A. long a = 11111111111111L;
B. long a = 11111111111111;
C. long a = 189;
D. long a = 189L;

答案:B

解析:编译器认为11111111111111是int,但是他已经超过了int的范围,所以错误

4、下列变量的定义中,正确的是()

A. long a = 123L;
B. long a = 3.14F;
C. float a = 123L;
D. int i = "k";

答案 :C

解析 : 相信你会疑惑,为什么float a = 123L;是正确的,而long a = 3.14F;是错误的呢?因为float的取值范围大于long,long装不下float,所以 long a = 3.14F错误。

5、boolean能转换成其他的基本数据类型吗?

答案 :不能,boolean不能赋值给其他基本类型,同时其他基本类型不能赋值给boolean

6、JAVA的字符类型采用的是unicode字符集,每个unicode码占用____个比特位?

答案 :16,因为俩字节

7、下面哪个表达式是正确的?

A. byte a = 128;
B. Boolean = null;
C. long a = 0xfffL;
D. double = 0.923d; 

答案 : C

解析 : 因为B和D没有指定变量,A把128给byte,太大了

8、下列代码第几行会出错?

 public void modify() {int i,j,k;i=100; while (i>0){j=i*2;System.out.println (" The value of j is " +j ); k=k+1;i--; }
}

答案 :7。因为k没有初始化就使用

9、下列语句中正确的是()。

A. System. out. println(1+'1’) ;
B. int i=2+"2";
C. String s="on"+' one’;
D. byte b=257;

答案 :A。

解析 :A.相当于1 + 49;

B.中"2"是字符串,2 + "2" 被转换成字符串,不能赋值给int。

C.单引号代表字符型,它只能有一个字符,'one'有三个。

D.257 > 127

10、下列选项中,不属于Java基本数据类型的是

A. Integer
B. byte
C. char
D. boolean

答案 : A

解析 : Integer是int的包装类,是引用数据类型,而不是基本数据类型

JAVA基本数据类型及练习题相关推荐

  1. 对Java基本数据类型的再思考

    10年前,我开始学习Java,8种基本数据类型,感觉轻松入门,记忆毫不费力-- 10年后,面试时,突然有人问起java有哪几种基本数据类型?竟然答不出来了,脑子里一点概念都没有了. 为什么会这样? 看 ...

  2. java基本数据类型 以及 double float 二进制表示方法

    Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型. 整数类型: 关键字 占用字节数 byte 1 short 2 int 4 long 8 每个类型的取值范围,我们以int 为例,4个字节 ...

  3. Java基础-数据类型int,short,char,long,float,double,boolean,byte

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  4. java i数据类型_数据类型 I

    都来自菜鸟教程,自己总结学习使用, JS 数据类型  没有对比就没有伤害, 字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null ...

  5. Java 基本数据类型 sizeof 功能

    Java基本数据类型 int     32bit short   16bit long    64bit byte    8bit char    16bit float   32bit double ...

  6. Java 基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

  7. 深入理解Java原始数据类型和包装类关于==和equals的比较

    1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...

  8. java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc

    实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...

  9. 五、吃掉Java基本数据类型,学习Java的基础

    @Author:Runsen @Date:2020/5/20 Java是一个强类型语言,Java中的数据必须明确数据类型.在Java中的数据类型包括基本数据类型和引用数据类型两种. 我是天天看菜鸟和W ...

最新文章

  1. 设计模式6——创建型模式之原型模式
  2. python处理utf8编码中文,及打印中文列表和字典
  3. 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
  4. python爬虫爬取网页图片_Python爬虫实现抓取网页图片
  5. eNSP中玩转Python自动化——解锁网工新姿势
  6. 面向对象三大特性: 封装,继承,多态
  7. python操作excel_使用Python操作Excel时必学的3个库
  8. 24.8. UNION
  9. Windows.h下CONTAINING_RECORD宏解析(转载)
  10. Linux网络编程|UDP编程实例
  11. Telink TLSR8258DK开发板zigbee开发
  12. java调用考勤机_怎样把考勤机上的数据用java程序得到?
  13. pycharm导入.pyt后缀文件
  14. 虚拟机导致无法上网_虚拟机无法上网问题解决方法
  15. 离线底图瓦片,可用于Cesium加载使用【图说GIS】
  16. 1602液晶显示屏显示字符
  17. 高等流体力学复习03
  18. 浏览器开机自启动及全屏配置
  19. Oracle账户被锁定解决方法
  20. ssm基于web图书租售管理系统的设计与实现毕业设计源码161609

热门文章

  1. Starday跨境电商校企合作谋共赢 产教融合促发展
  2. apache配置文件AddType application/x-httpd-php .php
  3. java 8 数组转字符串并以逗号分隔
  4. C# IQueryable 和 IEnumerable 的区别
  5. colab防止掉线断连及清除方法
  6. 【找规律+公式推导+切西瓜问题】HDU-1290 献给杭电五十周年校庆的礼物
  7. linux 安装 ftp 以及 将ftp文件下载到指定目录
  8. SSM基于微信小程序的魔音影评交流平台 计算机毕设源码61758
  9. Chrome 总是打开就崩溃原因
  10. 视频教程-SharePoint Online 建站实战教程(上)-Office/WPS