JAVA基本数据类型及练习题
目录
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基本数据类型及练习题相关推荐
- 对Java基本数据类型的再思考
10年前,我开始学习Java,8种基本数据类型,感觉轻松入门,记忆毫不费力-- 10年后,面试时,突然有人问起java有哪几种基本数据类型?竟然答不出来了,脑子里一点概念都没有了. 为什么会这样? 看 ...
- java基本数据类型 以及 double float 二进制表示方法
Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型. 整数类型: 关键字 占用字节数 byte 1 short 2 int 4 long 8 每个类型的取值范围,我们以int 为例,4个字节 ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- java i数据类型_数据类型 I
都来自菜鸟教程,自己总结学习使用, JS 数据类型 没有对比就没有伤害, 字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null ...
- Java 基本数据类型 sizeof 功能
Java基本数据类型 int 32bit short 16bit long 64bit byte 8bit char 16bit float 32bit double ...
- Java 基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
- 深入理解Java原始数据类型和包装类关于==和equals的比较
1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...
- java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...
- 五、吃掉Java基本数据类型,学习Java的基础
@Author:Runsen @Date:2020/5/20 Java是一个强类型语言,Java中的数据必须明确数据类型.在Java中的数据类型包括基本数据类型和引用数据类型两种. 我是天天看菜鸟和W ...
最新文章
- 设计模式6——创建型模式之原型模式
- python处理utf8编码中文,及打印中文列表和字典
- 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
- python爬虫爬取网页图片_Python爬虫实现抓取网页图片
- eNSP中玩转Python自动化——解锁网工新姿势
- 面向对象三大特性: 封装,继承,多态
- python操作excel_使用Python操作Excel时必学的3个库
- 24.8. UNION
- Windows.h下CONTAINING_RECORD宏解析(转载)
- Linux网络编程|UDP编程实例
- Telink TLSR8258DK开发板zigbee开发
- java调用考勤机_怎样把考勤机上的数据用java程序得到?
- pycharm导入.pyt后缀文件
- 虚拟机导致无法上网_虚拟机无法上网问题解决方法
- 离线底图瓦片,可用于Cesium加载使用【图说GIS】
- 1602液晶显示屏显示字符
- 高等流体力学复习03
- 浏览器开机自启动及全屏配置
- Oracle账户被锁定解决方法
- ssm基于web图书租售管理系统的设计与实现毕业设计源码161609
热门文章
- Starday跨境电商校企合作谋共赢 产教融合促发展
- apache配置文件AddType application/x-httpd-php .php
- java 8 数组转字符串并以逗号分隔
- C# IQueryable 和 IEnumerable 的区别
- colab防止掉线断连及清除方法
- 【找规律+公式推导+切西瓜问题】HDU-1290 献给杭电五十周年校庆的礼物
- linux 安装 ftp 以及 将ftp文件下载到指定目录
- SSM基于微信小程序的魔音影评交流平台 计算机毕设源码61758
- Chrome 总是打开就崩溃原因
- 视频教程-SharePoint Online 建站实战教程(上)-Office/WPS