依旧记得当初学习C++的理想----开发游戏外挂,记得在大学开发的第一款游戏外挂是连连看,读取地址数据,而后算法匹配,模拟单击事件,当时被不少同窗羡慕妒忌。java
JAVA开发是2012年3月份開始开发Android后专一的,Java的学习是在大学完毕的,当时JAVA考试95分满觉得Java没啥难的。后来从事android开发发现本身对java的理解不深。android
Java要点
c++
要点 | 定义 | 描写叙述 |
基本数据类型 | 一、byte(8) 二、shot (16) 三、int(32) 四、long(64) 五、float(32) 六、double(62) 七、char(16) 八、boolean(1) |
|
持有对象 | Collection(接口) ->List(子接口 前后顺序 可反复) ->LinkedList (链表 不一样步 线程不安全) ->ArrayList (数组 不一样步 线程不安全) ->Vector (数组 同步 线程安全) ->Stack ->Set (子接口 仅仅接收一次 内部排序) ->HashSet ->LinkedHashSet ->TreeSet Map(接口 键值) ->Hashtable (同步 安全) ->LinkedHashMap (不一样步 不安全) ->WeakHashMap ->TreeMap ->IdentifyHashMap |
Collection 是对象集合。 Collection 有两个子接口 List 和 Set List 可以经过下标 (1,2..) 来取得值,值可以反复 而 Set 仅仅能经过游标来取值。并且值是不能反复的 ArrayList , Vector , LinkedList 是 List 的实现类 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的。底层是由链表实现的 Map 是键值对集合 HashTable 和 HashMap 是 Map 的实现类 HashTable 是线程安全的,不能存储 null 值 HashMap 不是线程安全的,可以存储 null 值 |
泛型 | 參数化类型,也就是说所操做的数据类型被指定为一个參数。这样的參数类型可以用在类、接口和方法的建立中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的优势是安全简单。 | 相应C++的是模块 |
I/O系统 | Java的I/O就是Java的输入与输出操做 | 抽象类InputStream和OutputStream是所有字节流的基类,它们分别提供了输入和输出处理的基本接口,并且分别实现了当中的某些方法.由于InputStream和OutputStream都是抽象类,因此不能直接建立它们的对象.InputStream类中所提供的方法主要有:从流中读取数据,关闭流并且释放与该流相关的系统资源和使用输入流中的标记等.OutputStream类中所提供的方法主要有:输出数据,更新输出流和关闭流等. 涉及的类: 字节输入流包含FileInputStream、BufferedInputStream和DateInputStream。 与之相应的字节输出流包含FileOutputStream、BufferedOutputStream和DateOutputStream。 |
垃圾回收器 | Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之中的一个。 | 经过垃圾收集器(Garbage Collection。GC)本身主动管理内存的回收。程序猿不需要经过调用函数来释放内存。 |
初始化顺序 | 一、静态成员 二、静态函数 三、静态区 四、其余 |
|
引用 | 主要的变量类型仅仅有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中), 方法形參的值传递(引用)是指形參和传进来的參数指向同一个值的内存(heap)中; | java是传值仍是传引用? 基本类型是传值 |
并发 | 多进程编程 | Java提供底层的协调机制,以控制对共享资源的訪问。这里的协调,包含竞争,合做和通讯。 竞争:synchronized、lock 合做:notifyAll、interrupt、signalAll 通讯:PipedReader / PipedWriter |
C++要点算法
要点 | 定义 | 描写叙述 |
typedef 和#define | typedef是用来声明类型别名的,在实际编写代码过程使用typedef每每是为了添加代码的可读性。 #define是一个宏定义命令,用来定义一个常量(包含无參常量和有參常量),它自己并不在编译过程当中运行,而是在预处理阶段就已经完毕了,所以不做不论什么正确性检查,仅仅进行不关含义的字符串替换。 |
|
指针/智能指针 | 指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。 | 智能指针其实是一个栈对象,并不是指针类型,在栈对象生命期即将结束时,智能指针经过析构函数释放有它管理的堆内存。
|
模板与泛型编 | 泛型编程就是以独立于不论什么特定类型的方式编写代码。而模板是泛型编程的基础。 | |
STL 容器 | 标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。 非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。 |
|
线程池 | 线程池的做用正是有效的减小频繁建立销毁线程所带来的额外开销。 | |
C++和Java的差异数组
要点 | 定义 | 描写叙述 |
Java无指针 | ||
Java不支持头文件、Java不支持宏定义 | ||
java是运行在JVM中的,并且是编译成JVM可识别载入的.class,并不是全然编译成计算机直接可运行的程序,C++ 程序直接可在计算机中运行。 | ||
在C++和Java中都存在类引用,C++中是要明白指出的。显性的。而Java中是隐形的。 | ||
Java对每种数据类型都分配固定长度. | ||
类型转换不一样 | 在C和C++中,可经过指针进行随意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换. | |
结构和联合的处理 | 在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面 | |
JAVA的应用在高层。C++在中间件和底层 | ||
垃圾回收。c++用析构函数回收垃圾。java本身主动回收 | ||
Java的对象都从堆中分配,C++的本身主动变量都是从栈里面分配的 |
又一次C++和Java复习要点。对java、C++的认识更加深入了。安全