JAVA基本数据类型及练习题

article/2025/8/23 16:14:46

目录

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的包装类,是引用数据类型,而不是基本数据类型


http://chatgpt.dhexx.cn/article/vQC6iL8X.shtml

相关文章

java基础:java基本数据类型详解

1.java基本数据类型 java有八种基本数据类型: 4种整型 :byte,short,int,long2种浮点型:float,double (3.14F位浮点型,没有F默认为double)一种字符型&#x…

Java基础(一) 八大基本数据类型

Java基础(一) 八大基本数据类型 自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean. 其中: 整型:byte, short, int, long 字符型:char 浮点型&…

GitHub 宣布两个重磅消息:发布移动端、封存代码

By 超神经 AI 无处不在的时代,每天都有新的技术与研究成果出现。无论学术界还是商界,技术还是产品,AI 的新发现都源源不断,在带给我们全新视角的同时,也引起我们更深的思考。 想知道最近的 AI 动态吗?Hyper…

OpenAI 是如何被10亿美元收买了“非盈利”灵魂的?

编译 | 陈彩娴、琰琰 近日,一篇名为“How OpenAI Sold its Soul for $1 Billion”(OpenAI是如何因为 10 亿美元出卖自己的灵魂)的文章在 Reddit 上引起了热议。 文章作者 Alberto Romero 抨击知名的非营利机构OpenAI 为了金钱而出卖自己原有…

可怕!程序员要被革命了,微软推出自己会编程的 “AI 程序员” 插件

loonggg 读完需要 7分钟 速读仅需 3 分钟 大家好,我是校长。 这几天微软和 GitHub 推出了一款 AI 程序员智能插件,它自己会编程,会自动生成代码,有人说: 软件开发领域的「第三次工业革命」似乎正缓缓揭开序幕。 01 到底…

程序员提前下班的福音来了!GitHub、OpenAI 联手推出 AI 代码生成神器

整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 编程门槛正在降低,编程效率正在提升,我们距离「人人都能成为开发者」的目标更近一步。这不,微软正式宣布发布了一个人工智能代码建议方案——GitHub Copilot&#xf…

2020 最好的Linux网络监控工具(翻译)

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家…

MySQL高可用管理工具:orchestrator

orchestrator 是一个MySQL高可用复制拓补的管理和可视化工具,同时也是GitHub官方在使用的一个复制拓补管理工具,它允许: 1)发现: orchestrator主动发现拓补结构并读取基本的MySQL信息,如复制状态和配置。…

GitHub 源代码疑遭泄漏

聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 TypeScript的开发者Resynth 发布题为《GitHub 源代码泄漏》的文章指出,GitHub.com 的所有源代码被公开。 (泄漏者在 Readme 中指出,文档包括日…

2020 最好的Linux网络监控工具

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家的…

网络地址转换(NAT)技术是否拖慢了互联网的发展?(2020 修订版)

2020 年修订版前言:看到有人还是对 IPv4 和 IPv6 的关系搞不清楚,好像只要有了 IPv6 就可以不要 IPv4 了,我只好把老文章祭出来了,当时也是我们接触 IPv6 的开始,两年下来,有些地方做了一些修订。 --- 正文…

Nat. Mach. Intell. | 人工智能的透明度和可重复性

今天给大家介绍多伦多大学的研究人员发表在nature machine intelligence上的一篇文章。文章指出McKinney等人利用AI在乳腺癌筛选上的工作,缺乏研究方法和代码实现的细节,阻碍了透明且可重复(transparent and reproducible)的AI研究…

网络安全学习中的工具

1> Nmap Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。 其基本功能有三…

p2p网络测试工具_(官方更新)IPFS的网络层——libp2p在2020的发展

如果您在分散的点对点空间中执行任何操作,您可能听说过 libp2p - 用于对等应用程序的模块化网络堆栈。 libp2p 由许多模块化库组成,p2p 网络开发人员可以从中选择和重用所需的协议,同时便于应用程序之间的升级和互操作。这有助于 Web3 开发人…

NAT会话穿越应用程序(STUN)(RFC-5389)

RFC文档链接 摘要 NAT会话穿越应用程序 (STUN) 是一种协议,在处理网络地址转换(Network Address Translator, NAT)穿越时充当其他协议的工具。终端可以使用它来确定NAT分配给它的IP地址和端口。它还可以用来检查两端之间的连通性,并作为keep-alive协议…

教你用 CSS 实现超真实的 3D 相册,让你的照片立体感 UPUP

前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,通过 css3 实现 3d 效果的立方体相册,下面一起看看吧。 实现思路 首先我们要确定好 html 的结构以及要使…

HTML+CSS实现3D立体相册

程序员的浪漫&#xff0c;话不多说上代码。 HTML: <body><div id"cube"><!--外层盒子--><ul><li><img src"./imgs/1.jpg" ></li><li><img src"./imgs/2.jpg" ></li><li>&l…

该换壁纸啦,记录一个用CSS和HTML做的3D立体相册

这几天看东宫沉迷于陈星旭&#xff0c;李承鄞太绝了&#xff01;这不得把壁纸安排上&#xff1f;简单记录一下制作过程。 1、准备照片 需要1张大的背景图和6张3d相册用图存放在img文件夹中。 可以先使用PS、美图秀秀或者其他修图软件等将相册用图改成200px*200px。 注意文件…

抖音程序员HTML相册,快手抖音程序员表白女朋友3D立体相册源码html网页相册代码...

前几天分享了一套源码&#xff0c;今天又为大家带来一套类似的源码&#xff0c;希望大家喜欢! 快手抖音很火的程序员女朋友3D立体相册源码html网页相册代码&#xff0c;经测试在IE8浏览器下无法预览&#xff0c;建议使用支持HTML5与css3效果较好的360浏览器预览本源码。 代码如…

H5 3d立体相册 CSS3特性

CSS3 变形特性,立方相册,3d旋转 之前看见过3d效果的立体相册,挺羡慕的,现在自己也有机会实现属于自己的3d立体相册了~~~话不多说,开搞… 一, 准备材料 六张自己喜欢的图片,六个面,怎么简单方便怎么来,名字直接取123456,后缀.jpg,放到img文件夹下一张小图片,大点也不要紧,为了浏…