android开发总结的技术经验60条
Android学习心得

Android学习心得在过去的几年里,我一直对Android开发充满了浓厚的兴趣。
我花了大量的时间和精力学习Android的相关知识,并且获得了宝贵的学习经验。
在这里,我将分享我在学习Android开发过程中的一些心得体会。
首先,学习Android开发需要有坚定的决心和耐心。
Android开发是一个非常庞大、复杂的领域,需要我们持续不断地学习和探索。
一开始可能会感到困难和挫败,但只要保持积极的态度和持续的学习动力,我们就能够克服困难,并且取得进步。
其次,学习Android开发需要系统性的学习计划。
Android开发有很多不同的技术点,如Java编程、Android SDK、Android Studio等等。
我们需要有一个合理的学习计划来规划我们的学习进度。
建议先从基础知识开始学习,逐渐深入理解和掌握更高级的技术点。
在学习的过程中,我们需要注意自己的学习方法。
对于初学者来说,我们可以从简单的示例代码开始学习,理解每个部分的作用和原理。
同时,也要善于利用网络上的学习资源,如网上教程、博客等,这些资源能够帮助我们更好地理解和掌握Android开发的知识。
另外,项目实战也是学习Android开发的重要方式。
通过实际的开发项目,我们能够将之前学到的知识应用到实际中,加深对知识的理解。
在项目的过程中,我们还能够锻炼我们的问题解决能力和协作能力。
在学习的过程中,我们还需要学会与人交流。
与其他学习者一起进行讨论和交流,能够帮助我们更好地理解和解决问题。
同时,参加社区活动也是一个很好的学习机会,我们可以在这里结识到很多志同道合的伙伴,并且分享和学习他们的经验。
此外,不断地学习和探索也是学习Android开发的重要方面。
Android技术在不断发展和更新,我们需要始终保持学习的状态,以跟上最新的技术潮流。
通过不断地学习和探索,我们才能够进一步提升自己的技术水平,并且在Android开发领域中取得更好的成果。
在学习Android开发的过程中,我遇到了很多困难和挑战,但也获得了很多成就感和满足感。
年终总结android

年终总结:Android开发思路逐步演进引言随着移动互联网的快速发展,Android操作系统成为了全球最广泛使用的移动操作系统之一。
作为一名Android开发者,在经历了一年的技术学习和项目开发之后,我深刻体会到了开发过程中的思考方式的重要性。
本篇文章将以“step by step thinking”为主题,分享我在过去一年中在Android开发中的经验和思考。
第一步:需求分析在开始具体的Android开发之前,我们首先需要对项目需求进行充分的分析和理解。
这一步是整个开发过程中最重要的一步,它决定了后续开发的方向和目标。
我们需要与产品经理和设计师紧密合作,明确用户的需求和期望,然后将其转化为具体的功能和界面设计。
第二步:技术选型一旦我们明确了项目需求,接下来就需要选择适合的技术栈来进行Android开发。
Android开发涉及到多个方面的知识,如Java编程语言、Android SDK、Kotlin语言等。
根据项目的特点和团队成员的技术水平,我们可以选择合适的技术栈,并进行相应的学习和准备工作。
第三步:架构设计良好的架构设计可以提高项目的可维护性和扩展性。
在Android开发中,常用的架构模式有MVC、MVP、MVVM等。
我们可以根据项目的规模和复杂度选择合适的架构模式,并结合Android Jetpack提供的组件,如ViewModel、LiveData等,来构建可靠和高效的应用程序架构。
第四步:编码实现在完成前面的准备工作之后,我们可以开始具体的编码实现。
在Android开发中,我们需要熟悉Android Studio等开发工具的使用,掌握常用的UI控件和布局方式,以及网络请求、数据库操作、权限管理等开发技巧。
同时,良好的编码规范和注释习惯也是保证代码质量的重要因素。
第五步:测试与调试在完成编码实现之后,我们需要进行系统测试和调试工作。
通过专业的测试工具和技术,如JUnit、Espresso等,我们可以对应用程序的功能和性能进行全面的测试,确保其能够正常运行和满足需求。
移动开发与设计android个人总结

