JAVA基础篇一(Java,C++基础语法的比较)

从大学开始学习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)中;

引用是一种数据类型,保存了对象在内存中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);

不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 15:30:38

JAVA基础篇一(Java,C++基础语法的比较)的相关文章

[Java 05 OO] (基础篇) 《Java开发实战经典》

p5OO 第五章 面向对象 (基础篇) Notes (1), Constructor / this / String   String str1 = "hello"; 解释 : 是把一个在堆内存空间的使用权给了 str1 对象.   String str2 = "hello"; str1 == str2 是 true   String 字符串的内容不可改变 (2), Java 常用的内存区域    1), 栈内存空间    2), 堆内存空间    3), 全局数据

javamail模拟邮箱功能发送电子邮件-基础篇(java电子邮件实例)

引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html JavaMail  API中包含了多种邮件传输协议: SMTP   POP(最新为pop3)  IMAP  MIME 四大类  (本章主要讲解常用的 SMTP) 该API的几大核心类:会话(session).消息(message).地址(address).验证程序(Au

java基础篇(三) ----- java面向对象的三大特性之多态

封装(encapsulation) 类使得数据和对数据的操作捆绑在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏: 继承(inheritance) 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用.比如可以先定义一个类叫animal,animal具有以下属性:   眼睛,鼻子,耳朵 而又由ani

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.

java基础篇(一) ----- java面向对象的三大特性之封装

java面向对象的三大特性之封装:   封装(Encapsulation)是面向对象的一个重要特征,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节. 通俗的讲所谓封装就是将属性和方法捆绑到一起,封装到一个对象中去, 形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了. 如果形容一个人(假设把人看做一个类),我们可以用姓名.年龄,性别等来描述,如果不封

Lua 学习之基础篇十&lt;Lua 常见的语法规则&gt;

下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助. 1. if判断 lua把 nil 和false 视为"假",其他都为"真" 2. 逻辑运算符 and or lua的and or 可以用来构成三元表达式,如下: > = 1 == 1 and 1 or 2 1 但如果是这样写,就不是你想要的结果了: > = 1 == 1 and false or true true 这是因为,and 运算符判定 false不成立,就继续执行了 or 运算

Eclipse插件开发之基础篇(1) 插件开发的基础知识

转载出处http://www.cnblogs.com/liuzhuo 名词翻译 有一些名词在翻译的过程中可能会出现歧义,在这里统一一下. アーキテクチャ=architecture=架构 プラットフォーム=platform=平台 コンポーネント=component=组件 其余的随时补充. 1.Eclipse的架构 Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse是一个整合了各种开发工具的平台.因此,它采用了可以自由的增加各种功能的插件架构技术.Ecli

[转]Eclipse插件开发之基础篇(1) 插件开发的基础知识

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/13/eclipse_plugin_1_0_2.html 名词翻译 有一些名词在翻译的过程中可能会出现歧义,在这里统一一下. アーキテクチャ=architecture=架构 プラットフォーム=platform=平台 コンポーネント=component=组件 其余的随时补充. 1.Eclipse的架构 Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse

Java初级篇 1-1 Java特点以及版本

1.跨平台是Java语言的核心优势.在各个平台上都可以使用Java这门语言. 在企业 安卓 大数据 云计算等等行业的主流语言. 2.JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用.也就是桌面上的应用(这也是Java的一个短板). 3.JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用.例如银行取钱 服务员就是利用服务器端进行操作. 4.JavaME(Java Micro Edition):微型版,定位在消费性

Java程序员面试题之JavaSE之基础篇

一.JavaSE之基础篇 1.JavaSE基础之语法 ######(1).简述你对JVM,JRE,JDK的理解? JVM:java虚拟机.是一个模拟的计算机,相当于真实存在的计算机(软件+硬件). JDK:是整个java的核心.程序员的产品.包括了java的运行环境.java的工具.java的基础类库. JRE:运行环境.拓展----JVM.JDK和JRE之间的关系:JDK包括JRE,JRE包括JVM######(2).一个".java"源文件中是否可以包括多个类(非内部类)?有什么限