您的位置:首页 > 编程语言 > C语言/C++

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

2015-05-10 22:50 260 查看
通过一个求三角形周长和面积的代码,讨论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.000000
Press 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));//定义一个动态整型
//先动态的分配一个整型的空间,然后把它的地址发送给p
A * q = (A *)malloc(sizeof(A));	//造出A这个事物,q指向A事物

Triangle * r = (Triangle *)malloc(sizeof(Triangle));
*/
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());
//在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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: