一个例子说明C语言和Java的区别

来源:互联网 发布:农村淘宝快递加盟 编辑:程序博客网 时间:2024/04/28 20:27

通过一个求三角形周长和面积的代码,讨论C和Java的区别

首先是C代码:

#include <stdio.h>#include <math.h>int zhouchang(int m, int n, int q){return m + n +q;}double area(int m, int n, int q){double k = 1.0*(m+n+q) / 2;return sqrt(k * (k-m) * (k-n) * (k-q));}int main(void){int a, b, c;a = 3;b = 4;c = 5;printf("%d, %lf\n",zhouchang(a,b,c), area(a,b,c));return 0;}/*在VC++6.0输出结果是:----------------------------12, 6.000000Press any key to continue----------------------------存在的问题:1. 三个边长可以接受任何整数,变量和处理变量的函数是分离的----------------------------*/

C语言思想:

先定义变量保存数据,再定义函数对这个数据进行处理。

Java思想:

先模拟一个事物,事物由其静态属性和动态属性构成。

虽然C语言也允许模拟事物,但是只能包括静态属性,不允许有操作,例如C语言模拟学生事物:

struct Student{int id;char sex;float score;}//C语言模拟事物的方式,只有静态属性,不允许有操作
Java模拟事物即包括静态属性,又包括动态属性(对数据的操作):

class Student{int id;char sex;float score;void study(){}void sleep(){}}//Java可以有静态,有操作,把struct改成 class

class类似C语言中的struct,但是C语言中struct不允许加操作。

Java中的函数也叫做方法,方法逻辑意义代表的是一个事物可以执行的操作。

例如用Java模拟三角形这个事物:

class Triangle{int a;int b;int c;int zhouchang(){return a + b + c;}//不需要加形参,因为这个函数属于事物本身,可以直接对自身数据进行操作//zhouchang函数和属性a b c是一个有机整体double area(){double p = 1.0*(a+b+c) / 2;return Math.sqrt(p *(p-a) * (p-b) * (p-c));}//Math中的一个工具sqrt};

对事物的操作:

class M{public static void main(String[] args){/*int i;int * p = (int *)malloc(sizeof(int));//定义一个动态整型//先动态的分配一个整型的空间,然后把它的地址发送给pA * q = (A *)malloc(sizeof(A));//造出A这个事物,q指向A事物Triangle * r = (Triangle *)malloc(sizeof(Triangle));*/Triangle s = new Triangle();//Java写法,但是像C中执行。new就像C中的mallocs.a = 3;s.b = 4;s.c = 5;System.out.printf("%d  %f",s.zhouchang(),s.area());//在java中double 和float都用%f输出//在C中,double用%lf输出,float用%f输出}}

把刚才的Java代码整理一下:

class Triangle{int a;int b;int c;int zhouchang(){return a + b + c;}//不需要加形参,因为这个函数属于事物本身,可以直接对自身数据进行操作//zhouchang函数和属性a b c是一个有机整体double area(){double p = 1.0*(a+b+c) / 2;return Math.sqrt(p *(p-a) * (p-b) * (p-c));}//Math中的一个工具sqrt};class TestTriangle{public static void main(String[] args){Triangle s = new Triangle();//Java写法,但是像C中执行。new就像C中的malloc,动态的分配s.a = 3;s.b = 4;s.c = 5;System.out.printf("%d  %f",s.zhouchang(), s.area());}}

运行方法:

javac Filename.java

java Filename

Java中数据和数据的操作是一个整体,操作是这个事物的一部分,直接写zhouchang();无效,必须指明是某个事物的操作,如s.zhouchang();





0 0