java和C语言在数据类型和语法上的比较

本文对比了Java与C语言的数据类型,包括基本类型、引用类型、标识符规则,以及两者在内存分配、数组建立机制和变量定义约束上的区别。详细解析了各自的特点和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.数据类型

1.Java:Java的数据类型可分为两大类:
①基本数据类型:byte、short、int、long、double、float、boolean、char
②引用数据类型:类、接口、数组、枚举、注解
~int 类型占四个字节
~常量有final关键字修饰。
~定义float类型时,赋值时一定要在浮点数后加f,否则自动视为double类型,且会编译失败。
~Java中当高精度赋值给低精度类型时,会编译失败,显示不兼容的类型。
~Java中字符型中字符对应的Unicode编码,占2字节,可以保存单个汉字。
~java整数默认为int,超过int类型要加L,建议大写,否则容易和1搞混.,小数默认double.
~java布尔值输出就是false,和true
~java是强类型语言,在基本数据类型的赋值和转化上比较严格

2.C语言:C语言的数据类型可分为:
①基本数据类型:short int、int(由硬件决定可能2字节也可能四字节)、long int、double、float、char、long longint(C99增加)、long double、bool(C99增加)、float_complex、double_complex、long long _complex
②枚举类型:enum
③空类型:void
④派生类型:指针类型(*)、数组类型([])、结构体类型(struct)、共用体类型(union)、函数类型
-常量由#define定义。
-C语言中定义浮点型不会出现java中的问题。
-C语言中当高精度赋值给低精度类型时,会有精度缺失,但并不会造成编译失败。
-C语言中字符型中字符对应ASCII码。
-C语言中char占一个字节,不能保存单个汉字。
~没有boolean类型的变量,正数代表true,非正数代表false
3.标识符
Java:Java标识符有如下命名规则:

     1、标识符由字母、数字、 “_”、 “$”组成,且首字母不能是数字(实际上其他语言中的字符也可以);
     2、不能把Java关键字作为标识符;
     3、标识符没有长度限制;
     4、标识符对大小写敏感。
     5、自定义标识符最好取具有一定意义的字符串,便于记忆和理解。

C语言:C语言标识符有如下规则:

   1、标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
   2、标识符区分大小写字母 
   3、标识符的长度,c89规定31个字符以内,c99规定63个字符以内 
   4、C语言中的关键字,有特殊意义,不能作为标识符 

4.运算符
java中"+"还可以作为字符串的连接符.

二.语法

1.Java与C内存分配不同:
①.Java中内存分配五个区,分别为栈区(存储的是局部变量,使用完毕,立即回收),堆区(存储的是new出来的东西,实体,对象,每一个对象都有地址值,每个对象的数据都有默认值,使用完毕后,会在垃圾回收器空闲的时候回收),方法区,本地方法区(和系统相关),寄存区(给cpu使用)。
②.C中内存分配四个区,分别为栈区(存储函数参数,局部变量的值),堆区(动态内存申请与释放,若程序员不释放内存,则程序结束后可能由操作系统释放),全局区(静态区),代码区。
2.数组的建立机制不同
Java数组初始化分为动态初始化和静态初始化:
①动态初始化只给出长度,由系统给出初始化值。它的形式为:int[]arr=new int[3],(3表示一维数组中有三个元素,此时的[]被预定义为检查数组边界,没有指针运算,即不能通过a+1得到数组的下一个元素)
B.静态初始化给出初始化值,由系统决定长度。它的形式为:int[]arr={1,2,3}.
而C语言中定义一个动态数组形式为:int a=(int)malloc(sizeof(int)*3),定义一个静态数组形式为:int a[3]。

3.变量定义的约束
在java方法中,变量的范围和C语言相同,都是从变量定义开始,到函数结束;但是在类中成员变量声明的位置和方法没有规定,即在方法后声明的变量在前面的方法中任能调用,但是一般习惯将成员变量声明在前,方法声明在后.

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值