C Programming vs. Java Programming
| Thing | C | Java | 
|---|---|---|
| type of language | function oriented | object oriented | 
| basic programming unit | function | class = ADT | 
| portability of source code | possible with discipline | yes | 
| portability of compiled code | no, recompile for each architecture | yes, bytecode is "write once, run anywhere" | 
| security | limited | built-in to language | 
| compilation | gcc hello.c creates machine language code | javac Hello.java creates Java virtual machine language bytecode | 
| linking in the Math library | gcc -lm calculate.c | no special flags needed | 
| joint compilation | gcc main.c helper1.c helper2.c | javac Main.java - any dependent files are automatically re-compiled if needed | 
| execution | a.out loads and executes program | java Hello interprets byte code | 
| hello, world | #include<stdio.h> int main(void) { printf("Hello\n"); return 0; } | public class HelloWorld { public static void main(String[] args) { System.out.println("Hello"); } } | 
| integer types | int usually 32 bit 2's complement; long usually 32 bit 2's complement | int is 32 bit 2's complement; long is 64 bit 2's complement | 
| floating point types | float usually 32 bit; double usually 64 bit | float is 32 bit IEEE 754 binary floating point; double is 64 bit IEEE 754 | 
| boolean type | use int: 0 for false, nonzero for true | boolean is its own type - stores value true or false | 
| character type | char is usually 8 bit ASCII | char is 16 bit UNICODE | 
| for loops | for (i = 0; i < N; i++) | for (int i = 0; i < N; i++) | 
| array declarations | int *a = malloc(N * sizeof(*a)); | int[] a = new int[N]; | 
| array size | arrays don't know their own size | a.length | 
| strings | '\0'-terminated character array | built-in immutable String data type | 
| accessing a library | #include <stdio.h> | import java.io.File; | 
| accessing a library function | #include "math.h" x = sqrt(2.2); all function and variables names are global | x = Math.sqrt(2.2); functions have different namespaces | 
| printing to standard output | printf("sum = %d", x); | System.out.println("sum = " + x); | 
| formatted printing | printf("avg = %3.2f", avg); | System.out.printf("avg = %3.2f", avg) | 
| reading from stdin | scanf("%d", &x); | Java library support, but easier to use our library int x = StdIn.readInt(); | 
| memory address | pointer | reference | 
| manipulating pointers | *, &, + | no direct manipulation permitted | 
| functions | int max(int a, int b) | public static int max(int a, int b) | 
| pass-by-value | primitive data types, structs, and pointers are passed by value; array decays to pointer | all primitive data types and references (which includes arrays), are passed by value | 
| defining a data structure | struct | class - key difference is language support for defining methods to manipulate data | 
| accessing a data structure | a.numerator for elements | a.numerator for instance variables, c = a.plus(b) for methods | 
| pointer chasing | x->left->right | x.left.right | 
| allocating memory | malloc | new | 
| de-allocating memory | free | automatic garbage collection | 
| memory allocation of data structures and arrays | heap, stack, data, or bss | heap | 
| buffer overflow | segmentation fault, core dump, unpredicatable program | checked run-time error exception | 
| declaring constants | const and #define | final | 
| variable auto-initialization | not guaranteed | instance variables (and array elements) initialized to 0, null, or false, compile-time error to access uninitialized variables | 
| data hiding | opaque pointers and static | private | 
| interface method | non-static function | public method | 
| data type for generic item | void * | Object | 
| casting | anything goes | checked exception at run-time or compile-time | 
| demotions | automatic, but might lose precision | must explicitly cast, e.g., to convert from long to int | 
| polymorphism | union | inheritence | 
| overloading | no | yes for methods, no for operators | 
| graphics | use external libraries | Java library support, use our standard drawing library | 
| null | NULL | null | 
| enumeration | enum | typesafe enum | 
| preprocessor | yes | no | 
| variable declaration | at beginning of a block | before you use it | 
| variable naming conventions | sum_of_squares | sumOfSquares | 
| commenting | /* */ | /* */ or // | 
| file naming conventions | stack.c, stack.h | Stack.java - file name matches name of class | 
| callbacks | pointers to global functions | use interfaces for commmand dispatching | 
| variable number of arguments | varargs | String ... | 
| assertions | assert | assert | 
| exit and return value to OS | exit(1) | System.exit(1) | 
C Programming vs. Java Programming的更多相关文章
- Java Programming Language Enhancements
		引用:Java Programming Language Enhancements Java Programming Language Enhancements Enhancements in Jav ... 
