java 地铁费_通过java程序模拟实现地铁票价2+2=12
地铁票价在这周六开始就要上涨了,这几天做地铁明显感觉人比平常多了很多。大家也都在默默的等待这一刻的到来,尽管很不情愿,但是终究会来。
到时候肯定吐槽的人一抓一大把,毕竟一天上班4块的时代就要终结,一下子变成十几块,票价涨了,生活成本都在上涨,其它都没有变化,生活着实不容易啊。
我每天从二号线转到四号线,一天下来成本是6+6=12块。如果还是4块钱的成本就好了。最后通过程序来模拟了实现了2+2=12.
我们先来看一个简单的例子。
import java.lang.reflect.Field;
public class TestPlus {
public static void main(String args[]) {
Integer ticket_fee1=new Integer(2);
Integer ticket_fee2=new Integer(2);
System.out.println(ticket_fee1==ticket_fee2);
ticket_fee1=2;
ticket_fee2=2;
System.out.println(ticket_fee1==ticket_fee2);
System.out.println(ticket_fee1+ticket_fee2);
}
}
程序的输出是:
false
true
4
这个程序是用java实现,巧妙地运用了对象缓存。对象申请的原则来说,每次new出来的对象地址是不一样的。但是标黄的部分使用到了缓存,所以这个时候得到的地址是相同的。这个是在JVM中,默认生成了一些对象的实例,如果需要实例在池中已经存在的时候,直接返回已经生成对象的引用。这样可以减少实例的数目和改善程序性能。
补充一下,如果上面的Integer换成int,结果又会不一样。
明白了这些之后我们来实现2+2=12,毕竟我们想要的是这个结果。
import java.lang.reflect.Field;
public class TestPlus {
public static void main(String args[]) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
Integer ticket_fee1=new Integer(2);
Integer ticket_fee2=new Integer(2);
Class ticket_fee=Integer.class.getDeclaredClasses()[0];
Field c =ticket_fee.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array=(Integer[]) c.get(ticket_fee);
array[132]=array[140];
System.out.printf("票价实付金额为:%d元",ticket_fee1+ticket_fee1);
}
}
程序的输出就是:
票价实付金额为:12元
基本原理就是利用缓存的读写接口,把4这个缓存对象的指针改为指向12的实例对象了。这样程序取出4的时候,实际上返回的是12的引用
如果能够妥善使用这个程序,对于大家的生活现实意义是巨大的:)
java 地铁费_通过java程序模拟实现地铁票价2+2=12相关推荐
- 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习
中华网络安全联盟 作者:jacoo 来源:本站原创 时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...
- java gui框架_推荐!程序员整理的Java资源大全
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- linux java jar打包_【Java】Java程序打包成jar包在Linux上运行
当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...
- java内存漏洞_处理Java程序中的内存漏洞
Java 程序中也有内存漏洞?当然有.与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题.在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞.您还有机会实践一下在您自己的 ...
- java遗传算法编程_遗传算法示例程序
评论 # re: 遗传算法示例程序 回复 更多评论 2007-05-06 00:18 by 橙子的希望 我可不可以表示晕倒? # re: 遗传算法示例程序[未登录] 回复 更多评论 2007- ...
- java关闭端口_使用java代码关闭指定端口的程序-windows
转载请请在页首注明作者与出处 一:问题由史 今天遇到一个问题,就是在实现自动化灾备的时候,发现原有死掉的程序没有完全关闭,当然这都不是本文的重点,重点是这个时候,我得把它完全关闭,所以才有了这篇文章. ...
- java 在线测评_简单java在线测评程序
简单java程序在线测评程序 v一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. v二.思 ...
- 2017年java笔试题_初级java程序员笔试题
Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...
- java打印计算机_在Java程序中实现高精度打印
在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...
最新文章
- 世界上本没有架构,建设的需求多了便有了架构
- app获取个人信息是否合法_APP隐私合规介绍和实施方案
- 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
- 【内网安全】域横向网络传输应用层隧道技术
- poj3074(数独)
- 2021牛客暑期多校训练营4 B - Sample Game 期望dp\生成函数
- 方差偏差权衡_偏差偏差权衡:快速介绍
- java日志系统_Java日志系统
- OPPO K9 Pro将于9月26日登场:搭载天玑1200旗舰游戏芯
- easyUI中datagrid中getSelected和getSelections的用法
- java中子类实例化过程中的内存分配
- 死锁问题分析(个人认为重点讲到了gap间隙锁,解决了我一些不明报死锁的问题)
- 系统学习NLP(十三)--词向量(word2vec原理)
- idea中XML注释与取消注释快捷键
- 柯美smb扫描出现服务器连接错误_为什么震旦复印机扫描提示错误扫描SMB跳ED09C7?...
- 连接局域网及共享打印机提示操作无法完成(0x00000709)
- 【3D】常见的3D模型格式介绍
- Jenkins_Docker
- 每秒处理10万订单乐视集团支付架构 – CSDN博客
- python的知识体系_最新Python知识体系梳理
热门文章
- 第6期(江西省吉安市永丰县)县长手机信箱工作简报(自吹自擂政绩,自圆其说)
- 【注意力机制】Squeeze-and-Excitation Networks论文理解
- webview打开淘宝天猫链接问题
- 零相位滤波matlab,什么叫零相位滤波器(最小相位滤波器)
- 【题海算法】趣味算命
- java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库
- 【李刚-21天通关Python-03】之 运算符
- HTML基础学习记录
- 微博推广方案和网站推广方案总结
- 深度学习部署:Windows安装pycocotools报错解决方法