Android学习

个人的浅见:
1、基本的语法规则上,所有的编程语言都是大同小异的。

2、Java与C++都是面向对象的,C++的出现时为了弥补C语言的缺憾,90年代后,对软件开发的需求越来越大,就导致产生的很多语言,JAVA和C++就是这么产生的,面向对象。但是在处理基本的算法题时(比如LeetCode),面向对象的优点根本没体现出来。

3、比如继承、多态、对父类方法进行重写,这些内容在LeetCode上完全体现不出来。

4、Qt和Android studio,这两个软件是开发桌面应用软件和手机APP用的,在这个里面可以看到很多继承、重写在里面的应用。

5、接口与类,重写父类中的方法

《Android》部分----学习

在Android 类库中,各种包写成android.*的方式,重要包的介绍如下:

android.app:提供高层的程序模型、提供基本的运行环境。

android.content:包含各种的对设备上的数据进行访问和发布的类。

android.database:通过内容提供者浏览和操作数据库。

android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上。

android.location:定位和相关服务的类。

android.media:提供一些类管理多种音频、视频的媒体接口。

android.net:提供帮助网络访问的类,超过通常的java.net.*接口。

android.os:提供了系统服务、消息传输、IPC 机制。

android.opengl:提供OpenGL 的工具,3D 加速。

android.provider:提供类访问Android 的内容提供者。

android.telephony:提供与拨打电话相关的API交互。

android.view :提供基础的用户界面接口框架。

android.util:工具性的方法,例如时间日期的操作。

android.webkit:默认浏览器操作接口。

android.widget:包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用。

android.R.attr: 各种自带的属性

android.Manifest.permission: Mainfest文件里面可以设置的权限项

1、java.lang包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

2、java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等

3、java.util包:Java的实用工具类库Java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。包含如处理时间的date类,处理变成数组的Vector类,以及stack和HashTable类

4、java.util.zip包:实现文件压缩功能

5、java.lang.reflect包:提供用于反射对象的工具

6、java.awt.image包:处理和操纵来自于网上的图片的java工具类库

7、java.wat.peer包:很少在程序中直接用到,使得同一个java程序在不同的软硬件平台上运行

8、java.applet包
9、java.net包:实现网络功能的类库有Socket类、ServerSocket类

10、java.corba包和java.corba.orb包

11、java.awt.datatransfer包:处理数据传输的工具类,包括剪贴板,字符串发送器等

12、java.awt包:构建图形用户界面(GUI)的类库,低级绘图操作Graphics类,图形界面组件和布局管理如 Checkbox类、Container类、
LayoutManger接口等,以及界面用户交互控制和事件响应,如Event类

13、java.awt.event包:GUI事件处理包。

14、java.sql包:实现JDBC的类库

JAVA的内存管理:
(1)对于Java运行时涉及到的存储区域主要包括程序计数器、Java虚拟机栈、本地方法栈、java堆、方法区以及直接内存等等。对于每个部分,都有其使用的条件。程序计数器主要是取下一条指令,在Java里面主要是取下一条指令的字节码文件;Java虚拟机栈主要是利用栈先进后出的特性存储局部变量表,动态链接等,主要包括堆内存和栈内存,对于程序员内存分析而言是特别重要的。本地方法栈与上边的栈基本作用差不多,只不过这里是为Java方法而服务。Java堆是内存管理中最大的一块,所有的线程共享这一块内容,同时该部分也是垃圾收集器的主要区域。
(2)虚拟机的垃圾回收机制是完善的,动态内存分配和回收是比较成熟的,在内存管理机制中,大部分都不需要我们考虑内存回收,只有Java堆和方法区需要我们考虑处理内存问题。一般的对于内存回收首先就是判断某一个部分是生存还是死亡,主要是通过下面二种算法:
其一是引用计数算法,本算法实现简单,判定的效率也是比较高的,很多的软件都使用了该算法,但是主流的Java并没有选择该算法,核心的问题是该算法难以处理对象之间相互调用的问题。
其二是称可达性分析算法,该算法核心思想是依靠判断对象是否存活来实现的,本算法是通过一系列的GC ROOTS的对象作为起始点,采用搜索的算法遍历引用链,如果搜索过程中没有发现该节点,则认为该节点是不可达的,即可回收的,在Java里面,一般可以使用该算法处理问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值