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

本文详细比较了C语言和Java在标识符规则、数据类型、逻辑与位运算符、常量和变量声明、数组表达式、函数定义、参数传递以及面向对象与面向过程的区别。
摘要由CSDN通过智能技术生成

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

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

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

第二是数据类型:

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

32位系统/字节64位系统/字节
char11
short22
int44
long48
float44
double88

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

Java中的基本数据类型:

32位系统/字节64位系统/字节
byte11
short22
int44
float44
long88
double88
char(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 <stdio.h>  
  
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.优势:面向对象容易维护,复用,扩展,由于面向对象有封装,继承和多态三大特性,使其可以设计出低耦合(就是使每个模块尽可能独立存在)的系统,让系统容易维护,更灵活。但面向过程不支持继承,多态这些特性。

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

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值