简单的入门Android开发和Java语言基础

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:

书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈
【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版)
【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版)
【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版)
【Web前端】从HTML到JS到AJAX到HTTP从框架到全栈帮你走更少弯路(珍藏版)   
【python】书最全已整理好(从入门到进阶)(珍藏版)

【机器学习】+python整理技术书(从入门到进阶已经整理好)(珍藏版)
【C语言】推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
【安卓】入门到进阶推荐书籍整理pdf书单整理(珍藏版)

【架构师】之路史诗级必读书单吐血整理四个维度系列80+本书(珍藏版)

【C++】吐血整理推荐书单从入门到进阶成神之路100+本(珍藏)

【ios】IOS书单从入门到进阶吐血整理(珍藏版)

--------------------------------------------------------------------------------------------------------------------

简单的入门Android开发和Java语言基础[图]
前言:
去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居。于是就将最简单的通信发布出来:智能家居简单实现—使用ESP8266简单实现和APP通讯
由于这方面的资料少之又少,所以阅读量飙升的很快。也有很多人加了好友问我问题。通过问题我发现,很多都是学硬件的、或是做智能家居方面的学生,基本都不会 Android 开发的。问也有很多问我怎么学 Android 开发的。
很多的人认知还是停留在学习这种软件开发技术需要去培训机构报一个班,或者去学校学习一下相关专业。其实入门基础的软件开发,根本就无需以上的操作。现在网上的资料这么丰富,自己花点心思就可以找到很多很好的资料,然后再系统的学习,完全是可以达到要求的,根本就不需要去花费那些时间和金钱。

简单的入门Android开发和Java语言基础
鉴于以上的需求,我在这就总结一下如何简单的入门 Android。现在的 Android 开发支持用两种语言,Java 和 Kotlin。Kotlin 是去年才 Google 官方宣布支持 Android 开发的,所以用得并不太广泛,主体还是用 Java 的多。所以这里就选择学习 Java 语言基础,然后再学习 Android 开发基础。
Java 语言基础:
学习 Java 基础,我是过来人了,初学者是建议视频加书本。虽说这里要结合书本,其实我也没买过 Java 基础的书,我是用网站代替的,有一个网站以书面的形式把Java基础展示得还蛮不错的。
JAVA企业面试题精选 OOP:
2.11.是否可以继承String类?
参考答案:
  String类是final类,故不可以继承
2.12.阐述一下static关键字的作用
参考答案:
  static表示”静态”的意思,用来修饰成员变量和成员方法,也可以形成静态代码块.只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区找到它们.因此staitc成员可以在它的任何对象创建之前访问,无需引用任何对象. 
  1)修饰成员变量.用static修饰的成员变量不属于对象的数据结构;static变量是属于类的变量,通常可以通过类名来引用static成员;static成员变量和类的信息一起存储在方法区,而不是在堆中,一个类的static成员变量只有”一份”,无论该类创建了多少对象. 
  2)修饰成员方法.static修饰的方法则不需要针对某些对象进行操作,其运行结果仅与输入的参数有关,调用时直接用类名引用.由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问.static方法的作用在于提供一些”工具方法”和”工厂方法”等. 
  3)static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源.
2.13.解释Java关键字的含义及用法
1)abstract 
2)extends 
3)final/finally 
4)implements 
5)import 
6)instanceof 
7)synchronized 
8)throw/throws
参考答案:
1)abstract:抽象,修饰类和方法.含有abstract方法的类是抽象类,抽象方法主要是为了让子类继承实现. 
2)extends:继承,子类通过继承父类来添加变量或方法,或者覆盖父类的方法;子接口继承父借口来添加方法. 
3)final/finally:final用于定义常量.finally用来执行一段代码,不管在前面定义的try语句中是否有异常或运行时错误发生. 
4)implements:在类的声明中是可选的,用来指明当前类实现的接口. 
5)import:在源文件的开始部分指明后面将要引进的一个类或整个包. 
6)instanceof:判断其指向对象的实际类型. 
7)synchronized:修饰方法或方法块.防止多个线程同时访问这个类中的synchronized块. 
8)throw/throws:throw允许用户抛出一个exception对象或者任何实现throwable的对象.throws用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层.
2.14.静态变量和实例变量的区别?
参考答案:
  静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问,而实例变量必须依存于某一实例,只能通过对象才能访问到它.
2.15.GC是什么?为什么要有GC?
参考答案:
  GC是垃圾回收的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的.Java程序员编程的时候不用考虑变量不用时释放内存,Java虚拟机可以自动判断出并回收垃圾.
2.16.件数垃圾回收的优点和原理.并举例2中回收机制
参考答案:
  Java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理.由于有个垃圾回收机制,Java中的对象不再有”作用域”的概念,只有对象的引用才有”作用域”。史记读后感(http://www.simayi.net/dushubiji/2445.html)心得体会,垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存。
  垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收. 
1)增量收集器 
  增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾.这会造成较小的应用程序中断. 
2)分代收集器 
  这种收集器把堆栈分为两个或多个域,用以存放不同寿命的对象.JVM生成的新对象一般放在其中的某个域中.过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中.分代收集器对不同的域使用不同的算法以优化性能.