`
xiaoheliushuiya
  • 浏览: 423184 次
文章分类
社区版块
存档分类
最新评论

C++ Java要点记录

 
阅读更多
简介

依然记得当初学习C++的理想----开发游戏外挂,记得在大学开发的第一款游戏外挂是连连看,读取地址数据,然后算法匹配,模拟单击事件,当时被许多同学羡慕嫉妒。

JAVA开发是2012年3月份开始开发Android后专注的,Java的学习是在大学完成的,当时JAVA考试95分满以为Java没啥难的,后来从事android开发发现自己对java的理解不深。


内容

Java要点

要点 定义 描述
基本数据类型 1、byte(8)
2、shot (16)
3、int(32)
4、long(64)
5、float(32)
6、double(62)
7、char(16)
8、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)自动管理内存的回收,程序员不需要通过调用函数来释放内存。
初始化顺序 1、静态成员
2、静态函数
3、静态区
4、其它
引用 基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中), 方法形参的值传递(引用)是指形参和传进来的参数指向同一个值的内存(heap)中; java是传值还是传引用?
基本类型是传值
并发 多进程编程 Java提供底层的协调机制,以控制对共享资源的访问。这里的协调,包括竞争,合作和通信。
竞争:synchronized、lock
合作:notifyAll、interrupt、signalAll
通信:PipedReader / PipedWriter


C++要点

要点 定义 描述
typedef 和#define typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。

#define是一个宏定义命令,用来定义一个常量(包括无参常量和有参常量),它本身并不在编译过程中执行,而是在预处理阶段就已经完成了,因此不作任何正确性检查,只进行不关含义的字符串替换。
指针/智能指针 指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。 智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。
std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost:: intrusive_ptr。
模板与泛型编 泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。
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++的认识更加深刻了。

分享到:
评论

相关推荐

    C++、JAVA+、C软件测试面试题

    在IT行业中,软件测试是确保产品质量的关键环节,而掌握C++、Java和C这三种编程语言的测试技术,则是成为一名专业软件测试工程师的基础。本文将深入探讨这些编程语言的测试面试知识点,帮助求职者做好充分准备。 ...

    Java语言学习六大要点

    Java在声明静态方法和属性时与实例方法和属性的区别仅在于是否使用了`static`关键字,而在调用时则保持一致,这一点与C++有所不同。 #### 二、重视接口 接口在Java中扮演着核心角色,它提供了一种定义行为规范的...

    腾讯c/c++面试题

    综上所述,这些知识点不仅涵盖了C/C++语言本身的技术要点,还涉及了算法、数据结构、操作系统原理以及面试技巧等多个层面,对于准备进入IT行业的求职者而言,是全方位提升自身竞争力的宝贵资料。

    java程序员初学20道题

    本部分内容涉及了Java编程的基础概念和技术要点,旨在帮助初学者系统地掌握Java编程的核心知识。 #### 2. 如何看待Java构造函数的执行 在Java中,构造函数是一种特殊的方法,用于初始化新创建的对象。当创建一个类...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     Ivor Horton是撰著Java、C和C++编程语言图书的杰出作家之一。大家一致认为,他的著作独具风格,无论是编程新手,还是经验丰富的编程人员,都很容易理解其内容。在个人实践中,Ivor Horton也是一名系统顾问。他从事...

    Java就业课全套课程+经验分享免费奉送.docx

    根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ### 1. Java 就业课程 ...以上就是从给定文件信息中提炼出的相关知识点介绍,希望能帮助你更好地理解各个领域的学习内容和技术要点。

    基于JAVA物流仓库管理信息系统设计.docx

    1. **简单性**:Java简化了许多C++中存在的复杂概念,比如去掉了指针和头文件等,使得开发者可以更专注于业务逻辑而不是语言细节。此外,Java内置的垃圾回收机制大大简化了内存管理,降低了出错概率。 2. **面向对象...

    基于C++实现QQ空间机器人.zip

    QQ空间机器人是一个利用C++编程...以上就是基于C++实现QQ空间机器人的核心技术栈和知识要点。开发者需要具备扎实的C++基础,了解网络编程和网页抓取,同时掌握一定的自动化控制技巧,才能成功开发出这样的机器人程序。

    自己实现的vector

    此外,还需要记录当前元素的数量(size)和分配的总容量(capacity)。 2. **动态内存管理**:在`vector`的实现中,关键在于如何有效地进行内存分配和释放。当添加元素超过当前容量时,需要进行扩容操作。典型的...

    运动会分数统计系统java

    - 使用了标准的C++输入输出流库`iostream`等,同时包含了特定的Windows API头文件`windows.h`(虽然在给出的代码中并未实际使用该API)。 #### 2. 主函数逻辑 - 通过循环和条件判断来获取用户的合法输入,并将这些...

    Visual C++ 2005入门经典--源代码及课后练习答案

    Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2...

    java+sql图书管理系统.doc

    - Eclipse是一款跨平台的开源IDE,最初主要用于Java开发,但也可通过插件支持C++、Python等语言的开发工作。 - Eclipse的灵活性高,可通过多种插件扩展功能。 #### 四、需求分析 - **系统需求**:管理员对用户...

    Java实现的6个常见小游戏,可用于个人java学习.zip

    - 链接数据结构:可能使用链表或数组来记录相邻格子的信息。 - 非递归算法:解决复杂的相邻格子检查问题。 4. **贪吃蛇游戏**:蛇吃食物后会变长,碰到边界或自己则游戏结束。关键技术点: - 二维数组表示游戏...

    Android之JNI初级篇

    本地方法是用C/C++编写并被Java调用的函数,JNIEnv指针是Java虚拟机提供给本地代码用来访问Java对象和方法的接口,本地方法表则记录了Java类中的本地方法映射。 2. **JNI开发环境**:介绍了如何设置开发环境,如在...

    Java笔记综合

    - **高级语言**:如Java、C++等,更接近自然语言,易于理解和编写。 **1.2 Java的特点** - **平台无关性**:通过Java虚拟机(JVM),可以在任何支持JVM的平台上运行。 - **面向对象**:支持封装、继承、多态等...

    java基础知识之面试宝典

    ### Java基础知识之面试宝典 #### Java的接口与C++的虚类的相同与不同处 在编程领域中,理解不同语言之间的相似性和差异...以上内容涵盖了Java基础知识中的一些重要概念和技术要点,希望对准备面试的开发者有所帮助。

    基于 java 实现的扫雷游戏(无ui).zip

    6. **测试与调试**:在没有 UI 的情况下,测试和调试代码可能需要更直接的手段,如日志记录或单元测试。 7. **面向对象编程**:Java 是面向对象的语言,扫雷游戏中的每个元素(如格子、雷)都可能被封装成类,通过...

    李兴华JavaSE课程笔记

    这份笔记详尽记录了李兴华老师在JavaSE课程中的讲解要点,以其精彩的教学风格和清晰易懂的讲解方式,帮助读者深入理解和掌握Java编程的基础知识。 JavaSE,全称Java Standard Edition,是Java平台的核心部分,主要...

    笔记+板书=多项式拟合算法

    通过板书可以快速捕捉和记录老师的讲解要点,课后的整理则是对知识进行消化、理解和应用的过程。这两者结合起来,能够帮助学习者更深刻地理解多项式拟合算法的原理和实现细节。 内容部分虽然没有提供具体的知识点,...

    androi jni详解

    - **JNI简介**:Java Native Interface (JNI) 是由Sun Microsystems定义的一组标准接口,旨在促进Java与本地代码(通常是C或C++)之间的交互。几乎所有主要的Java虚拟机(如Dalvik、Apache Harmony等)都会实现这些...

Global site tag (gtag.js) - Google Analytics