一个例子说明C语言和Java的区别
2015-05-10 22:50
260 查看
通过一个求三角形周长和面积的代码,讨论C和Java的区别
首先是C代码:
C语言思想:
先定义变量保存数据,再定义函数对这个数据进行处理。
Java思想:
先模拟一个事物,事物由其静态属性和动态属性构成。
虽然C语言也允许模拟事物,但是只能包括静态属性,不允许有操作,例如C语言模拟学生事物:
class类似C语言中的struct,但是C语言中struct不允许加操作。
Java中的函数也叫做方法,方法逻辑意义代表的是一个事物可以执行的操作。
例如用Java模拟三角形这个事物:
对事物的操作:
把刚才的Java代码整理一下:
运行方法:
javac Filename.java
java Filename
Java中数据和数据的操作是一个整体,操作是这个事物的一部分,直接写zhouchang();无效,必须指明是某个事物的操作,如s.zhouchang();
首先是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();
相关文章推荐
- 一个例子说明C语言中代码块作用域、函数作用域、函数原型作用域、文件作用域的区别
- 一个例子说明java局部代码块、静态代码块、构造代码块区别
- 以一个小例子来说明java中 == 与 equals() 的区别
- String str1="hello"; 以一个小例子来说明 == 与 equals() 的区别
- 用一个形象的例子说明面向对象编程和面向方法编程的区别
- 一个例子说明mouseover事件与mouseenter事件的区别
- java 的工厂模型(一个简单的例子来说明)
- 一个简单的例子说明JQuery中wrap、wrapAll、wrapInner的区别
- 一个实例说明java中的list,set,map三者区别
- 一个简单的例子说明java中spring框架的依赖注入
- C语言 一个例子说明结构体变量,结构体数组和结构体指针
- 几个例子说明JAVA中的equals和==区别
- 一个简单的例子说明java中spring框架的依赖注入
- 用例子来说明面向对象和面向过程的区别(java)
- Java学习笔记1------用例子来说明面向对象和面向过程的区别
- java匿名类与内部类的一个例子【区别这两者的区别】
- 一个例子说明substr(), mb_substr() 和 mb_strcut()之间的区别
- 一个简单例子说明为什么C语言在2013年仍很重要
- 一个简单例子说明为什么C语言在2013年仍很重要
- 一个简单例子说明为什么C语言在2013年仍很重要