一.数据类型
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语言相同,都是从变量定义开始,到函数结束;但是在类中成员变量声明的位置和方法没有规定,即在方法后声明的变量在前面的方法中任能调用,但是一般习惯将成员变量声明在前,方法声明在后.
.