• 详细讲解Java与c++的区别,方便Java程序员快速理解上手c++,值得关注--从java到c++,适合java程序员快速学习c++
  • java程序员快速学c++

    2014-04-03 16:51:42
    java程序员学cplus,其实大部分的语法是一样的,但是对java程序员来将,还是有写难点需要注意。看完这些还不能保证会写c++程序,不过一般的程序可以看懂,要写的话要多多练习。 ---这是一个学习笔记,作为自己学习...
    java程序员快速学c++


    java程序员学cplus,其实大部分的语法是一样的,但是对java程序员来将,还是有写难点需要注意。看完这些还不能保证会写c++程序,不过一般的程序可以看懂,要写的话要多多练习。
    ---这是一个学习笔记,作为自己学习的记录,还没有完成,在随后的过程中进行完善。

    一、头文件部分:
    1、cplus中的函数最好要先声明,声明最好要放入头文件中,这样在cpp中就可以不用管函数定义的位置,这时头文件还类似于java中接口的作用;
    2、全局变量在头文件中声明,声明时有初始化的是定义声明,其他声明是引用声明。C语言的所有文件之中,只能有一个定义声明。变量一般不要定义在.h文件中。
    3、定义声明数组时,应用声明最好不要用指针。连接程序并不把指针与数组等同,也不把他们当做同一个定义,而是认为是不相关的两个定义。
    4、写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。
    5、在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
    #ifndef CIRCLE_H
    #define CIRCLE_H
    //你的代码写在这里
    #endif
    这样做是为了防止重复编译,不这样做就有可能出错。至于CIRCLE_H这个标识任意取名,不过要唯一,标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线。http://blog.csdn.net/Super_Level/article/details/21299481
    比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。头文件的内容放在这里后,冲突问题编译器就可以解决。
    6、源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。http://blog.csdn.net/cyp331203/article/details/22606249
    7、#define。C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。http://www.cnblogs.com/ben0721/articles/1938639.html
    “宏”分为有参数和无参数两种。
    #define 标识符 字符串
    #define 宏名(形参表) 字符串
    “#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。
    8、标准宏。
    ANSI标准说明了五个预定义的宏名。它们是:__LINE__,__FILE__,__DATE__,__TIME__,__STDC__
    C++中还定义了__cplusplus
    如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。
    __LINE__及__FILE__宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。
    __DATE__宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。__TIME__宏指令包含程序编译的时间。时间用字符串表示,其形式为:分:秒
    __STDC__宏指令的意义是编译时定义的。一般来讲,如果__STDC__已经定义,编译器将仅接受不包含任何非标准扩展的标准C/C++代码。如果实现是标准的,则宏__STDC__含有十进制常量1。如果它含有任何其它数,则实现是非标准的。
    __cplusplus与标准c++一致的编译器把它定义为一个包含至少6为的数值。与标准c++不一致的编译器将使用具有5位或更少的数值。可以定义宏,例如:
    当定义了_DEBUG,输出数据信息和所在文件所在行。


    二、源文件部分
    1、\ 在cplus中表示该行没有结束;
    2、 #ifndef#define#endif实现条件编译,
    #ifdef 标识符 
    程序段1 
    #else 
    程序段2 
    #endif 
    当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。http://blog.csdn.net/Super_Level/article/details/21299481


    3、语言中的符号意义和部分关键字
    ■->C++指针调用的意思。指向结构体或者类指针用来引用对象里面变量时用。
    ■::作用域,声明该符号后面函数、数据等属于哪个类,一般用于静态;
    ■:用于继承父类: class lzbb:public lzb; lzb父类lzbb子类; c++支持多继承;
    基类和派生类构造函数: 
    当调用派生类时首先会执行基类构造函数执行派生类构造函数所我们想给基类构造函数参数传值也用冒号: 
    基类构造函数:lzb(int a){cout<派生类构造函数:lzbb(int a,int b); 
    当我们开始调用基类构造函数首先调用了lzb我们给lzba赋值 
    下写法:lzbb::lzbb(int a,int b):lzb(a){cout<此时我们传实参时首先会把a值赋值给lzba输出b等于传入给b实参值;
    http://zhidao.baidu.com/question/2951346.html
    ■.对象中的成员,用于非静态的调用。
    ■typeof取表达式或表达式值的类型,和模板的配合使用比较多;
    ■typeid返回给一个type_info 定义过的对象的那个对象的类型;
    ■typedef允许你从一个现有的类型中创建一个新类型;
    ■typename能用来在中 template 描述一个未定义类型或者代替关键字class;


    4、template <class T> 或template<typename T> class 标明下面的参数是属于什么类型的。这个在java中也是有的。
    模板就是函数或类,模板可以解决同类型问题。(这块内容还是比较多,一笔带过先)。


    5、inline函数也所谓内联函数,不建议多使用。


    6、指针是内存单元的地址,数据是内存单元的内容。(未完!!)



    (未完!!)




    展开全文
  • 首先说明,这几年接触的最多的程序员就是C++程序员和Java程序员,这只是我自己的一点体会而已,一个人的眼光难免是浅薄的。不过,欢迎拍砖,也欢迎对号入座。   从对基础知识掌握的程度来说,例如数据结构和...

    首先说明,这几年接触的最多的程序员就是C++程序员和Java程序员,这只是我自己的一点体会而已,一个人的眼光难免是浅薄的。不过,欢迎拍砖,也欢迎对号入座。

     

    从对基础知识掌握的程度来说,例如数据结构和算法,C++程序员要比Java程序员牢靠得多。究其原因,大概是因为C++程序员需要经常自己实现那些项目基础设施,但是Java程序员大多拿来即用。公平地说,C++不是一门适合程序员初学者的语言,但是Java是。C++程序看起来确实要比Java 程序稍难懂一些,C++程序员往往思维更加严密。另一方面,我也发现内地的程序员要比沿海和发达城市的程序员基础扎实,而且低调内敛,不那么浮华,但是就是善于解决那些难啃的问题。

    从视野的角度来说,Java程序员往往要更宽泛一些。由于语言本身上说,Java将很多C++逃不掉的陷阱和坑洞都填补了,仅从语言上说,无论是入门还是使用都显得更加简单,程序员就有更多精力来关注语言本身之上的事情。而且,Java领域的类库明显要丰富得多,所以在考虑某一个设计实现的时候,Java程序员很喜欢到处寻找可以拿来即用的类库,但是C++程序员习惯于自己去做其中大部分的事情。对于面向对象设计,模块和组件的设计,Java 程序员往往要掌握得稍好一些。

    在读书的时候,很多程序员都会给自己订立一个方向,有的喜欢写底层实现,有的喜欢研究人工智能,有的喜欢做企业应用,有的喜欢涉足互联网……就像对 C++和Java等语言的选择一样。当然,工作有时候并不如心中所愿,这方面可能和自己最初的方向并不一致——有人选择继续,发现这个活儿也不错;有人就会选择放弃,继续执着地寻找自己喜欢的事情。我有三个当初和我一起学Java学J2EE的朋友,现在一个成了DBA,一个卖水果去了,还有一个在创业搞机顶盒。

    当然,也有很多程序员天天都在纠结:学什么更赚钱?C++还是Java有前途?前端还是后端有前途?转管理还是转咨询?也有人这样问我,对于这样深不可测的问题,为了避免显得我没文化、见识浅,我总是一笑置之

    展开全文
  • 声明:问题来源于悟空问答关于”一个C++ 程序员的生产力,大概相当于20个C程序员,200个java程序员”,对于这句话你怎么看?内容回答来源于EmacserVimer、大学生编程指南等资深码农联合回答,点击阅读全文前去围观。 ...

    声明:问题来源于悟空问答关于”一个C++ 程序员的生产力,大概相当于20个C程序员,200个java程序员”,对于这句话你怎么看?内容回答来源于EmacserVimer、大学生编程指南等资深码农联合回答,点击阅读全文前去围观。

    本周话题:”一个C++ 程序员的生产力,大概相当于20个C程序员,200个java程序员,对于这句话你怎么看?” 欢迎大家留言说说自己的想法。

    这其实是一种谬论,也是编程界有几大误解之一。这种话听听就行了,起码不是真正程序员说过的话,每个编程语言都有其存在的必然性,很难直接通过数据直接比较谁更加厉害,语言没有谁更加厉害这种概念,只能是谁更加合适。

    很有幸都用过三种编程语言并且做过项目,现在就这三种语言一些语言特性就个人的职位经历说下看法。

    为什么会有这种看法?

    C语言永远不会过时的编程语言,虽然看起来很低调甚至大家都觉得不行了但是在某些领域有着不可替代的作用,在嵌入式,通讯领域,科学计算,构造系统都有着不可替代的作用,Linux内核以及常见的底层驱动都有着独特作用,刚入行软件从驱动开始做,用到C语言开发,甚至一些嵌入式应用开发也是用C语言,再说点震撼一点的,现在非常流行的Python,PHP底层实现代码都是用C语言,还在喊着C语言过时了或者学C语言不好找工作的小伙伴,现在的状态是入门的门槛高了,学的不好马马虎虎还真就找不到合适的工作。

    说白了主要还是因为C++这门编程语言学习难度确实比较大,当然这一点也是客观存在的,因为C++是在C语言的基础上做的一个超集扩展,并且包含了面向过程、面向对象编程两个思想体系,说得直白一点是一门非常不彻底的但是具有面向对象编程思想的编程语言,而且C语言的优势继承了,但是C语言的问题也继承了,比如说指针。

    本质上也是因为C++这种编程语言学习上的难度,造成了很多人误解,学习C++的人都比较牛,比学习其他编程语言的要牛一些,这很显然就是一个谬论。你能说一个开保时捷的司机技术就一定比出租车司机技术好吗?所以这根本就是一个谬论。

    语言本身并不是决定程序员水平高低的根本原因,决定程序员水平高低的往往是天赋水平,比如说良好的逻辑思维能力,较好的数学修养,这样你的编程水平往往都会比较高,加上很好的项目经验来提升自己,自然能达到较高的水平。

    什么是生产力?我们还有多少误解?

    我觉得编程的生产力一定是建立在解决了多少实际生活中的问题上来的,而不是单纯的说我这个程序运行时间缩短了零点几秒,任何技术如果一旦脱离了现实应用场景,我觉得其价值应该打折,我们不否定理论研究的价值,但是我更觉得工业实践的意义来得更广,所谓编程也是一样的道理。

    难道C++编写的游戏能让几百万人同时在线就是生产力,难道Java写的银行系统保证了只有几万人的同时线上交易就不是生产力?所以我觉得这本身就有问题

    JAVA相比前两种语言,在语法上简介了许多,抛开了很多底层细节,完全关注程序设计,现在JAVA市场占有率第一,而且整体趋势还是依然强劲,做过两年的安卓应用性能和框架开发,很多人觉得开发应用还干嘛关注底层东西,虽然没有了指针的概念,但是现在很多应用存在性能和内存泄露问题,有些应用的时间长了会感觉很卡顿,就是这种原因。

    其实类似的误解还很多,比如说很多人鼓吹编程语言不重要,编程思维才重要,我不否认编程思想的重要,但也请不要忽视工具的价值。早期的后端瞧不起前端,用文本编辑器,尤其是用Emacs/Vim编辑器的瞧不起用其他编辑器和集成开发环境的,用Linux/macOS系统的瞧不起用windows系统的……

    可以说这样的误解太多了,一个成熟并且优秀的程序员应该有一个这样的意识,那就是任何时候都应该意识到,能够很好的解决自己的生产问题的工具都是好工具,适合自己的用户场景的工具才是最佳选择。


    欢迎大家加入Java高级架构/互联网(严禁培训机构、广告群,最干净的技术交流群):微信号:1083683150(备注:技术群或者4000G架构师资源)

    微信平台本人收集个大量资源(4000G架构师资源,1000G大数据资源),只做分享,欢迎大家关注获取,保证免费,非任何机构

    更多精彩请扫码关注微信公众号—— 名称:java版web项目 id :java_project
    这里写图片描述

    展开全文
  • 构造与析构 l 可定义初始化函数,但类内部所有变量会先于初始化函数初始化。 l 可以在类体内直接定义变量时直接初始化变量。 l 类中变量定义的顺序就是初始化的顺序 l 类构造时先构造所有的预定义变量,然后...
    构造与析构

    l  可定义初始化函数,但类内部所有变量会先于初始化函数初始化。

    l  可以在类体内直接定义变量时直接初始化变量。

    l  类中变量定义的顺序就是初始化的顺序

    l  类构造时先构造所有的预定义变量,然后调用构造函数

    l  垃圾回收机制不但会回收内存,还会将数据结构移动到紧凑的区域。在少量垃圾时采用标记清除法,不进行内存移动。

    l  当在构造函数内用this调用其他构造函数时,必须要再第一句,且只调用一次。其他函数不可用this调用构造函数。

     

    语法

    l  break和continue后面可跟label

    l  for可以有foreach语法

    l  java没有sizeof

    l  /**开始书写javadoc,可用@等语义

    l  静态语句可以{}组合成一个静态块,只会执行一次。

    l  enum有toString、ordinal、values方法

    l  try...finally保证try块中的代码无论如何退出,finally中的代码一定会执行

    l  final可以让基本类型和引用保持不变,但是不能让对象本身保持不变。java不提供这种功能。final使用前必须初始化。

    l  final用于方法时是希望不被子类覆盖,因此private方法全部是隐式的final方法

    l  final用于类表示它不可以被继承,因此其中的所有方法也是隐式final的

    l  for的foreach语法可用于容器

    l  所有异常有两个构造函数,一个不接受任何参数,一个接受字符串

    l  在函数参数后面使用throws进行异常说明

    l  java不允许重载任何操作符

    l  static import可以将包导入当前域,之后使用不用加包路径

    l  enum定义的其实一个继承自java.lang.Enum的类,其是一个有一些限制的普通类,可以定义方法。由于java不支持多重继承,所以enum不能继承其他类,但是可以实现接口

    l  enum的每个实例可以定义同一方法的不同实现,只要在enum定义中将该方法定义为abstract

    l  使用volatile关键字可以获得针对该资源的读写原子性

    l  synchronized关键字可以获得原子性的域和代码段(临界区)

    动态类型检测

    l  每个类都有一个class对象

    l  instanceof可以RTTI判断对象的类型,并且只可以与命名类型比较,不可以与Class对象比较。Class.isInstance也可以发挥与instanceof关键字一样的功能

    l  instanceof和Class对象对类型的判断的一个重要区别是instanceof考虑子类,而Class对象认为子类和基类是不同的类型

    l  Class类的getMethods()和getConstructors()方法分别返回Method对象和Constructor对象的数组

    l  Class.forName()生成的结果在编译时是不可知的,所有的方法特性签名都是在执行时被动态提取出来的。该方法的作用是查找并加载指定的类,获得其方法列表,用以支持反射。

    l  没有任何方法可以对反射隐藏方法,哪怕是private。通过Class获得Method对象后,设置Method的setAccessible(true)就可以使任何方法变为可用。即使编译后的代码,也可以通过javap –private显示私有的方法的名,从而可以调用。

    l   

     

    数组与可变参数列表

    l  定义数组时不允许指定数组的大小(因为定义的是数组引用)。

    l  数组引用可以直接等号互相赋值,但是指向的是同一个数组

    l  数组有一个固定的域:length,表示数组的长度

    l  java可以用数组和可变参数列表语法两种方式来实现可变参数列表

    l  函数可以直接返回一个数组引用,不用担心内存问题。jvm会在用户不需要的时候才回收其内存

    l  复制数组应该使用System.arraycopy(),该函数对各种类型都做了优化重载

    l  数组的比较使用Arrays.equals()进行,排序使用Arrays.sort()函数,Arrays.binarySearch()函数只针对已经排序的数组进行查找,未经过排序的查找结果未知

    l  Arrays.asList()可以将数组转换为List

     

    包与访问权限

    l  代码以包的形式组装,每个编译单元可以有一个与文件同名的类,且只有该类对外可见,且以public修饰,且最多只有一个,可以没有,没有时文件名随意。

    l  类的访问权限只有包访问权限和public访问权限。

    l  一组编译单元可以定义到一个包中,在编译单元文件的开头用package关键字加包名。

    l  包路径一般是域名的颠倒加文件路径

    l  类的访问权限包括public、private、protected和包访问权限(friendly),包访问权限是默认的,表示同包中的其他类都可以访问,包外不可以。

    l  使用类的用户也无法访问包访问权限

    l  在同一个目录下,没有指定包,则为该目录的默认包内容。

    l   

    接口和内部类

    l  接口可以包含域,但域为隐式的static和final

    l  类用implements关键字实现interface

    l  interface关键字定义的接口前面也用public修饰,不修饰为包访问权限

    l  在interface中的所有方法默认都是public的,并且只能是public的

    l  子类可以继承多个接口,但只能继承一个基类

    l  可以用子接口继承父接口

    l  组合继承多个接口时,各个接口方法的名称不能相同

    l  在接口中定义的域必须初始化,而且可以用非常量表达式初始化

    l  接口可以嵌套进接口或者类,当嵌套进类时可以定义为private

    l  内部类拥有外围类所有元素的访问权限

    l  内部类中获得外部类的引用的方式是: 外围类.this

    l  非静态内部类的创建必须要首先创建外围类,静态内部类(嵌套类)不需要

    l  不能从嵌套类中访问外围类的非static域

    l  外围类外部创建内部类时要使用: 外围类.new 语法

    l  内部类函数想要使用外部定义的对象,则该函数参数必须为final修饰

    l  匿名内部类必须继承一个父类或实现一个接口

    l  可以在interface中实现内部类,此时的内部类自动是public和static的嵌套类

    l  多层内部类可以对任意上层类具有完全访问权限

    l  内部类被继承,必须在孙子类中手动调用爷爷类的构造函数,因为父类(内部类)默认有一个指向爷爷类的引用。: fulei.super()

    l  可以定义局部内部类,该内部类可以访问方法中之前的所有域以及外围类的域

    l  接口对类信息的隐藏并不完整,如果用户使用RTTI仍可以调用具体类的具体方法。对应的策略应该是彻底的对用户隐藏方法,只对interface可见(例如包访问权限)

     

    机制

    l  编译单元文件以.java结尾,编译成机器码后以.class结尾

    l  java没有条件编译功能

    l  所有的类文件只有在被用到的时候才会发生加载,而其中的static域只有在加载时才初始化

    l  java中除了static和final(private)函数,其他函数都是后期绑定(动态绑定)

    l  所有类型转化都会在运行时经过检查,不通过检查会抛出ClassCastException异常

    l  Java泛型是用擦出来实现的,List<String>、List<Integer>在运行时是同一个类型,都是List

    l  如果想要继续持有对象的引用,但又希望在内存不足时垃圾回收机制能够回收该对象,需要使用Reference对象。SoftReference、WeakReference、PhantomReference由强到弱

    l  后台线程生成的线程也是后台线程,前台线程如果全部结束,后台线程会全部退出,但后台线程退出不会影响前台线程。

    l  java的递增操作不是原子操作

     

    继承

    l  继承使用extend关键字

    l  子类中访问父类域用super关键字

    l  子类中重载了父类的函数并不会覆盖父类的函数(C++会)

    l  基类的private方法子类可以定义同名函数,但是不是覆盖,而是全新的函数

    l  子类可以定义与基类同名的变量,但是是全新的变量,访问时必须要限定

    l  在构造函数中不应该调用动态绑定函数(也即普通函数)

    l  子类可以有协变返回类型

    l  有抽象方法的类是抽象类,该类也必须用abstract限制

    容器

    l  容器分为Collection和Map两种

    l  新程序不应使用已经过时的Vector、HashTable、Stack

    l  Set是一种Interface,其具体实现有HashSet、TreeSet、LinkedHashSet等

    l  Queue有LinkedList、PriorityQueue

    l  Map接口有HashMap(搜索)、TreeMap(排序)、LinkedHashMap(迭代)、WeakHashMap(允许回收)、ConcurrentHashMap(并发)、IdentityHashMap实现

    l  当在使用容器的过程中如果其他线程修改了本容器,会抛出ConcurrentModificationException异常

    其他常用库操作

    l  标准输入输出中System.out和System.err都可以直接使用,而System.in是一个未经过包装和加工的InputStream。

    BufferedReader stdin = new BufferedReader(newInputStreamReader(System.in))

    l  setIn(InputStream)、setOut(PrintStream)、setErr(PrintStream)用来给标准输入输出重定向

    l  使用OSExcute.command()执行系统命令

    l  Externalizable接口不序列化,如果非该接口类可以用transient逐个修饰不想被序列化的域,或者是实现自己的writeObject()和readObject()函数。

    l  EnumSet终于可以把枚举体面的放到set里了。EnumMap则可以创建更有意义的map键值

    l  定义任务需要继承Runable接口,并在类中重定义run()函数,该函数就是函数体。但是想要产生线程必须要将一个任务附加到一个线程Thread t = new Thread(new Task),然后调用t.start()开始线程,如此Task中的run函数就被调用了。

    l  调用任务的另一个方法是使用Executor,该机制可以使一个ExecutorService管理所有的任务。另外,Executor还可以调用Callable接口的call方法生成线程。必须使用ExecutorService.submit()调用

    l  Thread.yield()函数强制让调度器起作用。sleep让出CPU资源让调度器起作用

    l  使用Thread.currentThread().setPriority()设置当前线程的优先级。

    l  使用Thread.setDaemon(true)将当前线程设置为后台线程

    l  使用Thread.join()函数让一个线程等待另一个线程结束后才继续执行

    l  对资源加锁可以用synchronized关键字或者java.util.concurrent库

    l  java中有提供原子类:AtomicInteger、AtomicLong、AtomicReference等

     

    tricks

    l  将类的所有构造函数声明为private,则没有人能创建该类,除了本类的static方法

    l  使用类功能时应使用组合,使用类接口时应使用继承

    l  final static命名的变量全部大写,并且以下划线分割

    l   

     

     

    不足

    l  java的数组访问检查、垃圾回收和必须要new对象效率上太差。

    l  所有类变量预初始化多此一举

    l  全后期绑定的策略太扯了

    l  任何封装都无法阻止反射机制获得私有的函数

    l  很容易被反汇编

    l  泛型太差,甚至无法和数组一起工作

    优点

    l  interface、implement、extend关键字很好

    l  充分利用文件名和路径构成的包路径的思路很好

    l  for的foreach写法很好(C++11已经借鉴)

    l  全部都是类的要求很好

    l  框架的生成与使用很好(目前的C++也可以做到,但暂没人做)

    l  广泛的、集成到IDE的、统一的库支持很好,目前C++各种库组织太分散

    l  java库的实现明显是有组织有纪律的,充分考虑实际应用。例如广泛存在的toString

    l  java为每个类都实现了class对象,如此的动态类型变得很容易,更富想象力。但也带来了效率问题。如果所定义的类大部分都只有几个对象,那么这种成本太高,但如果对象是批量的,并且RTTI能带来很大的优势,就可以采用。最好是允许编程时指定是否采用。侧重大型工程和库的对这个功能的需求很大。而且该特性能实现反射,而反射是动态编程的新世界的钥匙

    l  将序列化集成到语言内部

    l  枚举类型很强大,甚至可以定义方法。如此状态机本身可以执行转换了

    l  java中实现很多批量操作,尤其是对字符串和打印信息的更高程度的语言集成

    l  JavaBeans可以很方便的用组件生成程序,C++缺少如此一种与IDE紧密配合的条款

    展开全文
  • C++程序员VS Java程序员

    2012-09-03 19:52:27
    写了两年的安卓程序,主要用Java。今年转ios,搞cocos2d-x的...对比Java,感觉java程序员对程序完全没有什么认知。特别是内存,类型,地址之类,堆栈之类的东西。更别谈程序优化了。 现在再回过投来看C++,看内存分

    写了两年的安卓程序,主要用Java。今年转ios,搞cocos2d-x的游戏开发,c++东西还是复杂一些。

    一直没有做c++的项目,没有项目经验,对c++的理解还停留在大学里面学的那些比较泛泛的概念。这几天去笔试了几次,c++的题基本不会。

    对比Java,感觉java程序员对程序完全没有什么认知。特别是内存,类型,地址之类,堆栈之类的东西。更别谈程序优化了。

    现在再回过投来看C++,看内存分配,看基本类型,看编译原理,感觉清晰了很多。以前做Java,就是查文档,调API,感觉真是没什么意思。碰到内存溢出,或者cpu溢出,都不知道从哪里开始查。

    程序员真的苦逼啊,不停的要学习新东西,还不容易得到认可。一个C++得学多久,做多少项目才能说精通啊,而现在的招聘动不动就要精通xxx。

    苦逼的程序员,怎样才能不这么苦逼啊。

    展开全文
  • //声明文件class CUserInterfaceLayer{//界面层 private: string strLayer; public: void SetLayer(string language); string GetLayer(); }; class CBusinessLogicLayer{//业务逻辑层 ... v...
  • Java学习之路 一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的...
  • 2018眼看就快要过去了,作为Java开发人员和Java博客楼主我经常收到来自世界各地的Java程序员的请求,询问他们如何改进自己。 在过去,我分享过我的成为一个更好的程序员的10条建议,这篇文章中的每一个技巧都是正确...
  • 最近班里的同学都忙着报班,有个达内是java培训,有个深蓝是C++培训,网上看了些帖子说什么的都有,自我感觉培养一个C++程序员的周期要比培养一个jAVA程序员的周期长很多,当然,C++要是的好的话肯定比java的牛...
  • 目前,JAVA是开发人员的热宠,很多论坛都有不少热爱JAVA的开发人员,也有不少想成为JAVA程序员,但苦于不知道该如何学习,也不清楚该些什么知识才能成为一个JAVA程序员。本人在这里抛砖引玉,和大家讨论成为一个...
  • JAVA起于1995年。 经过20多年的发展,JAVA如今已经...我们先来看全球程序员数量,然后计算JAVA程序员的占比以及中国JAVA程序员的占比。 2014年数据分析公司IDC发布报告称:2014年全球的软件开发者数量达到1850万...
  • C程序员学C++吗?

    2012-05-10 16:10:05
    最近网友问到这一问题,但我更希望被问的是“C程序员需要面向对象编程吗?”,那就让我先从回答这一问题开始,并做适当的扩展。 就我的成长经历来看,C程序员必须学习面向对象编程!面向对象编程语言有其天然...
  • 毕竟,C、C++、Linux之父,都是大家最最熟悉的东西。但是许多同学把精力放在纯粹语言优劣的争论上,就没有太大意思了。这场争论的主角之一,微软的Dmitry Kakurin有一句话非常正确:“这是一种信仰问题。因此,任何...
  • 1.Core Java,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要...
  • 我越来越担心我作为一个C++程序员的未来。 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中...
  • 说起我们对编程世界现有的刻板印象,你一定听说过类似于没有人喜欢用Java编码或者使用C ++都是老人家,等等这样的话。为了分析这些刻板印象背后的真相,Trestle Technology的数据工程师写了一个工具。不知道你有没有...
1 2 3 4 5 ... 20
收藏数 168,762
精华内容 67,504