地铁票价在这周六开始就要上涨了,这几天做地铁明显感觉人比平常多了很多。大家也都在默默的等待这一刻的到来,尽管很不情愿,但是终究会来。

到时候肯定吐槽的人一抓一大把,毕竟一天上班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相关推荐

  1. 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习

    中华网络安全联盟    作者:jacoo    来源:本站原创    时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...

  2. java gui框架_推荐!程序员整理的Java资源大全

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  3. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

  4. java内存漏洞_处理Java程序中的内存漏洞

    Java 程序中也有内存漏洞?当然有.与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题.在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞.您还有机会实践一下在您自己的 ...

  5. java遗传算法编程_遗传算法示例程序

    评论 # re: 遗传算法示例程序  回复  更多评论 2007-05-06 00:18 by 橙子的希望 我可不可以表示晕倒? # re: 遗传算法示例程序[未登录]  回复  更多评论 2007- ...

  6. java关闭端口_使用java代码关闭指定端口的程序-windows

    转载请请在页首注明作者与出处 一:问题由史 今天遇到一个问题,就是在实现自动化灾备的时候,发现原有死掉的程序没有完全关闭,当然这都不是本文的重点,重点是这个时候,我得把它完全关闭,所以才有了这篇文章. ...

  7. java 在线测评_简单java在线测评程序

    简单java程序在线测评程序 v一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. v二.思 ...

  8. 2017年java笔试题_初级java程序员笔试题

    Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...

  9. java打印计算机_在Java程序中实现高精度打印

    在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...

最新文章

  1. 世界上本没有架构,建设的需求多了便有了架构
  2. app获取个人信息是否合法_APP隐私合规介绍和实施方案
  3. 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
  4. 【内网安全】域横向网络传输应用层隧道技术
  5. poj3074(数独)
  6. 2021牛客暑期多校训练营4 B - Sample Game 期望dp\生成函数
  7. 方差偏差权衡_偏差偏差权衡:快速介绍
  8. java日志系统_Java日志系统
  9. OPPO K9 Pro将于9月26日登场:搭载天玑1200旗舰游戏芯
  10. easyUI中datagrid中getSelected和getSelections的用法
  11. java中子类实例化过程中的内存分配
  12. 死锁问题分析(个人认为重点讲到了gap间隙锁,解决了我一些不明报死锁的问题)
  13. 系统学习NLP(十三)--词向量(word2vec原理)
  14. idea中XML注释与取消注释快捷键
  15. 柯美smb扫描出现服务器连接错误_为什么震旦复印机扫描提示错误扫描SMB跳ED09C7?...
  16. 连接局域网及共享打印机提示操作无法完成(0x00000709)
  17. 【3D】常见的3D模型格式介绍
  18. Jenkins_Docker
  19. 每秒处理10万订单乐视集团支付架构 – CSDN博客
  20. python的知识体系_最新Python知识体系梳理

热门文章

  1. 第6期(江西省吉安市永丰县)县长手机信箱工作简报(自吹自擂政绩,自圆其说)
  2. 【注意力机制】Squeeze-and-Excitation Networks论文理解
  3. webview打开淘宝天猫链接问题
  4. 零相位滤波matlab,什么叫零相位滤波器(最小相位滤波器)
  5. 【题海算法】趣味算命
  6. java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库
  7. 【李刚-21天通关Python-03】之 运算符
  8. HTML基础学习记录
  9. 微博推广方案和网站推广方案总结
  10. 深度学习部署:Windows安装pycocotools报错解决方法