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++的认识更加深刻了。

时间: 2024-11-06 21:53:52

C++ Java要点记录的相关文章

java学习记录(2):JMenuBar

1.在用这个时候发现很多的组件都有J的前缀,例如Button和JButton,前者是awt包的,后者是swing包的,两者耳朵区别是: AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口.AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers. 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库.由于不同操作系统的图形库所提供的功能

C# 采用线程重绘图形要点记录

大家都知道J2ME 采用一个线程去获取数据,然后得到数据后更新屏幕是件很容易的事情,比如Thread{public void run(){ getData();repaint(); } }这样做就OK了 但是这个方法在C#上能成功吗.答案是NO,为什么呢.安装他们的APIs的说法是,采用线程更新屏幕的是应该要用一个委托的方式来执行. 看看我是怎么做的. Thread{public void run(){ getData(); updateWebBrowser();} delegate void

java学习记录(4):ActionListener

1.ActionListener是处理被点击的事件的. 除了像之前每个元素都独立写一个listener之外,还可以统一用一个 s.setActionCommand("sec"); m.setActionCommand("min"); s.addActionListener(new SetHandler()); m.addActionListener(new SetHandler()); private final class SetHandler implement

普华永道高级JAVA面试记录

最近在考虑换个工作 原因?咱能不逗吗? 一面感觉发挥不错  二面之后累觉不爱  基本上浪费了半天的工资(好多钱啊~~~) PWD上海地址在浦东软件园  工作环境说实话没我现在工作的环境好,不过里面的人给人感觉不错.前台不NICE但给人很舒服的感觉. 说重点,面试过程. 面试分笔试和面试  笔试面试都是英文(回答问题要是实在英文撑不住了就用中文) 笔试题偏基础  说两个注意点  手写冒泡排序  和 用英文描述一个设计模式 面试有两次 第一个考官是个微胖界的胖子(很和蔼)  第二个有点娘(很刁钻)

java学习记录(1):layout

BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为:North,South,East,West和Center 5个区域,每加入一个组件都应该指明把这个组件加在哪个区域中.BorderLayout是顶层容器(Window,Frame, Dialog)的默认布局管理器. BorderLayout界面最多只能显示5个控件,若在一个区域中加上多个component,则只有最后加上的那个是可见的.加入控件的时候,可以指定加入的方位,默认的

UC/OS-II功能介绍、要点记录

通过不断地学习和实验UC/OS-II,终于在五一前在ARM平台上实现了多任务的创建.调度运行.挂起,任务间信号量.互斥型信号量.邮箱.消息队列和事件标识组方式下的通信机制,接下来则继续学习UC/OS-II的移植方法,在此趁五一假期之际,我将UC/OS-II的特点用自己通俗的语言介绍一下,希望能让大家在没接触UC/OS-II的情况下大概明白UC/OS-II的用处和特点,共同学习和进步,为学习UC/OS-II的同学提供有用的资料.另外,如有错误和不当之处,还请指正和发表您的心得体会. 谢谢! 一.有

补充Java面试记录

补充Java面试记录 背景:这两天面试遇到的部分问题都分散在了前面两篇文摘中,这里再做一些其他的记录,以备不时之需! 一.谈谈你对SpringBoot的理解? SpringBoot简介:SpringBoot是一个框架,它的目的就是用来简化Spring应用的初始化搭建以及开发过程:该框架使用了特定的方式来进行配置,从而使开发人员不在需要自定义样板化的配置:它可以自动配置Spring的各种组件,并不依赖代码生成和XML配置文件. 我对SpringBoot的理解: SpringBoot是微服务框架的起

Java问题记录——循环里的二次判断与状态更新

Java问题记录——循环里的二次判断与状态更新 摘要:本文主要记录了在循环操作时可能出现的问题. 问题重现 在使用循环结构时,如果使用了定时任务,或者代码会多次调用循环结构,可能会导致有些对象会被循环多次. 举例来说,如果有一个结账的代码,每五分钟会执行一次: 1 @Scheduled(cron = "0 0/5 * * * ?") 2 @Async 3 public void handle(){ 4 List<Customer> list = customerDao.li

java导入导出Excel数据的要点记录

< 客户端的B/S架构输出方式 加下划线这部分代码是B/S模式中采用的输出方式, //获得输出流,该输出流的输出介质是客户端浏览器 OutputStream output=response.getOutputStream(); response.reset(); response.setHeader("Content-disposition","attachment; filename=temp.xls"); response.setContentType(&