移动开发与设计android个人总结在过去的几年里,移动应用已经成为人们日常生活中不可或缺的一部分。
而作为最流行的移动操作系统之一,Android开发和设计在移动开发领域占据着重要的地位。
在我过去的经验中,我想通过这篇文章分享一下我在Android开发和设计方面的个人总结和经验。
首先,在移动开发中,优秀的用户界面设计对于吸引用户和提供出色的用户体验至关重要。
在设计Android应用时,遵循Android Material Design原则是必不可少的。
Material Design提供了一种统一的设计语言,使得用户能够轻松地理解和使用不同的应用程序。
我始终坚持严格遵循Material Design的准则,包括使用明确的图标和按钮、保持一致的颜色和字体选择,并确保界面的可访问性和易用性。
其次,在移动开发和设计过程中,良好的代码结构和组织是非常重要的。
使用面向对象的编程技术,我通常将代码分解为小而可重用的模块,每个模块处理特定的功能或任务。
这种模块化的方法不仅使代码更易于维护,还提高了开发效率。
此外,我经常使用版本控制工具,如Git,以确保代码的版本控制和管理,方便多人合作开发。
在Android开发中,我发现在应用的性能和效率方面有一些关键要点。
首先是内存管理和资源优化。
通过使用适当的数据结构和算法,以及根据实际需要及时释放资源,可以减少应用占用的内存和CPU资源。
其次是网络请求和数据处理的优化。
合理使用缓存技术、异步任务和线程池等方法,可以提高网络请求和数据处理的效率和响应速度。
除此之外,在Android开发中,我也注意到了一些用户隐私和安全方面的问题。
用户数据的保护和安全性是重中之重。
我会严格遵循隐私政策要求,确保用户数据不被泄露或滥用。
此外,我会使用加密技术来保护在应用中传输的敏感信息,并遵循最佳实践,如安全存储和安全传输协议。
最后,测试和调试是移动开发过程中不可忽视的一部分。
没有一个完美无缺的应用程序,因此我会在开发过程中进行持续的测试和调试,以解决可能存在的问题和错误。
android 实验心得 -回复

android 实验心得-回复Android 实验心得在进行Android实验的过程中,我收获了许多宝贵的经验和知识。
以下是我总结的一些心得体会。
首先,对于Android开发来说,良好的项目架构和代码组织非常重要。
在实验中,我尝试了各种不同的项目结构和代码组织方式。
最终,我发现采用MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)的架构能够更好地组织代码,并保持代码的可维护性和可扩展性。
通过良好的结构化和模块化,我能够更轻松地理解和修改代码。
其次,熟悉Android的组件和API是非常重要的。
为了更好地完成实验,我积极学习和掌握Android的各种组件,如Activity、Fragment、Service、BroadcastReceiver等,并了解它们之间的相互关系和交互方式。
同时,我也深入学习了常用的API,如网络请求、数据库操作、权限管理等,这些都对于Android开发非常重要。
通过学习和实践,我逐渐掌握了这些组件和API的使用方法,并能够在实验中熟练运用。
第三,对于布局和界面设计,我学到了一些有用的技巧。
Android提供了丰富的布局和控件,可以根据需求选择合适的布局和控件来设计界面。
在实验中,我学会了使用LinearLayout、RelativeLayout、ConstraintLayout 等常用布局,以及TextView、Button、ImageView等常用控件。
同时,我也了解到Android的界面设计原则,例如目的明确、简洁直观、一致性等,这些原则对于设计出好的用户界面非常重要。
在实验中,我运用这些技巧和原则,设计出了具有良好用户体验的界面。
第四,调试和测试是Android开发过程中不可或缺的环节。
在实验中,我遇到了许多Bug和问题,通过调试和测试,我能够快速定位问题,并找到解决方案。
我学会了使用Android Studio提供的调试工具,如Logcat、断点调试等,能够迅速定位和修复代码中的错误。
Android程序员必须知道的53个知识点

9. Android 开发进阶之 NIO 非阻塞包(一)
对于 Android 的网络通讯性能的提高,我们可以使用 Java 上高性能的 NIO (New I/O) 技术进行处理,NIO 是从 JDK 1.4 开始引入的,NIO 的 N 我们可以理解为 Noblocking 即非阻塞的意思,相对应传统的 I/O,比如 Socket 的 accpet()、read() 这些方法而言都是阻塞的。 NIO 主要使用了 Channel 和 Selector 来实现,Java 的 Selector 类似 Winsock 的 Select 模式, 是一种基于事件驱动的,整个处理方法使用了轮训的状态机,如果你过去开发过 Symbian 应用的话这种方式有点像活动对象, 好处就是单线程更节省系统开销,NIO 的好处可以很好的处理并发,对于 Android 网游开发来说比较关键,对于多点 Socket 连接而言使用 NIO 可以大大减少线程使用,降低了线程死锁的概率,毕竟手机游戏有 UI 线程,音乐线程,网络线程,管理 的难度可想而知,同时 I/O 这种低速设备将影响游戏的体验。
7. Android 的 ImageButton 问题
很多网友对 Android 提供的 ImageButton 有个疑问,当显示 Drawable 图片时就不会再显示文字了, 其实解决的方法有两种,第一种就是图片中就写入文字,但是这样解决会增加程序体积,同时硬编码方式会影响多国语 言的发布。第二种解决方法很简单,通过分析可以看到 ImageButton 的 layout,我们可以直接直接继承, 添加一个 TextView,对齐方式为右侧即可实现 ImageButton 支持文字右侧显示。
android知识点全面总结

