当前位置: 首页 > news >正文 做网站现在可以挣钱吗中国免费最好用建站cms news 2025/11/2 18:44:38 做网站现在可以挣钱吗,中国免费最好用建站cms,古交做网站,网站建设捌金手指花总四什么是自动装箱和自动拆箱#xff0c;原理是什么#xff1f; 自动装箱和自动拆箱是Java编程语言中的两个重要概念#xff0c;它们涉及到基本数据类型与其对应包装类之间的自动转换。 一、定义 自动装箱#xff1a;是指Java编译器在需要将基本数据类型转换为对应的包装类…什么是自动装箱和自动拆箱原理是什么 自动装箱和自动拆箱是Java编程语言中的两个重要概念它们涉及到基本数据类型与其对应包装类之间的自动转换。 一、定义 自动装箱是指Java编译器在需要将基本数据类型转换为对应的包装类时会自动进行转换的过程。例如将int类型转换为Integer类型将double类型转换为Double类型等。 自动拆箱则是自动装箱的逆过程即Java编译器在需要将包装类对象转换为对应的基本数据类型时会自动进行转换。例如将Integer类型转换为int类型将Double类型转换为double类型等。 二、原理 自动装箱当基本数据类型被赋值给一个包装类对象时编译器会自动生成一个调用对应包装类构造函数的代码。这种转换是通过包装类的构造函数或静态工厂方法例如Integer.valueOf(int i)实现的。 自动拆箱当包装类对象被赋值给基本数据类型时编译器会自动生成一个调用包装类的xxxValue()方法的代码以获取基本数据类型的值。这种转换是通过包装类提供的xxxValue()方法实现的其中xxx表示基本数据类型如intValue、doubleValue等。 三、例子 自动装箱 int num 5; Integer numObj num; // 自动装箱编译器会将int类型的num自动转换为Integer类型的numObj 在这个例子中编译器将int类型的num自动转换为Integer类型的numObj。自动拆箱 Integer numObj 10; int num numObj; // 拆箱编译器会将Integer类型的numObj自动转换为int类型的num 在这个例子中编译器将Integer类型的numObj自动转换为int类型的num。 另外自动装箱和拆箱在Java集合框架如ArrayList中尤为重要因为这些框架只能存储对象而不能存储基本数据类型。例如 ArrayListInteger list new ArrayList(); list.add(10); // int 10 被自动装箱为 Integer 对象 int value list.get(0); // Integer 对象被自动拆箱为 int 基本类型 在这个例子中list.add(10)将int类型的10自动装箱为Integer对象然后list.get(0)将Integer对象自动拆箱为int基本数据类型。 举例 Integer i 10; //装箱 int n i; //拆箱 上面这两行代码对应的字节码为 L1LINENUMBER 8 L1ALOAD 0BIPUSH 10INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;PUTFIELD AutoBoxTest.i : Ljava/lang/Integer;L2LINENUMBER 9 L2ALOAD 0ALOAD 0GETFIELD AutoBoxTest.i : Ljava/lang/Integer;INVOKEVIRTUAL java/lang/Integer.intValue ()IPUTFIELD AutoBoxTest.n : IRETURN 从字节码中我们发现装箱其实就是调用了 包装类的valueOf()方法拆箱其实就是调用了 xxxValue()方法。 因此 Integer i 10 等价于 Integer i Integer.valueOf(10)int n i 等价于 int n i.intValue(); 注意如果频繁拆装箱的话也会严重影响系统的性能。我们应该尽量避免不必要的拆装箱操作。 private static long sum() {// 应该使用 long 而不是 LongLong sum 0L;for (long i 0; i Integer.MAX_VALUE; i)sum i;return sum; } 总的来说自动装箱和自动拆箱机制使得Java语言的基本数据类型与对象之间的转换变得更加简单和高效。然而在使用时也需要注意其潜在的问题如性能开销和可能的空指针异常等。因此在编写代码时应尽量避免在循环或大量计算中自动装箱如果可能手动进行装箱操作以减少不必要的开销。 什么浮点数运算的时候会有精度丢失的风险 浮点数运算时会有精度丢失的风险这主要源于浮点数在计算机中的表示方式及其运算特性。以下是对这一现象的详细解释 一、浮点数的表示方式 二进制系统计算机内部使用二进制系统来存储和处理数据。然而许多十进制小数在转换为二进制时无法得到一个有限长度的循环小数或终止小数例如十进制的0.1在二进制中就是无限循环小数。 IEEE 754标准浮点数在计算机中通常采用IEEE 754标准进行表示该标准定义了浮点数的编码格式包括符号位、指数部分和尾数部分。其中尾数的位数是有限的这意味着浮点数只能精确地表示一定数量的小数位数。 二、精度丢失的原因 有限位数由于浮点数的尾数位数有限因此无法精确表示所有的十进制小数。当小数位数超过尾数的表示范围时就会发生精度丢失。 舍入误差在浮点数运算过程中由于数值的内部表示不精确运算结果也需要进行舍入处理以适应浮点数的存储格式。这种舍入误差会随着多次运算的累积而逐渐增大最终导致精度丢失。 二进制与十进制的不匹配由于二进制和十进制之间的不匹配某些十进制小数在二进制中无法精确表示这也会导致精度丢失。 三、精度丢失的影响 计算误差精度丢失会导致计算结果与期望结果之间存在误差。这种误差在多次运算后会逐渐累积最终影响结果的准确性。 比较问题由于浮点数的精度问题直接比较两个浮点数是否相等通常是不可靠的。即使两个浮点数的值在视觉上非常接近它们在底层的二进制表示中也可能存在微小差异。 四、应对措施 使用BigDecimal类在需要高精度计算的场景中可以使用Java中的BigDecimal类来代替浮点数进行运算。BigDecimal类可以精确表示小数并且允许开发者控制舍入模式从而避免浮点数的精度问题。 引入误差容忍度在比较两个浮点数时可以引入误差容忍度也称为epsilon即允许两个浮点数的差值在某个很小的范围内视为相等。这样可以避免直接比较浮点数时产生的误差。 选择合适的数值类型根据实际需求选择合适的数值类型如float、double或BigDecimal。在可能的情况下优先选择精度更高的数值类型以减少精度丢失的风险。 综上所述浮点数运算时会有精度丢失的风险这主要源于浮点数的表示方式和运算特性。为了降低这种风险可以采取相应的应对措施来确保计算的准确性。 如何解决浮点数运算的精度丢失问题 浮点数运算的精度丢失问题在计算机科学中是一个普遍存在的挑战源于二进制无法精确表示某些十进制小数以及运算过程中的舍入误差。以下是一些解决浮点数运算精度丢失问题的方法 一、使用整数进行计算 原理 将浮点数转换为整数进行计算可以避免浮点数表示不精确的问题。通过放大或缩小数值的倍数如乘以10的幂将浮点数转换为整数进行计算然后再将结果转换回浮点数。 function multiply(a, b) { const multiplier 10000; // 选择一个合适的倍数如10000 const intA a * multiplier; const intB b * multiplier; return (intA * intB) / (multiplier * multiplier); } 二、使用toFixed()方法 原理 toFixed()方法可以将浮点数四舍五入到指定的小数位数。需要注意的是toFixed()返回的是一个字符串需要使用parseFloat()将其转换回数字。 const result parseFloat((0.1 0.2).toFixed(10)); 三、使用第三方库 原理 有一些第三方库专门用于处理浮点数计算精度问题如decimal.js、bignumber.js等。这些库提供了一系列方法来进行高精度的浮点数计算。示例 使用decimal.js库 import Decimal from decimal.js; const a new Decimal(0.1); const b new Decimal(0.2); const result a.plus(b).toNumber(); 四、使用BigDecimal类Java 原理 在Java中BigDecimal类可以精确表示小数并且允许开发者控制舍入模式。BigDecimal提供了丰富的数学运算方法可以避免浮点数的精度问题。 import java.math.BigDecimal; public class BigDecimalExample { public static void main(String[] args) { BigDecimal a new BigDecimal(0.1); BigDecimal b new BigDecimal(0.2); BigDecimal sum a.add(b); System.out.println(sum); // 输出: 0.3 } } 五、引入误差容忍度epsilon 原理 在比较两个浮点数时由于它们在底层的二进制表示中可能存在微小差异直接比较可能会导致错误的结果。引入误差容忍度epsilon即允许两个浮点数的差值在某个很小的范围内视为相等。 double a 0.1 0.2; double b 0.3; double epsilon 1e-10; // 容忍度 System.out.println(Math.abs(a - b) epsilon); // 输出: true 六、使用整数表示货币值 原理 在处理货币运算时可以使用整数来表示货币值如以分为单位表示货币值而不是以元从而避免浮点数精度问题。 int priceInCents 100; // 1.00元表示为100分 int quantity 3; int totalCostInCents priceInCents * quantity; System.out.println(总价: (totalCostInCents / 100.0) 元); // 输出: 3.00 元 综上所述解决浮点数运算精度丢失问题的方法有多种可以根据具体场景和需求选择合适的方法。在实际应用中应尽量避免在需要高精度计算的场景中使用浮点数而是采用整数或其他高精度数据类型进行计算。 超过Long整型的数据应该如何表示 基本数值类型都有一个表达范围如果超过这个范围就会有数值溢出的风险。 在 Java 中64 位 long 整型是最大的整数类型。 long l Long.MAX_VALUE; System.out.println(l 1); // -9223372036854775808 System.out.println(l 1 Long.MIN_VALUE); // true BigInteger 内部使用 int[] 数组来存储任意大小的整形数据。 相对于常规整数类型的运算来说BigInteger 运算的效率会相对较低。 文章转载自: http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn http://www.morning.zcnwg.cn.gov.cn.zcnwg.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.nwllb.cn.gov.cn.nwllb.cn http://www.morning.rrpsw.cn.gov.cn.rrpsw.cn http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn http://www.morning.xmttd.cn.gov.cn.xmttd.cn http://www.morning.wztlr.cn.gov.cn.wztlr.cn http://www.morning.5-73.com.gov.cn.5-73.com http://www.morning.rlbc.cn.gov.cn.rlbc.cn http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn http://www.morning.wttzp.cn.gov.cn.wttzp.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.lzph.cn.gov.cn.lzph.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn http://www.morning.ylxgw.cn.gov.cn.ylxgw.cn http://www.morning.prmyx.cn.gov.cn.prmyx.cn http://www.morning.thzgd.cn.gov.cn.thzgd.cn http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn http://www.morning.wnqbf.cn.gov.cn.wnqbf.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.cfqyx.cn.gov.cn.cfqyx.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.rlnm.cn.gov.cn.rlnm.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.qdzqf.cn.gov.cn.qdzqf.cn http://www.morning.hdpcn.cn.gov.cn.hdpcn.cn http://www.morning.gltmz.cn.gov.cn.gltmz.cn http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn http://www.morning.stbfy.cn.gov.cn.stbfy.cn http://www.morning.gfrtg.com.gov.cn.gfrtg.com http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn http://www.morning.iterlog.com.gov.cn.iterlog.com http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.yjknk.cn.gov.cn.yjknk.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.kmcfw.cn.gov.cn.kmcfw.cn http://www.morning.rftk.cn.gov.cn.rftk.cn http://www.morning.ydzly.cn.gov.cn.ydzly.cn http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.qrsrs.cn.gov.cn.qrsrs.cn http://www.morning.ymrq.cn.gov.cn.ymrq.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.thjqk.cn.gov.cn.thjqk.cn http://www.morning.fbxdp.cn.gov.cn.fbxdp.cn http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn http://www.morning.mbprq.cn.gov.cn.mbprq.cn http://www.morning.rmfwh.cn.gov.cn.rmfwh.cn http://www.morning.tsyny.cn.gov.cn.tsyny.cn http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.sgpny.cn.gov.cn.sgpny.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.mxlwl.cn.gov.cn.mxlwl.cn http://www.morning.gbjxj.cn.gov.cn.gbjxj.cn http://www.morning.gnwse.com.gov.cn.gnwse.com http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn 查看全文 http://www.tj-hxxt.cn/news/271614.html 相关文章: 中企动力做的保安服务网站网站内容更新软件 建设部网站1667号下载深圳网站建设定制开发 .超凡科技 微信app网站建设四川纵川建设机械有限公司网站 网站推广由什么样的人来做戒赌网站怎么做 织梦修改网站后备份新出网页游戏 平阳高端网站建设服务器怎么放网站吗 网站开发按钮图片素材自己做的网站怎么爬数据库 广西 南宁 微信微网站开发广西住房和城乡建设局官网 用帝国cms做企业网站版权程序外包价格 小松建设的官方网站企业管理咨询服务内容 东莞网站的制作成立公司的好处 网站开发技术文档包含台州网站建设费用 云服务器发布网站自适应网站开发工具 php做网站参考文献通辽市工程建设网站 方特网站是谁做的wordpress lovevideo 为了做宣传网站而注册公司毕设做网站的系统概述怎么写 娄底网站建设报价长沙做个网站多少钱 使用cnnic证书的网站石家庄网站制作招聘 网站做多少层级徐州建站程序 如何做企业网站内容策划网站开发培训周末班 西部数码虚拟主机怎么做网站推广策略及推广方式 html5网站源代码企业所得税优惠政策最新2022计算 鹿邑建设局官方网站河北网站备案系统 只做网站的人员工资惠州百度关键词优化 做网站看好金石网络自助建站竹子 做公司 网站百度爱采购怎么优化排名 网站栅格布局广东网站建设制作价格低 wordpress建站吧建立电影网站教程 网站服务器维护工具肥西县建设发展局网站 上海做营销网站哪个公司好网页具有动画网站建设技术