一个例子说明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
- 一个例子说明C语言和Java的区别
- java语言和C语言的区别
- java语言和C语言的区别
- java语言和c语言的区别
- C语言 一个例子说明结构体变量,结构体数组和结构体指针
- C语言中*和&的区别-代码实现说明
- 一个例子说明C语言中代码块作用域、函数作用域、函数原型作用域、文件作用域的区别
- Java和C语言,c++的区别
- Java和C语言,c++的区别
- Java和C语言的区别
- c语言和java的区别
- 一个java和golang(go语言)通信的例子。
- Java初探:浅谈Java语言和C语言的区别
- 以一个小例子来说明java中 == 与 equals() 的区别
- C语言字符串处理的一个例子
- c语言文件读写的一个例子
- C语言实现POST的一个例子
- Java语言和C及C++语言的区别
- 从终端读取一行数据,fgets,gets,c++ string类定义的getline
- c++枚举类型
- (10-1)redis 安装、配置
- 设计模式(9)——Decorator(装饰)模式
- asp .net mvc ajax 传值到后台,并放回JSon值解析
- 一个例子说明C语言和Java的区别
- Jmeter启用英文界面
- 4.linux复习---exec函数族
- (10-2)redis 基本命令
- 《赌玉》--------人生就是一场赌博,眼看准,下手狠
- 如何给UIViewController瘦身
- 杭电2031(进制转换)
- (10-3)redis-string数据类型
- 使用ASM的API动态的创建class文件