- Java Programming Test Question 3
		import java.util.HashSet; public class JPTQuestion3 { public static void main(String[] args) { HashS ... 
- Java Programming Test Question 2
		public class JPTQuestion2 { public static void main(String[] args) { String s3 = "JournalDev&qu ... 
- 文本信息“welcome to java programming!”
		import javax.swing.JOptionPanepublic class welcome {public static void main(string[] arg){JOptionPan ... 
- Java programming language compiler
		https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html\ javac - Java programming l ... 
- Parallel Programming  AND Asynchronous Programming
		https://blogs.oracle.com/dave/ Java Memory Model...and the pragmatics of itAleksey Shipilevaleksey.s ... 
- Java Programming Guidelines
		This appendix contains suggestions to help guide you in performing low-level program design and in w ... 
- iOS运行时编程(Runtime Programming)和Java的反射机制对比
		运行时进行编程,类似Java的反射.运行时编程和Java反射的对比如下: 1.相同点 都可以实现的功能:获取类信息.属性设置获取.类的动态加载(NSClassFromString(@“clas ... 
- Fast Intro To Java Programming (2)
		Java局部变量 局部变量声明在方法.构造方法或者语句块中: 局部变量在方法.构造方法.或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁: 访问修饰符不能用于局部变量: 局部变量只在声明它 ... 
随机推荐
- 第一次项目上Linux服务器(一:远程连接服务器)
			一.准备工作 1.Linux服务器一台,以及服务器ip.用户名.密码 2.安装xfttp和xshell软件,资源链接,百度云链接:https://pan.baidu.com/s/1vwnlbBpmjX ... 
- 【webserver】使用python实现webserver,支持上传下载文件
			#!/usr/bin/env python """Simple HTTP Server With Upload. This module builds on BaseHT ... 
- [Luogu 2656] 采蘑菇
			Description 小胖和ZYR要去ESQMS森林采蘑菇. ESQMS森林间有N个小树丛,M条小径,每条小径都是单向的,连接两个小树丛,上面都有一定数量的蘑菇.小胖和ZYR经过某条小径一次,可以采 ... 
- HTTP 无法注册URL 进程不具有命名空间的访问权限
			写WCF时在 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见 htt ... 
- 在jQuery定义自己的扩展方法函数
			今早复习昨天的练习jQuery的DropDownList联动功能,如果想看回<jQuery实现DropDownList(MVC)>http://www.cnblogs.com/insus/ ... 
- C#根据byte前两位获取图片扩展名
			C#根据byte前两位获取图片扩展名 /// <summary> /// 根据byte前两位获取图片扩展名 /// </summary> /// <param name= ... 
- 面向对象  【类库】【委托】【is as运算符】
			类库(Class Library) .dll文件 类库字面意思就是类的集合,里面有很多被编译后的C#代码,不可阅读,不可修改,只能调用 类库是一个综合性的面向对象的可重用类型集合,这些类型包括:接口. ... 
- 实现泛型数组的冒泡排序算法 C#
			public static class BubbleSortTool { public static void BubbleSort<T>(this T[] array, Ascendin ... 
- MVC的使用
			演示产品源码下载地址:http://www.jinhusns.com 
- MVC在filter中如何获取控制器名称和Action名称
			使用ActionExecutingContext对象可以获取控制器名称.Action名称.参数名称以及参数值.路由和Action返回值不影响结果. 在代码中 [AttributeUsage(Attri ... 
