从大学开始学习C语言,到后来学习C++、java、c#,编程语言逐渐从面向过程到面向对象,但面向对象的语言特性基本相似,基础语法差别并不是很大,在这里总结大家对于C++和JAVA两种语言的语法特性,记录下来作参考。
1、内存的分配
(1)C++的内存分配方式:
栈区:一般是int
a这样直接分配空间的变量的内存都是分配在栈区,栈区内存不需要显式释放。
堆区:一般是利用指针分配的内存,需要用delete语句释放。
全局区(静态区):全局变量和静态变量的存储是放在一块的,程序结束后由系统释放。
常量区:常量字符串
代码区:存放函数体的二进制代码
(2)JAVA 的内存分配方式:
java
的运行过程涉及到的内存区域和C++类似,只不过Java系统能够自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用。按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题。
2、文件组成
(1)C++文件组成
C++文件结构是由头文件和源文件组成,一般头文件中定义数据结构和函数的声明,通常以#pragma once或#ifndef来防止头文件的重复包含和编译。大多时候头文件和源文件是对应出现的,也可以有多个对应的源文件。
C++的类一般写在头文件中,main函数所在文件(主文件)需要使用某个类,则将该类所在头文件包含进来。
C++全局变量写在main函数之外,一般写在使用改全局变量的源文件中,其他文件使用则用extern关键字声明。
(2)JAVA文件组成
JAVA是由一系列包和源文件组成,每个源文件包含一个类。
作为一个可以独立运行的Java程序,在它的众多类中必须要有一个类作为程序的起始类,这个类通常称为主类。主类必须为public类,并含有一个在格式上符合约定的入口方法main()。Java类中main()方法就相当于C/C++程序中的主函数,是一个入口函数。
Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能.
3、基本数据类型
(1)C++基本数据类型
C或者C++中,程序会根据不同的处理器现则最为有效的整型,这也是C++效率较高的一个原因。
在C++中布尔类型用bool表示,在C++中整数0可以代替布尔值false,非零值相当于布尔值true。
但在C++中,区分变量的声明和定义
(2)JAVA基本数据类型
在java中,整型的范围与运行java代码的机器无关。
在java中,布尔类型用boolean表示,在java中,boolean类型与整数值之间不能进行相互转化;
在java中,不区分变量的声明和定义。
4、引用和指针
(1)C++的指针和引用
引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间);
引用是为变量或对象起的另外一个别名,引用在创建的时候必须被初始化,一旦引用初始化后,就不能改变引用所指向的变量(或对象),一直和该变量(或对象)邦定在一起。引用必须与一个确定的合法内存单元相关联。不存在NULL引用。
指针是指向另外一个类型的复合类型,指针本身就是一个对象,允许对指针进行赋值和拷贝;指针的生命周期内它可以先后指向几个不同的对象;指针无须在定义时赋初值;与内置类型一样,如果指针没有初始化,将指向一个不确定的值;不能定义指向引用的指针(因为引用不是对象,没有实际的地址)。
(2)JAVA的引用
Java 是传值还是传引用,问题主要出在对象的传递上。
Java 中简单类型没有引用,简单类型是按值传递的。在Java中的引用类型,是指除了基本的变量类型之外的所有类型,所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),
基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中), 方法形参的值传递(引用)是指形参和传进来的参数指向同一个值的内存(heap)中;
引用是一种数据类型,保存了对象在内存中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);
不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。
版权声明:本文为博主原创文章,未经博主允许不得转载。