C & JAVA-基本概念與差異 (整理中)


Posted by pei_______ on 2022-05-04

編譯時期 Compile (C語言為例)

  1. 預處理 processing
    (1) 檢查語法錯誤
    (2) 處理 #include
  2. 編譯 Compiling
    (1) 程式碼 => 組合語言 (簡單指令)
  3. 組譯 Assembling
    (1) 組合語言 => 機器語言 (011001)
  4. 連結 Linking
    (1) 機器語言 => 完整檔案 (stdio.h / cs50.h 的 01011)

C-編譯 & 執行
使用 editor編輯, terminal編譯 & 執行

$ make main.c 
$ clang -o main main.c
=> main.exe  
$ ./main
=> output

JAVA-編譯 & 執行
使用 text編輯, cmd編譯 & 執行

C:\>javac main.java
=> main.class
C:\>java main
=> output

C-主架構

  1. 安裝配件 => #inclde
  2. 主要運作函式 => int(輸出型態) main(void) (函式名稱 & 輸入型態)
#include <stdio.h>
int main(void)
{
    printf("hello, world\n"); 
}

JAVA-主架構

  1. 安裝配件 import
  2. 主要運作類別 => class(類別) Main (檔案名稱 / 大寫開頭)
  3. 主要運作函式 => public(公開的) static(靜態的,若否則指定物件使用)
  4. 主要運作函式 => void(輸出型態) main(String[] args)(函式名稱 & 輸入型態)
import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    System.out.println("hello,world");
    }
}

C-宣告變數

  1. 不同變數型態不可混用
//整數型態
int number = 15; 

//浮點數型態
double d1 = 0.123456789; //倍精度:存15位
float f1 = 0.123456789f; //單精度:存8位

//字元型態 (一個字母) / 字串型態 (2個字母/1中文字以上)
char demo = 'A'; //單引號
char str[] = "pc school"; //雙引號;字串 = 字元陣列

JAVA-宣告變數

  1. 基本資料型態"可以"混用
  2. 基本資料型態儲存在 "Stack"
  3. 參考資料型態 "變數" 儲存在 "Stack"
  4. 參考資料型態 "實際資料" 儲存在 "Heap"
  5. 參考資料型態 "變數" 存放 "實際資料" 的位置資訊
// 基本變數型態 (小寫開頭)

      // byte(number, 1byte)
      // short(number, 2bytes)
      // int(number, 4bytes)
      // long(number, 8bytes)
      // float(a float number, 4bytes)
      // double(a float number, 8bytes)
      // char(a character, 2bytes)
      // boolean(true or false, 1byte)
// 參考資料型態 (大寫開頭)

// 字串 String (唯一不需要new新空間,會放在字串池)
String my_name = "Penny";
// 接受器 Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
// 陣列 Array
int[] array = new int[3];
int[] array = new int{1, 2, 3};
int[] array;

C-輸出函式

// 變數資料

// 整數-十進位
printf("十進位: %d ", v ); //正負格式 %+d
// 整數-八進位
printf("八進位: %o ", v ); //完整格式 %#o
// 整數-十六進位
printf("十六進位: %x ", v ); //完整格式 %#x
// 浮點數-單精度 / 倍精度
printf("浮點數: %lf / %f ", v ); //求到特定位數 %.4lf
// 字元
printf("字元: %c ", v );
// 字串
printf("字串: %s ", v );
// 多項資料:如數字轉撲克牌符號
int heart = 3, ace = 6;
printf("紅心:%c\n黑桃:%c\n" , heart , ace );

// 多項資料:指定寬度並靠右對齊
printf(" %7d , v"); //靠左對齊-7 用0填滿 %07d

JAVA-輸出函式

// 輸出函式

class Main {
  public static void main(String[] args) {
    System.out.printf("hello,world"); //格式化輸出
    System.out.print("hello,world"); //輸出後不換行
    System.out.println("hello,world"); //輸出後換行
    }
}
// 變數資料

String my_name = "Penny";
int age = 26;
System.out.println("My name is "+my_name+".");
System.out.println("I am "+age+"year's old.");
// 基本資料型態 "可以" 混用

double a = 6.7 ; 
double b = 3.2 ;
System.out.println(a * b - 0.44);









Related Posts

Express框架 架構

Express框架 架構

API 是什麼?

API 是什麼?

Intigriti 七月份 XSS 挑戰:突破層層關卡

Intigriti 七月份 XSS 挑戰:突破層層關卡


Comments