java:变量(二)变量的基本类型

2023-11-09

二、整型与浮点型细节:

1、组成

整型变量是由符号位和数位两部分组成

浮点变量是由符号位、指数尾、尾数位组成

整型和浮点型变量的首位都是符号位,用来表示数据的正负

2、整型浮点型变量的长度和取值范围是固定的(事实上同一语言的基本数据类型的长度都是固定的)

3、long类型:对于java,默认的整型变量类型为int,即使定义时使用long类型:

long l1 = 100;        

long l 2 =  4294967296;  

Exception in thread "main" java.lang.Error: 无法解析的编译问题:
    类型 int 的文字 4294967296 超出了范围

想要给long类型的变量赋值,则需要在赋值时在数字后加上L或小写“l”(如果赋值比较小,可以直接赋值给long类型的变量,但变量类型会自动变成int类型,然后在需要的时候变回long类型。(类型转换后边会提到)

		long l = 4294967296L;  

4、int类型数据的容量有±21亿,足以应付绝大多数情况。

5、bit与byte,bit(比特)是最小存储单位,单位是“位”;byte(字节)是基本存储单位,单位是“字节/字”

6、float类型:对于java,默认的浮点型变量类型为double,即使定义时使用float类型:这点与long类型同理;不同的是float类型后加的是F或者f

7、浮点数常量有两种表现形式:十进制型和科学计数法型

		long l = 4294967296L;    //long在赋值大数据(超过21亿)时需要在数字后加L
		float f = 4294.96F;      //float同理
		System.out.printf("\n十进制数%3.3f。\n科学计数法数%1.3e。",f,f);

十进制数4294.960。
科学计数法数4.295e+03。

8、8..1/3与2.7

		System.out.println(2.7+"  "+8.1/3);

2.7  2.6999999999999997

在计算机中8.1/3并不等于2.7,原因是因为计算机用的是二进制数,二进制数十进制转换过程中会出现一定的误差(因为不能无限保留位数)这个误差并不会很大,但也会导致一些比较严重的问题,例如两个本应相等的数无法相等。

double d1 = 2.7,d2 = 8.1/3;
		if(d1 == d2) {
			System.out.println("两数相等");

上述条件语句不会输出。

解决方法:不直接看两数是否相等,而是看两数差的绝对值是否在一个极小的范围内。

		if(Math.abs(d1 - d2) < 0.00001){  //取绝对值的方法
			System.out.println("两数可能不相等,但误差小于0.00001了");
		}

9、二八十六进制:

二进制:0b+二进制数

八进制:0+八进制数

十六进制:0x(0X)+十六进制数(ABCDEF,分别表示10~16)

三、字符类型

1、字符类型可以存储字符常量和字符常量对应的ASCII码

如果存储字符常量,则需要用 ‘ ’ 括起来;

2、java的字符类型变量允许存储转义字符。

3、字符类型也允许存储汉字等多国语言,只要该字符可以在Unicode码上。

4、打印(输出):既可以输出字符本身,也可以输出字符对应的Unicode码(强制转换成int类型的)

5、字符类型的变量也可以进行运算。

public static void main(String[] arg) {
		//字符类型与布尔类型
		char c1 = 'a';    //可以存储字母
		char c2 = '冉';   //可以存储汉字
		char c3 = '\n';   //可以存储转义字符
		char c4 = 97;     //可以存储字符对应的ASCII值
		System.out.println(c1+""+c2+""+c3+""+c4);		
		System.out.println((int)c1+"\n"+(int)c2+"\n"+(int)c3+"\n"+(int)c4);	
		//输出对应的Unicode码值
		System.out.println(c1+c2);	
		System.out.println(c1+c3);
		
	}

a冉
a
97
20873
10
97
20970
107

6、字符的存取:

存储:‘a’==》码值97==》二进制码==》存储

读取:读取==》二进制码==》码值97==》‘a’

四、字符编码表:

大致的时间和演进顺序

ASCII码最早,由于成型时间早加之是美国人编写的(字母的基本单位少),所以容量小;后来各国陆陆续续推出了自己的编码表:中国推出了gb2312(简字体为主,兼有日语平假文等),以及后续的gbk(兼有繁体与简体、日语、韩语等);中国台湾推出了繁体字为主的BIG-5;日本推出了jls。由于各个编码方式的码并不兼容,所以在此基础上推出整合的ANSI码在不同的国家地区编码也不同,跨国交流时依然有很大挑战。因此在此基础上,统一了全部编码的Unicode码实现了真正的大一统,但由于体系太过庞大,每一个码的大小可能长达三四个字节,因此由Unicode码革新而来的UTF-8编码受到了人们的欢迎。UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式。

具体可以看:

字符编码类型

五、布尔类型

布尔类型(bool)就是用于判断真假的数据类型,Python中只有两种布尔类型:True与False。

长度只有一个字节

一般用于逻辑运算;用于控制程序的进行。

java语言中无法用零和非零来代指true和false。

boolean flag = false;
		if(flag) {    //if括号内为真则执行if后的语句,否则跳过该语句,执行else后的语句,若无则跳过
			System.out.println("考试已通过");
		}
		else {
			System.out.println("考试未通过");
		}
		

考试未通过

六、引用数据类型:

引用数据类型一共有三大类:

接口cinterface、类class、数组([])

七、java API

java application programming interface(java应用程序接口)简单来说,就是一个列表,一个包含java当前版本java类库中所有类、接口、方法等的大列表,帮助编程人员更好的使用java的类库进行编码。。

Java 8 中文版 - 在线API中文手册 - 码工具

总结:今天学习了java数据类型的细节,对于java是强类型语言这句话有较深感触。明天学习强制类型转换和自动类型转换,对这句话的感触或许更深。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java:变量(二)变量的基本类型 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如何将 JSpinner 的值设置为特定日期

    我有一个JSpinner我添加到JPanel我想将其时间设置为 GregorianCalendar calendar JSpinner spinner new JSpinner spinner setModel model pom add
  • 如何提取文件 jre-9/lib/modules?

    In JRE 9 lib目录 至少在 Windows 上 有一个名为modules其大小约为107 MB 是否可以提取该文件或在其中列出 java 模块 我可以看到一个名为jmod可以在jdk 9 bin jmod exe 但那是为了阅读
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • 使用 JAX-WS 的 WebLogic 中没有模式导入的单个 WSDL

    如何使用 JAX WS 配置由 WebLogic 10 3 6 生成的 Web 服务 以将对象架构包含在单个 WSDL 文件声明 而不是导入声明 中 示例代码 界面 import javax ejb Local Local public i
  • 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

    简短的问题 有没有办法强制无状态 EJB 调用的 POJO 存在于 EJB 的上下文中 以便事务和资源注入可以在 POJO 中工作 具体来说 在我想要做的事情的上下文中 如何在 EJB 的事务中包含 POJO JMS 生产者 该生产者在调用
  • 在 Junit 测试中使用 ReflectionTestUtils.setField()

    我是 JUnittesting 的新手 所以我有一个问题 谁能告诉我为什么我们使用ReflectionTestUtils setField 在我们的 Junit 测试示例中 正如评论中提到的 java 文档很好地解释了用法 但我还想给你们举
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 改变 Java 中凯撒移位的方向

    用户可以通过选择 1 向左或 2 向右移动字母来选择向左或向右移动 左边工作正常 右边不行 现在它显示了完全相同的循环 但我已经改变了所有 and 以不同的方式进行标记 最终我总是得到奇怪的字符 如何让程序将字符向相反方向移动 如果用户输入
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • Java:一个函数有多种返回类型...可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public String fetchValueAsString String key public DateTime fetchValueAsDateTime String key 我想要类似的东西
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p
  • 使用 AmazonSNSClient 发送短信时的授权

    aws 官方文档如何发送短信 http docs aws amazon com sns latest dg sms publish to phone html使用 java 中的 aws SDK 非常简单 但是 当发送如底部示例所示的消息时
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • 课堂实验-【集成学习】

    实验名称 实验 集成学习 实验目的 1 了解决策树 随机森林理论基础 2 平台实现算法 3 编程实现决策树 随机森林算法 实验原理 决策树 Decision Tree 是在已知各种情况发生概率的基础上 通过构成决策树来求取净现值的期望值大于
  • 【pandas】TypeError: concat() got multiple values for argument 'axis'

    TypeError concat got multiple values for argument axis 原代码 var LotArea data pd concat df train SalePrice df train var ax
  • Hive--添加/更改表字段类型

    Hive添加表字段 新增字段表 alter table 表名 add columns 字段名 数据类型 alter table table name add columns c time string comment 当前时间 正确 添加在
  • Mock.js配合vuex进行登录获取token

    新项目 后端数据还没准备好 没办法直接从后端获取接口数据 于是我利用Mock简单实现一下这个功能 以作为测试用 首先 利用 cnpm install mockjs save dev 指令安装完mock后 在项目里创建文件夹mock 再创建i
  • 安装python软件找不到setuptools的解决方案

    from http blog csdn net newjueqi article details 47446965 在新装的centos系统中 用源码安装supervisor提示如下 plain view plain copy root 1
  • jeecgboot使用例子

    文章目录 java代码示例 方法请求例子 switch case 语句 判断包含多个实体的List中 是实体之间的userid重复 java8如何用Stream查List对象某属性是否有重复 JAVA判断字符串是否为null 是否为空 my
  • 恭喜广工荣获2023CUBAL冠军

    恭喜广工 作者 良知犹存 转载授权以及围观 欢迎添加微信公众号 羽林君 1 竞技比赛就有这样的刺激 也许到最后一刻才能决出胜负 一个赛季努力在最后几秒进行抉择 让人热血沸腾 尤其是人们也喜欢弱者的逆袭 再一次面对清华 一支来自由全国顶级篮球
  • Vue 对象数组修改数组中的对象的某个元素,元素更新了视图不更新的问题解决

    问题描述 当我修改数组对象中的某个元素的时候 元素更新了 但是视图没有更新 例如下数组对象 attendanceTime workDays 周一 shiftId 1 shiftTime workDays 周二 shiftId 2 shift
  • 使用uni-app开发叮咚买菜的一些笔记

    本项目纯开源免费 商品信息均来自网络 如有侵权 请联系作者 我会及时删除 前一段 看到一个大佬写的叮咚买菜 挺好 于是乎自己在家也琢磨了一下 自己搞了一版本 记录一些uni app的开发事项 纯属个人总结 不对之处 还请指教 功能不是很全面
  • 硬件工程师-MOS管

    目录 DS等效电阻 Rdson MOS管 GS电容 MOS管的损耗 MOS管体二极管 讨论MOSFET的GS电容问题 MOSFET的GS电容对管子开通特性的影响 MOS管GS下拉电阻 MOS管的等效模型 MOSFET是如何进行导通的 Rds
  • OpenCV-Python 图像平滑处理1:卷积函数filter2D详解及用于均值滤波的案例

    一 图像平滑处理简介 图像平滑处理属于图像空间滤波的一种 用于模糊处理和降低噪声 模糊处理经常用于图像预处理任务中 例如在 大 目标提取之前去除图像中的一些琐碎细节 以及桥接直线或曲线的缝隙 模糊处理后的图像 可以通过阈值处理 形态处理等方
  • 线性稳压芯片LR78L05U参数

    属性 参数值 商品目录 线性稳压芯片 输出电流 100mA 稳压器数 1 输出类型 Fixed 压降 最大值 1 7V 40mA 工作温度 55 125 工作电源电流 最大值 6 1mA 输入电压 最大值 30V 输出配置 Positive
  • Unity 在编辑模式下退出游戏

    实现在编辑器环境下退出编辑器 在非编译器环境下退出游戏 我们需要判断当前是否在编辑器环境中 在unity中是使用预处理的方式判断当前的环境 常用的预处理标识符如下 标识符 解释 UNITY EDITOR 只在编辑器中编译 UNITY AND
  • el-popover 通过js手动控制弹出框显示、隐藏

    el popover 通过js手动控制弹出框显示 隐藏 说明 element ui 2 x中 el popover的显示隐藏有4种触发方式 click focus hover manual 分别是点击 聚焦 悬浮 手动 正常情况这几个触发方
  • 总结/笔记-逻辑函数封装

    逻辑函数拆分业务 将同一组件中独立的业务代码通过函数做封装处理 提高代码的可维护性 步骤 1 命名函数 use业务名 js 2 用函数封装业务逻辑 3 函数内 return 数据 方法 4 组件中 调用函数使用 封装业务逻辑函数 compo
  • java文件名命名的规则,Java文件名及其他命名规则

    http bbs csdn net topics 70157841 关于JAVA源文件命名的问题 Java文件命名 java程序是由类组成的 java应用程序必须有一个包含main方法的public类 main方法是程序的入口 java源文
  • UncaughtExceptionHandler加Process 让应用程序不异常崩溃退出

    我们在开发应用程序时难免会遇到出现没有被try catch抓住的RunTimeException信息 从而导致程序异常崩溃退出 大大的影响了用户体验 那么有没有什么方法能避免这一现象呢 网上一查资料 果然有 UncaughtExceptio
  • 延迟渲染到最终结果---大象无形(11.3.1)--2,PrePass预处理阶段--<2>大致工作流程

    正如上文所言 对静态物体和动态物体分别处理 一 静态物体 1 设置渲染状态 只计算像素深度 不计算颜色 具体内容是 关闭颜色写入 打开深度测试与深度写入 2 渲染三个绘制列表 1 只绘制深度的列表PositionOnlyDepthDrawL
  • java 内存同步_Java同步的内存影响

    小编典典 简而言之 就是 JSR 133的解释太过分了 这不是一个严重的问题 因为JSR 133是非规范性文档 不属于语言或JVM标准 而是 只有文档解释了一种可能的策略 该策略 足以 实现内存模型 但通常不是 必需的 最重要的是 有关 缓
  • java:变量(二)变量的基本类型

    二 整型与浮点型细节 1 组成 整型变量是由符号位和数位两部分组成 浮点变量是由符号位 指数尾 尾数位组成 整型和浮点型变量的首位都是符号位 用来表示数据的正负 2 整型浮点型变量的长度和取值范围是固定的 事实上同一语言的基本数据类型的长度