android知识点全面总结【篇一:android知识点全面总结】说明:本篇博客只是一个知识整理,因为网上对于android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关知识的搜索过程,方便查找相关知识。
activity【篇二:android知识点全面总结】做android开发大家都知道知识点比较琐碎和庞大,但是对于程序员来说知道的越多,对以后的就业和薪资还是有好处的,因为面试的时候面试官指不定会问你android哪方面的知识,如果答得好呢,薪资这块还是自己有掌控力的喽,这些知识不必大家有多么精通,了解以及理解即可,但是对于高级程序员来说,这些必须掌握,别问我为什么,任性!!android 所有知识点总结:1.掌握android编程的基本概念与要点,android sdk及其开发环境搭建、android项目结构分析、2.android 应用设计模式、文件系统、4.、android四大核心组件(activity、 broadcastreceiver、service和contentprovider)、5 监听contentprovider数据变化、urimatcher、contenturis的使用、对嵌入式sqlite关系数据库进行增、删、改、查和事务管理、6 采用listview实现数据列表显示、7 应用打包与安装。
8网络通信、多线程断点续传与下载、9activity的管理、bundle的使用、为intent附加数据、activity生命周期、activity的启动模式、10 建立能与访问者进行相互通信的本地服务、服务的生命周期、使用aidl和远程服务实现进程通信11 进程间的数据传递、音频采集与播放、使用soundpool播放音效、视频播放、操纵摄像头、视频采集、方向、加速度(重力)、光线、磁场、距离(临近性)、温度等传感器的使用、12 gps定位服务。
移动开发之Android开发的十七条建议
移动开发之Android开发的十七条建议本文沙漠风将分享Android开发过程中整理收集的一些精华经验。
希望可以帮助开发者更快上手,避免重复我们犯的错误。
1、不要重复造轮子最初,我有一种不愿使用开源库的思想。
不管需要什么,我总想自己去实现。
这是一种非常可怕的思想。
如果在开发app的时候遇到一个问题,而这个问题已经被别人很好的解决了,为什么不使用它呢?你可以节省大量时间啊。
把更多的精力花在app的业务逻辑上吧。
如果你想在app中发起一个网络调用,是不需要自己去造一个Retrofit来的。
Bonus:Android Arsenalmaintains a database of almost all Android librari esever made.Go check it out.2、别盲目的选择library在Github上有许多免费使用的开源库,但是别因太激动而盲目的使用。
检查library的star数目,越多越好。
看看作者是否还创建了其它的一些受欢迎的库。
查看issues(打开和关闭的都看),这可以让你对这个library的健壮性和稳定性有更好的了解。
如果你时间充足,你应该深入这个库的代码看看它到底是都真的值得使用。
你只需要确保它的代码是可靠的,bug不多的,高质量的。
小贴士:使用Dryrun的命令行尝试任何library。
3、坐下来,喝杯咖啡,阅读更多的代码我们在阅读别人代码上花的时间比自己写代码的时间多得多,如果你不是的话,从今天就开始做吧。
不管你现在能写出什么样的代码,总是因为在某年某月你阅读和学习到了什么东西。
它只是你已有知识的反映。
安卓的伟大之处就在于它是一个完全开源的平台。
可以去深入研究这些代码看看他们是如何实现framework的.Github中有成千上万的开源库,只需选择一个看看人家是如何实现的,福利:这里是一些最佳library的列表,这里是几乎所有开源安卓app的列表。
android专业技能总结
android专业技能总结1. public class HandlerActivity extends Activity implements Runnable{2.3. /**更新时间**/4. public final static int UPDATE_TIME =0;5. /**更新时间成功**/6. public final static int UPDATE_COMPLETED =1;7.8. /**记录显示时间超过10秒结束线程**/9. private int mShowNumber = 0;10.11. /**开始计时按钮**/12. private Button mButton = null;13.14. /**计时显示内容**/15. private TextView mTextView = null;16.17. /**线程**/18. private Thread mThread = null;19.20. /**线程关闭的标志**/21. private boolean mRunning = false;22.23. Handler handler = new Handler {24. @Override25. public void handleMessage {26.bundle= ;28.//通过key的名称拿到它的值number = ;30.//为handler接收到的消息编号{UPDATE_TIME:;;UPDATE_COMPLETED:;;38.};40. }41. };42.43. @Override44. protected void onCreate {45. setContentView;46.47. /**拿到button 与 TextView 对象**/48. mButton = findViewById;49. mTextView = findViewById;50. mThread = new Thread;51.52. {53.@Overridevoid onClick {55./**点击按钮后开始线程开始计时**/= true;;58.}59. });60.61. ;62. ;63. }64.65. public void ShowDialog {66. builder = new ;68. ;69. ;70. {void onClick {;73.}74. });75. ;76. }77.78.79.80. @Override81. public void run {82.83. while {{++;86./** 把须要的数据放入bandle中 **/ bandle = new Bundle;);89.90./** 设置这条信息的编号为更新时间 **/91./** 将bandle写入message中 **/92./** 最后将这个message发送出去 **/93./** mShowNumber小于10更新时间否则更新完毕**/msg = new Message;{96. = UPDATE_TIME;97.}else {98. mRunning = false;99. = UPDATE_COMPLETED;100.};;;104.} catch {;106.}107. }108. }109. }通知栏信息Notifation通知栏会在屏幕上方向用户提示信息但是不会打断用户正在阅读的内容,除非用户手动将Notifation通知栏拉下。
安卓应用开发高级技巧
安卓应用开发高级技巧安卓应用开发已经成为了当前移动互联网领域的重要一环。
为了在激烈的市场竞争中脱颖而出,开发人员需要掌握一些高级技巧来提升应用的质量和用户体验。
本文将介绍一些安卓应用开发的高级技巧,帮助开发者更好地应对挑战。
一、多线程编程多线程编程是安卓应用开发中非常重要的一部分。
通过使用多线程,应用能够同时执行多个任务,提高了应用的响应速度和并发处理能力。
在进行多线程编程时,需要注意以下几点:1. 合理使用线程池:线程池可以管理线程的创建和销毁,减少了线程的创建和销毁带来的性能开销。
合理配置线程池大小,可以提高应用的性能和稳定性。
2. 避免主线程阻塞:主线程负责处理应用的UI渲染和用户交互,如果主线程被阻塞,就会导致应用的卡顿和不稳定。
需要将耗时的任务放到子线程中执行,避免阻塞主线程。
3. 线程同步:在多线程环境下,访问共享数据可能会导致数据不一致的问题。
需要使用线程同步机制来保证数据的一致性,例如使用锁或者并发数据结构。
二、内存管理在安卓应用开发中,合理管理内存是非常重要的。
由于手机内存资源有限,应用占用过多的内存会导致系统性能下降和用户体验差。
以下是一些内存管理的高级技巧:1. 使用内存分析工具:通过使用内存分析工具,可以查看应用的内存使用情况,找到内存泄漏和占用过多内存的地方,及时进行优化。
2. 善用缓存:对于频繁读写的数据,可以使用缓存来提高读写速度,减少对内存的占用。
同时,缓存的合理清理也是必要的,避免内存占用过大。
3. 异步加载大图:在加载大图时,可以使用异步加载的方式,避免阻塞主线程。
同时,可以使用图片压缩和缓存技术减少内存占用。
三、性能优化优化应用的性能可以提升用户体验,减少用户流失。
以下是一些安卓应用性能优化的高级技巧:1. 减少网络请求次数:合并网络请求、使用缓存技术、压缩数据等方式可以减少网络请求次数,提高应用的响应速度。
2. 延迟加载:将一些不必要立即加载的模块或数据进行延迟加载,减少启动时间和内存占用。
Android开发心得:成为高手必看的10个建议
Android开发心得:成为高手必看的10个建议Android开发心得:成为高手必看的10个建议Android开发经验:成为高手必看的10个建议1、Q:如何成为高手?A:成为一名真正的Android高手必须掌握和遵循的一些准则:1)学会懒惰aDon't Reinvent the Wheel(不要重复发明轮子)。
bInventing the Wheel(发明轮子)。
cDon't Reinvent the Wheel(不要重复发明轮子)。
“轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。
“不要重复发明轮子”意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。
拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
2)精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)3)编写可重用、可扩展、可维护、灵活性高的代码4)高效的编写高效的代码5)学会至少一门服务器端开发技术2、Q:JNI是什么?A:JNI是Java Native Interface的缩写,中文为JAVA本地调用。
从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
JNI 一开始是为了本地已编译语言,尤其是 C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。
但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。
JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。
3、Q:Android和Linux的区别?A:Android是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
android开发总结的技术经验60条 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。
2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOrm库,超级清晰且重心可以放在业务上不用关心数据库细节。
3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中. 4. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原则,一个类专心做好一件事情更为清晰。
5. 如果数据没有必要加载,数据请务必延迟初始化,谨记为用户节省内存,总不会有坏处。 6. 异常抛出,在合适的位置处理或者集中处理,不要搞的到处是catch,混乱且性能低,尽量不要在循环体中捕获异常,以提升性能。
7. 地址引用链长时(3个以上指向)小心内存泄漏,和警惕堆栈地址指向,典型的易发事件是:数据更新了,ListView视图却没有刷新,这时Adapter很可能指向并的并不是你更新的数据容器地址(一般为List)。
8.信息同步:不管是数据库还是网网络操作,新插入的数据注意返回ID(如果没有赋予唯一ID),否则相当于没有同步。
9.多线程操作数据库时,db关闭了会报错,也很可能出现互锁的问题,推荐使用事务,推荐使用自动化的LiteOrm库操作。
10.做之前先考虑那些可以公用,资源,layout,类,做一个结构、架构分析以加快开发,提升代码可复用度。
11. 有序队列操作add、delete操作时注意保持排序,否则你会比较难堪喔。 12. 数据库删除数据时,要注意级联操作避免出现永远删不掉的脏数据喔。 13. 关于形参实参:调用函数时参数为基本类型传的是值,即传值;参数为对象传递的是引用,即传址。
14. listview在数据未满一屏时,setSelection函数不起作用;ListView批量操作时各子项和视图正确对应,可见即所选。 15 控制Activity的代码量,保持主要逻辑清晰。其他类遵守SRP(单一职能),ISP(接口隔离)原则。
16. arraylist执行remove时注意移除int和Integer的区别。你懂得。 17. Log请打上Tag,调试打印一定要做标记,能定位打印位置,否则尴尬是:不知道是哪里在打印。
18. 码块/常量/资源可以集中公用的一定共用,即使共用逻辑稍复杂一点也会值得,修改起来很轻松,修改一种,到处有效。
19. setSelection不起作用,尝试smoothScrollToPosition。ListView的LastVisiblePosition(最后一个可见子项)会随着getView方法执行位置不同变动而变。
20.与Activity通讯使用Handler更方便; 如果你的框架回调链变长,考虑监听者模式简化回调。
21.监听者模式不方便使用时,推荐EventBus框架库,使用时间总线,没接触过的同学可以自行脑补一下哦。
22. Handler在子线程线程使用Looper.prepare,或者new的时候给构造函数传入MainLooper来确保在主线程run。
23. timepicker 点击确定后需要clearFocus才能获取手动输入的时间。 24. 构造函数里面极度不推荐启动异步线程,会埋下隐患。比如:异步线程调用了本例的示例,就会悲剧等着崩溃吧。
25. 千万不要理所当然的以为一个对象不会为空,充分的做好容错处理;另外注意null也可以插入ArrayList等容器中。
26. ExpandableListView的子列表不能点击(禁用)要把Adapter的isChildSelectable方法返回true。
27. UI显示注意内容过长的情形要提前使用ScrollView否则在小手机上尴尬你懂得。 28. 注意按钮的感应范围不小于9mm否则不易点击;输入框注意光标的位置更易用户输入。
29. 服务器和客户端尽量统一唯一标识(有可能是ID),否则多少会有歧义和问题。 30. 注释,尽量去写足够的注释,去描述一下思路,达到看了可以明白某一块代码的效果。 31. 完整型数据一定要用Sqlite的Transaction,大数据一定要用。粗略测试插入100个数据有20倍的提速,插入1000个数据就有100多倍的提速。
32. 避免String=”null”的情况出现String = null,=””都可以。避免出现title=”无主题”这样的数据提交到数据库浪费空间。
33. 存在多个不同的dbhelper实例情况下,sqlitedatabase对象必然存在不同的实例,多线程同时写入数据,轮流写入数据时会不定时的报db is locked,引起崩溃,不管是操作同张表还是异表。读和写可以同时并发,轮流无规律的交替执行。同时写入数据时解决方案是用并发的每个线程都用事务,db则不会lock,按次整体写入。
34. 建议整个应用维护一个dbhelper实例,只要db没有关闭,全局就只有一个db实例,多线程并发写入db不会lock,严格交替进行写入:123123123。。。(123代表不同线程,轮流插入一个记录),读和写均不会锁住db,读写交替并没有规律,执行次数和程度看cpu分配给哪个线程的时间片长。
35. 一个任务使用事务嵌套N个事务,N个事务中有一个失败,这个任务整体失败,全部成功后,数据才写入,具有安全性,整体性。并且事务写入大批量数据的效率经实际测试成百上千倍的高于一般的单个写入。数据库大量数据、多线程操作建议使用LiteOrm数据库框架,更稳定简单。
36. 经常需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。
37. Long a; 判断a有没有赋值,if(a == 0)在a没有赋值情况下会报错。应该if(a == null),Integer、Floag等也一样,原因你懂,只是提醒你要小心喔。
38. 编码遇到读写、出入等逻辑要双向考虑,文件导入导出,字符字节相互转换都要两边转码。
39. 一个 int 值与一个 Integer 对象(能包含 int 值的最小对象)的大小比率约为 1:4(32位和64位机器有不同)。额外的开销源于 JVM 用于描述 Java 对象的元数据也就是 Integer,(Long、Double等也是)。
40. 对象由元数据和数据组成。元数据包括类(指向类的指针,描述了类的类型),标记(描述了对象状态,如散列码、形状等),锁(对象同步信息)。数组对象还包括大小的元数据。
41. 一个在 32 位 Java 运行时中使用 1GB Java 堆的 Java 应用程序在迁移到 64 位 Java 运行时之后,通常需要使用 1.7GB 的 Java 堆。 42. Hash 集合的访问性能比任何 List 的性能都要高,但每条目的成本也要更高。由于访问性能方面的原因,如果您正在创建大集合(例如,用于实现缓存),那么最好使用基于 Hash 的集合,而不必考虑额外的开销。
43. 对于并不那么注重访问性能的较小集合而言,List 则是合理的选择。ArrayList 和 LinkedList 集合的性能大体相同,但其内存占用完全不同:ArrayList 的每条目大小要比 LinkedList 小得多,但它不是准确设置大小的。List 要使用的正确实现是 ArrayList 还是 LinkedList 取决于 List 长度的可预测性。如果长度未知,那么正确的选择可能是 LinkedList,因为集合包含的空白空间更少。如果大小已知或可预知或比较小,那么 ArrayList 的内存开销会更低一些。
43. 选择正确的集合类型使你能够在集合性能与内存占用之间达到合理的平衡。除此之外,你可以通过正确调整集合大小来最大化填充率、最小化未得到利用的空间,从而最大限度地减少内存占用。
44. 充分利用封装(提供接口类来控制访问数据)和委托(helper对象来实施任务)两种理念。
45. 延迟分配 Hashtable:如果 Hashtable 为空是经常发生的普遍现象,那么仅在存在需要存储的数据时分配 Hashtable 应该是一种合理的做法。将 Hashtable 分配为准确的大小:虽然会有默认大小,但建议使用更为准确的初始大小。
46. EditText在setText时不要忘记是否需要setSelection。在大多数情况下是需要设置的。 47. XML两种情况要注意:1 属性名字时候有重复;2 注意文本是否包含非法字符,注意使用CDATA包裹。
48. 当逻辑没有明显问题时考虑对象属性、函数参数、网络传输参数是否全部了解,是否设置正确。
49. 当出现编译或者运行时错误,别人那没问题时,考虑你的编译环境和环境版本是否有问题。
50. 由于String类的immutable性质,当String变量需要经常变换其值时,应该考虑使用StringBuilder提升性能,多线程使用StringBuffer操作string提高程序效率。
51. java 栈的优势是比堆速度快,可共享,主要存放临时变量、参数等,堆的优势是可动态分配内存大小。
52. 只要是用new()来新建对象的,都会在堆中创建,而且其数据是单独存值的,即使与栈中的数据(值)相同,也不会与栈中的数据共享。
53. 基本数据类型定义的变量称自动变量,存的是‘字面值’,存在于栈中,可共享(存在即不新建)。