零基础同事学习C++自学一个月与java上课半个月之后的一些总结

C++与java在语法上是相似的

输出语句C++: cout<<

输出语句java:System.out.print()

两者相比之下C++的更为简洁,虽然java可以使用sout来快捷补完输出语句但是在读取时依然臃肿。

输入语句C++:cin>> or getline(cin,内容)

输入语句java:Scanner input=new Scanner(System.in)//创建输入对象而后对变量进行赋值

两者相比C++不管使用哪种方式都是优于java的,首先java在编写代码时目前并没有找到可以通过一行代码来进行多个输入操作的情况

每次使用都需要用多条语句来应对多次的连贯输入,比如C++输入姓名、年龄、性别的等可使用:

cin>>name>>age>>gender;这样的一句来进行一条语句多次赋值

而java中需要:

首先需要创建输出对象Scanner

然后对对象进行逐条赋值,并且需要根据所村粗的数据类型来判断

name=input.next();

age=input.nextInt();

gender=input.next().charAt(0);

两者相比java依旧是体现出了代码量增加的情况,(可能是由于java作为完全面向对象语言的特性,对此表示不理解,但不管是C++还是JAVA这里应该都是使用了前辈牛人所留下的便利条件)

以上是输入输出对象的基本对比,谈不到理解只能说可以使用。

数据类型

C++ int shortint longint longlong float double longdouble char bool(由于没有真正经历过什么项目或者实践。对于宽字符型和只取正数部分的的数据类型不太了解具体的使用方式)

java八大基本数据类型 byte int short long float double char boolean

两者对比看起来区别不是太大,我个人理解的有以下几点

首先最简单的bool类型,在C++中是以整形存放,可以很方便的转换为1和0来,而java中作为一个单独的类型存放,虽然也可以用1和0表示但bool类型的数据在java中并不能直接转换。

因此就bool类型来看C++稍微灵活一些。

其次是长整形部分,虽然目前本人所接触的所有数据都足以用int应付,但是应该对庞大数据的处理情况,C++提供了longlong类型,是范围比java的村粗范围更宽。

其他的部分由于byte没有接触不太了解,c++与java中float个人基本都是用double替代,目前暂不明会这两者在效率上产生的差异,只是感觉double使用起来更方便。

*float和double标准写法:1.1f,1.2d。一般来讲省略默认为double。

特殊类型string:

就目前的学习来看不管在C++中还是java中string字符串型都是一个特殊的类型。这个类型的基础是char类型的字符数组。

因此在java中和C++中都可以对其单个的元素进行提取等操作

c++并没有学习到关于字符串的操作,个人猜测可能是因为在c++中string被前人所搭建的更加完善

在JAVA中string的S需要大写而C++中则与其他的基本类型一样即可

c++中操作字符串需要导入#include<string>

java中则不需要导入,因为他存在于java.util.*基础包当中,java中基础包的内容是不需要手动导入而被默认导入的

但是C++如果需要使用这些功能都需要导入头文件以及调用命名空间。(PS:命名空间的部分并不理解,虽然每次都调用STD但是并不知道其内部结构)

三种控制结构上if switch for,两者使用的时候几乎没有感觉到区别。

关于函数:

函数是C++中的说法,也就是java中的方法。

C++中函数可以单独存在,甚至可以单独创建模板函数来方便调用

定义:template<typname T&>void swap<t&,t&>

函数模板由模板定义和函数定义组成,函数模板和函数声明是在一起的,通常写在一行,一般以T来代替数据类型

说明:template//声明这是一个模板

typname//类型的名称

T&//类型的参数

模板函数的作用,在定义变量时和函数实现是需使用引用。

个人理解部分:引用在C++中视为引用被引用对象的本体。模板函数是对被引用本体的数据类型自判断。

函数重载部分

函数重载内容不多,个人理解为是编译器以类似函数名+数据类型+数据类型。。。。的方式进行重命名

例:void func(string)与void func(int)编译器重命名为类似func_string与func_int,因此不能也导致了函数重载中不能存在两个同名且参数相同的函数

***********************************************************************************************************************************************************************************************

OOP部分

类和对象

C++中的函数对应的是类和对象中的方法部分。

之后统称为方法

类是由属性+方法构成的。

属性是对象所具有的静态的特征,方法则是对象的可操作的行为。

类是一个抽象的(此处并不是指抽象类,这里的抽象指的是模糊而不是‘抽’‘象’)

对象则是类的实例,也就是一个清晰的个体。

创建类的区别在创建上

java需要用类名对象名(变量名)=new 类名();

c++中有两种方式(均需要导入头文件,且因为是自定义的头文件因此需要“”来引导而不是官方的<>)

方法1:类型名 对象名;

(个人理解:用此方法创建的对象是在栈区的。)

方法2:类型名*(类型名指针) 对象名=new 类型名;

首先new的意思是动态分配内存,这个时候所产生的对象分配在堆区

这里的区别是java在jvm上运行,由于是虚拟机因此是十分安全的,并且java有内存自动的回收机制,虽然个人并不太理解。

C++使用new分配的内存需要手动释放。因此使用new的时候一定要搭配delete删除。如果不删除会导致内存溢出的风险

