Java与c语言基础语法的区别,面向对象思想和面向过程思想的区别

您所在的位置:网站首页 java语法和c语言差不多 Java与c语言基础语法的区别,面向对象思想和面向过程思想的区别

Java与c语言基础语法的区别,面向对象思想和面向过程思想的区别

2024-07-17 14:13| 来源: 网络整理| 查看: 265

java与c语言基础语法的区别

C语言和Java语言都是目前IT领域内使用非常广泛的编程语言,他们有很多相似的地方,亦有许多不同,接下来我将说说他们基础语法的不同之处。

第一是我们学习c语言和Java首先会了解到的标识符,Java和c语言中可以使用的标识符有数字(1,2,3...)、下划线(_)、大小写字母(Aa,Bb...),但是Java中还可以使用美元符号($)。注意他们都不可以数字开头!!!

第二是数据类型:

c语言中的基本数据类型:

32位系统/字节64位系统/字节char11short22int44long48float44double88

c语言中还包括了空类型(void),结构体类型(struct),枚举类型(enum),指针类型等。

Java中的基本数据类型:

32位系统/字节64位系统/字节byte11short22int44float44long88double88char(Unicode编码)22

Java中除了以上的类型还有Boolean类型(true or false),类、接口、数组等引用类型。

Java中是没有指针类型的,而c语言中也没有定义布尔类型,c语言中用0表示假,1表示真,Java中true为真,false为假。

第三是逻辑运算符和位运算符:

逻辑运算符:

c语言和Java都有与(&&),或(||),非(!),但是c语言返回的是0或1,Java返回true或false。在Java中还有逻辑与(&),逻辑或(|),异或(^),& 和 && 区别是&&如果左边为真,右边参与运算,如果左边为假,那么右边则不参与运算(一假必假);&不论左边是假还是真两边都会进行判断,当两边都为真时结果才为真;| 和 || 也是同理,||如果左边为假,右边参与运算,如果左边为真,那么右边则不参与运算(一真必真);|不论左边真假,右边都进行运算,并且只有两边都为假时结果才为假。对于异或运算符左边都为真或假时,结果为false。

位运算符:(主要针对二进制位进行操作)

c语言和Java中都有与(&)、或(|)、非(~)、异或(^)、左移()

在c语言中,左移运算符()都用于整数类型,包括有符号和无符号整数。对于无符号整数,左移和右移都会自动补0。对于有符号整数,如果使用右移运算符(>>),符号位会保持不变,左边会补上符号位。

而在Java中,“>>”表示有符号右移,“>>>”才表示无符号右移,对于带符号右移,如果直接使用>>,Java会保持符号位不变,左边会补上符号位。只有使用>>>时,才会全部补0。对于左移操作,无论是c语言还是Java,低位都会自动补0。

第四是常量和变量的声明:

变量:

在c语言中变量可以在任何地方声明,Java则必须先声明后使用,并且c语言中嵌套的代码块中声明的变量可以重名,而Java中不被允许,在一个变量的作用域内,也就是同一代码块中不可声明同名变量。(注意:这里说的是在函数声明变量时的局部变量,局部变量和全局变量是可以同名的)

常量:

整数常量定义方式差不多,采用二进制、八进制、十进制、十进制和十六进制四种方式来表示,特别注意十六进制必须以0x或0X开头,以十进制表示时,第一位不能是0,0本身除外。

浮点数常量Java程序中,单精度浮点数后要以F或f结尾,双精度浮点数以D或d结尾,在使用浮点数时也可不加后缀,此时计算机将默认为双精度浮点数,指数用e来表示;其还包含了布尔常量,这是c语言中没有的,布尔常量只有true(真)和false(假)两个值。

字符常量在c语言中用单引号引起来,一个字符常量代表一个ASCII表中的一个字符,他们都有对应的值,大小写字母的值是不同的。在Java中字符常量也是用单引号引起来的,其字符常量在内存中是存储为Unicode码点,而不是ASCII码值。

注释:Unicode码点(Code Point)是指每个字符在Unicode字符集中的唯一编号或标识。这个编号范围从0x000000到0x10FFFF,涵盖了世界上大部分的文字系统。

字符串常量在Java和c语言中的主要区别在于Java中的字符串常量是不可变的,而c语言中的字符串常量是可变的。这种差异使得Java中的字符串处理更为安全和高效。c语言字符串会以'\0'作为终止标志,但Java中没有这种终止标志。

