根据PHP习惯开发android中遇到的问题
2014-07-01 00:00
471 查看
1.时间戳问题(java时间戳精确到毫秒)
php当中的时间戳精确到秒,刚开始接触android时,想当然的以为java中的时间戳会跟php当中一样,结果调试了半天程序都有问题。后来把时间戳打印出来发现是13位的,才知道java中时间戳是精确到毫秒的。
2.put()方法
当时以为程序输出的结果会是从0到9排列的键值对,然而实际上的输出结果却是
查了下源码,JSONObject实际上引用的是HashMap中put()方法。附HashMap put()源码:
当程序试图将一个 key-value 对放入 HashMap 中时,程序首先根据该 key 的 hashCode() 返回值决定该 Entry 的存储位置:如果两个 Entry 的 key 的 hashCode() 返回值相同,那它们的存储位置相同。如果这两个 Entry 的 key 通过 equals 比较返回 true,新添加 Entry 的 value 将覆盖集合中原有 Entry 的 value,但 key 不会覆盖。如果这两个 Entry 的 key 通过 equals 比较返回 false,新添加的 Entry 将与集合中原有 Entry 形成 Entry 链,而且新添加的 Entry 位于 Entry 链的头部。
(未完待续)
php当中的时间戳精确到秒,刚开始接触android时,想当然的以为java中的时间戳会跟php当中一样,结果调试了半天程序都有问题。后来把时间戳打印出来发现是13位的,才知道java中时间戳是精确到毫秒的。
2.put()方法
JSONObject test = new JSONObject(); for (int i=0;i<10;i++){ try { test .put(""+i, i); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(test );
当时以为程序输出的结果会是从0到9排列的键值对,然而实际上的输出结果却是
查了下源码,JSONObject实际上引用的是HashMap中put()方法。附HashMap put()源码:
public V put(K key, V value) { // 如果 key 为 null,调用 putForNullKey 方法进行处理 if (key == null) return putForNullKey(value); // 根据 key 的 keyCode 计算 Hash 值 int hash = hash(key.hashCode()); // 搜索指定 hash 值在对应 table 中的索引 int i = indexFor(hash, table.length); // 如果 i 索引处的 Entry 不为 null,通过循环不断遍历 e 元素的下一个元素 for (Entry<K,V> e = table[i]; e != null; e = e.next) { Object k; // 找到指定 key 与需要放入的 key 相等(hash 值相同 // 通过 equals 比较放回 true) if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { V oldValue = e.value; e.value = value; e.recordAccess(this); return oldValue; } } // 如果 i 索引处的 Entry 为 null,表明此处还没有 Entry modCount++; // 将 key、value 添加到 i 索引处 addEntry(hash, key, value, i); return null; }
当程序试图将一个 key-value 对放入 HashMap 中时,程序首先根据该 key 的 hashCode() 返回值决定该 Entry 的存储位置:如果两个 Entry 的 key 的 hashCode() 返回值相同,那它们的存储位置相同。如果这两个 Entry 的 key 通过 equals 比较返回 true,新添加 Entry 的 value 将覆盖集合中原有 Entry 的 value,但 key 不会覆盖。如果这两个 Entry 的 key 通过 equals 比较返回 false,新添加的 Entry 将与集合中原有 Entry 形成 Entry 链,而且新添加的 Entry 位于 Entry 链的头部。
(未完待续)
相关文章推荐
- 自己在使用Android Maps API 开发地图应用程序时遇到的问题,以及解决的办法
- 关于android开发遇到的一些问题的解决办法---间断的更新
- Android开发中遇到的奇怪问题
- 在Android应用开发中遇到问题怎么办?
- ANDROID游戏开发——我在写飞机类游戏时遇到的一些问题与思考
- android开发过程中遇到的一些问题汇总
- android开发过程遇到的问题和解决方案(不断更新)
- Android综合下载系统的开发步骤以及遇到问题
- Android 开发遇到的一些问题整理
- 开发Android的时候遇到的问题及解决方法(不断更新)
- php作wap开发时遇到的问题
- Android开发时 adb shel l的使用可能遇到的问题
- Windows7部署Android开发环境傻瓜式教程(遇到的一些问题)
- android 2.3.4 在平板上开发遇到的问题
- php开发中遇到的几个不知道原因的问题
- android开发环境搭建遇到的问题(MyEclipse8.5+android sdk2.3+ADT-8.0.1
- 用php作wap开发时遇到的问题
- android开发遇到的问题(WidgetProvider, service, Thread,Handler)
- android开发——记下今天处理KeyDown和Menu事件所遇到的问题
- Android开发平台搭建遇到的ADT无法安装问题