这在java中并不会出现,但是由于不删除就一直存在的特点在某些情况下会更加灵活。

访问修饰符:

public 公共的 所有人可以访问

private 私有的 本类可以访问

protected 保护的 本包以及子类可以访问

友元 这个在java中不写的话默认为这个访问修饰符,本包内的都可以访问,而C++中默认是私有的

虽然c++中有友元,但是本人还没有学习到日后在记录。

创建属性:

java中目前需要在每个属性前都加访问修饰符

c++中只需要访问修饰符:即可默认下面区域中为同一类访问修饰符

创建方法:

java作为完全面向对象语言,直接在类中实现即可

C++的类只作为定义属性以及方法,方法在类中并不实现而是在其他CPP文件中实现

这里会遇到的问题是如果类定义的属性是私有的,在其他CPP文件中实现时需要用其他的办法暴露出来才可使用。

(个人理解部分:C++中存在inline函数。如果在类中直接实现函数namename调用时就会成为inline函数,inline函数相当于编译时直接复制这段代码到函数调用处虽然可以实现,但是长代码的效率并不高)

暂时写到这里

原文地址:https://www.cnblogs.com/deemohans/p/11665828.html

时间: 2024-10-10 07:57:25

零基础同事学习C++自学一个月与java上课半个月之后的一些总结的相关文章

自学一个月的java了

不知道这篇博文有不有朋友看到.先自我介绍一下,硕士一年级下学期. 对编程感兴趣,硕士一年级下学期转学计算机专业,目前刚好一个月的时间.接触计算机也是刚好一个月的时间. 学习了java,javaweb.java只是学了基础的章节,很多题目没有做,只是了解一些基础的东西.因为想早点对这些东西有一些了解,就继续学习了javaweb,现在算是遇到了一点瓶颈了,javaweb里面的JSP和SERVLET还没有完全搞清楚,不过,我总是觉得自己就差那么一点点就可以把基本的东西有个了解了. 经常会遇到很多困难,

零基础如何学习编程

零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛--编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出.编程的入场入口只有一个,出场的出口却很多.自学编程的新人,有很大一部分卡在了入门上,对此,我想写下对编程入门的一些拙见,权当抛砖引玉,或对或错,还望同学们自己鉴定.1.零基础,打算自学编程,应具备哪些的知识?答:对于入门阶段,对知识水平的要求并不算高,或者说很低,

零基础入门学习java,应该如何快速打好Java基础?

零基础入门学习java,应该如何快速打好Java基础?从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用. 创一个小群,供大家学习交流聊天如果有对学java方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学java能够持之以恒java爱好群,如果你想要学好java最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习java组织

零基础如何学习java更有效呢?

零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向对象编程语言.向对象编程是Java最核心的思想,这也是区分和C等其他编程语言的一个显著特征.掌握面一门语言,首先得掌握它的思想,思想决定高度.这就和我们学习语文和英语一样,汉语学拼音,英语学音标.抓住了核心,学习起来就事半功倍. 二.弄清基本概念 作为一门语言,Java肯定有着丰富而又简单的概念.弄

零基础如何学习挂机宝云计算?

云服务器能从零基础学习云计算?如果您是一个未曾进行云计算相关的工作的人,需要学习云计算,挂机宝就要具备操作系统,网络,应用服务等知识.市面上实现云计算的厂商已经有很多了.商业阵营的微软,IBM,谷歌,VMWARE,华为,都有非常成熟的产品. 如果资金充裕,购买任意一款云产品,您就会得到非常专业的技术支持和服务.(开个玩笑,一般也买不起啊)如果您只是一个普通爱好者,我建议选择开源阵营的KVM,XEN,OPENSTACK,DOCKER等技术入手,因为他们的开源(免费)特性,所以近些年来广泛受到各大I

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将

鱼C《零基础入门学习Python》1—9节课时知识点总结

第一节:我和python的第一次亲密接触 0. Python 是什么类型的语言? 答:脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比 C语言.C++语言 或 Java 之类的系统编程语言要简单容易.也让脚本语言另有一些属于脚本语言的特性: 语法和结构通常比较简单 学习和使用通常比较简单 通常以容易修改程序的“解释”作为运行方式,而不需要

大牛整理最全Python零基础入门学习资料

大牛整理最全Python零基础入门学习资料 0 发布时间:『 2017-11-12 11:56 』     帖子类别:『人工智能』  阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料』的责任编辑:老王) 摘要:大牛整理最全Python零基础入门学习资料 Python数据类型--数字 Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. var1 = 1 var2 = 10 您也可以使

适合零基础小白学习的ui设计方法及课程大纲分享

ui界面设计教程学什么?首先想要学习ui设计,你得了解ui界面设计是什么?只有了解清楚了你才能更好的去开展学习. 对于很多从零基础开始学习ui设计的人来说,不知道ui要学会哪些内容才能更好的工作,所以今天就把ui界面设计课程大纲分享给大家.不管是有基础还是没有基础的同学都可以根据这份课程大纲来学习.有条理的学习才能更好的了解和掌握阶段性的学习课程,也能了解自己学到了哪个部分,掌握了哪些技能. 1.PS技术 如果现在还有不会用PS的同学,请先去搜索免费的基础课程来学习,至少要用透左边的工具栏,还有