zoukankan      html  css  js  c++  java
  • C Programming vs. Java Programming

    ThingCJava
    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 ");
       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 ''-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 0null, 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.cstack.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)
  • 相关阅读:
    Unity 移动端的复制这么写
    Unity如何管理住Android 6.0 调皮的权限
    谷歌商店Apk下载器
    Unity编辑器下重启
    git pull error
    如何简单的实现新手引导之UGUI篇
    linux系统安装python3.5
    Grafana设置mysql为数据源
    hyper -v 虚拟机(win_server)忘记密码重置
    zabbix报错:the information displayed may not be current
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/7116198.html
Copyright © 2011-2022 走看看