在Java中定义常量的关键字是final,c语言中用#define来定义常量。

第五是数组:

表达方式:c语言 数组类型 数组名[数组大小],Java 数组类型 数组名[ ]或数组类型 [ ]数组名

声明方式:c语言中声明时就要指定数组大小,如int a[10]则是声明了一个可储存10个整数的数组,且这些数的内存是连续的;而Java在声明数组时不需要指定大小,可在创建时使用new来指定,如int arr[] = new int[10]。

内存管理:在c语言中,数组是静态的,即一旦声明了数组的大小,就不能改变。而在Java中,数组是动态的,可以根据需要随时改变大小。也就是说,c语言中的数组一旦被声明,编译器就会开辟一个连续的内存空间给该数组,而Java不会。

第六是函数:

定义方式:c语言中函数是单独定义,而Java中的函数被定义在一个类中,如:

c语言:

int add(int a, int b){ return a + b; }

Java:

public class Sum{ public int add(int a,int b){ return a+b; } }

以上例子中Java是先创建了一个Sum类,在这个类中定义了一个两数和的函数。c语言则是单独定义一个函数。

函数调用:c语言可直接在main函数中调用,Java要先创建一个类的对象,再通过对象调用函数。

Java:

public static void main(String[] args){ Sum sum = new Sum(); int result = sum.add(3,4); System.out.println("The sum is " + result); } }

参数传递:c语言中是值传递,Java中是引用传递。

c语言:

#include void a(int num) { num = num + 1; } int main(){ int x = 5; a(x); printf("x = %d\n", x); //输出:x = 5 return 0; }

上述例子,a函数想改变x的值,但是我们最后输出的x值没有变,因为c语言是值传递,只是将5这个数值传给了num,所以x的值仍然是5。

Java:

public class Main{ public static void increment(int[] nums){ for (int i = 0; i < nums.length; i++){ nums[i]++; } } public static void main(String[] args){ int[] x = {5, 6, 7}; increment(x); System.out.println("x = " + x[0]); // 输出:x = 6 System.out.println("x = " + x[1]); // 输出:x = 7 System.out.println("x = " + x[2]); // 输出:x = 8 } }

看Java的例子我们发现x数组中各值是被改变了的。

函数作用域:在c语言中,函数的作用域是全局的,可以在程序的任何地方调用。在Java中,方法的作用域是局部的。

面向对象思想和面向过程思想的区别

首先来了解一下什么是面向对象?什么是面向过程?

面向对象编程是指程序中的所有操作都是通过对象来完成的,做任何事之前先找到它的对象,然后通过对象来完成各种操作。在程序世界中一切皆对象!面向过程编程是分析出解决一个问题的具体步骤,然后用函数将其实现,完成各种操作。

可以通过一个例子来更好的理解一下:比如人使用手机玩游戏,听歌

面向对象的分析过程是:

这一事件中有哪些对象:人和手机

定义他们的属性和功能:人:人需要有能玩手机游戏的功能,能听音乐的功能;手机:手机需要有能够玩游戏,听音乐的功能

面向过程的分析过程是:

第一步:打开手机

第二步:打开手机游戏和音乐软件

第三步:开始玩游戏,听音乐

了解之后来看看面向对象思想和面向过程思想的区别,面向对象思想和面向过程思想是两种不同的软件开发思想。

1.编程思路:面向过程以实现功能的函数开发为主,面向对象要先要把类,属性和方法拿出来,然后通过具体化类,执行方法来实现功能。

2.特点:面向过程是分析出解决问题需要的步骤,然后用函数一步一步实现,使用时依次调用即可,它是以函数为最小单位。对于面向对象,其以对象为最小单位,在一个问题分解出各个对象,来描述某个对象在解决问题中的行为。。

3.优势:面向对象容易维护,复用,扩展,由于面向对象有封装,继承和多态三大特性,使其可以设计出低耦合(就是使每个模块尽可能独立存在)的系统,让系统容易维护,更灵活。但面向过程不支持继承,多态这些特性。

注:写这篇文章参考了很多其他的优秀文章,查阅了资料和课本。希望对你有帮助。当然会有很多不足之处,欢迎各位在评论区留下宝贵意见!!!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3