代码改变世界

阅读排行榜

C\C++ 程序员从零开始学习Android - 个人学习笔记(二) - java基础 - 从源代码到运行

2012-01-18 23:39 by CreateLight, 770 阅读, 收藏,
摘要: hello world 的起源到终结:先大体写一下,以后会细化。1,写代码 C\C++: 写main函数作为入口,将从main函数开始运行 java: 写包含static void main(String[] args)的类作为主类,将从指定为主类的main函数开始运行,2,编译 C\C++: 通过编译器(cl、gcc、armcc等),src -> 预处理 -> .s(汇编代码) -> .o(目标文件),每个.C文件生成一个对应的.o文件,.o文件包含二进制数据、本地机器码和其他一些用于链接及调试的结构性数据。 java: 通过编译器(javac), src -> .c 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组

2012-01-19 02:09 by CreateLight, 762 阅读, 收藏,
摘要: 1,数据类型 java数据类型分为基本类型(原始类型、原生类型)和引用类型两种。1.1 基本类型 包括布尔类型、数值类型、returnAddress类型。1.1.1 布尔类型 boolean,取值false和true。虚拟机对其支持非常有限,没有专用的字节码指令,所有java源代码中的涉及到的boolean运算,编译后都使用int代替。boolean数组,在虚拟机层面,作为和byte数组一样处理。1.1.2 数值类型 分为整型和浮点两种,和C\C++不同,其存储大小、字节序(大端)、符号固定,和机器无关,在所有平台上都一样。 整型包括: byte: 8位(bit)有符号二进制补... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(七) - java基础 - 类和对象的清除(待续)

2012-02-02 12:07 by CreateLight, 569 阅读, 收藏,
摘要: 1,局部变量的清除 方法内的局部变量,在栈上进行内存分配,当离开局部变量所位于的作用域块后,栈会自动回卷,清除所有此类型的变量。2,对象的清除 和C++不同,java没有提供析构函数。原因如下: a, C++中的对象可以在栈上分配空间,当离开所出作用域时,清除栈对象,此时会调用对象的析构函数;而java中所有对象都在堆上分配空间,没有栈对象。 b,java有垃圾回收机制,所有对象会(在某个时刻)自动进行内存回收,因此不需要显式的在析构函数中回收内存。 尽管如此,java的这些机制并不能完全替代C++析构函数所表现出来的语义和作用。 java提供了finalize方法,垃圾回收器... 阅读全文

C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)

2012-02-02 16:04 by CreateLight, 563 阅读, 收藏,
摘要: 1,继承使用extends从一个现有类(super类)继承一个子类。可以用final修饰一个类,使其不能被继承。子类不继承super类的构造器。子类继承super类的方法和域变量。java是单根继承体系,Object类是所有类(包括接口和抽象类)的最根部(super)的类。Object类没有super类。1.1 方法继承 所有的非构造器方法默认都是可被继承的;子类可访问父类中除了private修饰的任何方法。 子类可覆盖(override)super类中继承的方法。使用final关键字修饰,可令相应的方法不允许被子类覆盖。 子类覆盖super类的方法时,方法的可见性只能增加(变宽)或不变... 阅读全文

Android隐喻(二) 启动

2012-07-03 21:41 by CreateLight, 559 阅读, 收藏,
摘要: 现代分时操作系统多以进程为基本单位,Linux亦不例外。 手机启动如同PC,上电、硬件自检、加载操作系统、内核初始化、启动第一个进程、启动更多的进程、处理用户交互。 Android基于linux,第一个(用户级)进程是init,后续所有进程都是由此进程派生出来,linux进程创建(派生)的系统调用为fork,其语意为“分支”。比如一条道路,你在其上行走,遇到一个二叉分支路口,在这个路口之前所有东西都是相同的,在这个路口之后分成两条支路行进。于此类似,一个进程fork出来的子进程,在其诞生之时和父进程完全一样,只是其后(可能)走向不同的分支。 init会fork出很多linux的基本服... 阅读全文