JAVA快速入門-基礎知識
Tips:
Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計 。
Java具有簡單性、面向物件、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點 。Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等
建立在良好的C語言的基礎上,便可以快速學習掌握好其它的語言,下面以一些程式例子來概述C語言和JAVA語言存在的一些差別,以及JAVA的一些注意事項和基礎知識,後續章節將會講述JAVA語言的各個知識點,這章主要以對JAVA有初步認識為出發點進行講解。
首先介紹一個我使用的編譯環境:
開發環境:ubuntu_16.04
開發工具:openjdk-8-jdk(用於編譯JAVA程式)、gcc(用於編譯C語言程式)
JAVA環境的安裝也非常方便,在 ubuntu 的命令列下執行以下幾個步驟即可:
1.sudo apt-get update
2.sudo apt-get install openjdk-8-jdk
3.sudo apt-get install openjdk-8-jre
所有程式語言的學習都是從 Hello World 開始,它是開啟程式設計的大門的鑰匙,也是程式設計學習的必經之路,當然我們這裡也以 Hello World 程式作為起點開始講解,這樣一個簡單的列印程式可以測試我們一整個開發環境是否完全的搭建起來了,能否順序的編譯通過並執行。廢話不多說,下面我們看看 C 語言和 JAVA 語言的 Hello World 程式存在什麼樣的差異。程式如下
C:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello, world!\n");
return 0;
}
JAVA:
public class Hello {/* 類的首字母要大寫,檔名與類名保持一致 */
public static void main(String args[]) {
System.out.println("Hello, world!");
}
}
兩段程式碼的差異其實不是特別大,C語言跟以前一樣需要呼叫 stdio 的庫,而 JAVA 不需要這個庫了,而是聲明瞭一個類,JAVA 裡面叫 System 類,使用 System 類裡面 println 來列印,函式的命名 JAVA 裡面需要以 類 作為開頭,定義一個名為 Hello 的類,裡面實現一個跟 C 一樣的mian函式,main函式的形參變為了一個 String 類的陣列,而這段程式碼直觀上看並不會看不懂它的含義,因為一樣有main,一樣有列印,只是細節上存在一些差異,後面再詳細描述。
上面程式的編譯指令分別如下:
C程式:
- gcc -o Hello Hello.c
- ./Hello
JAVA程式:
- javac Hello.java(這裡會生成一個Hello.java的類)
- java Hello(java實則為一個虛擬機器,在 java 虛擬機器裡面執行這個程式)
程式碼以循循漸進的形式來新增內容進行講解,下面看一下變數的定義以及迴圈。
C:
int i=0;
for(i=0; i<3; i++)
{
printf("Hello World\n");
}
JAVA:
int i=0;
for(i=0; i<3; i++)
{
System.out.println("Hello World!");
}
這個部分幾乎是一樣的。緊接著看一下面的程式,主要描述定義變數的差異。
C:
/* 一般宣告的變數都存在放棧裡裡面 */
int a = 3;
float f = 3.14;
/* C語言使用malloc分配記憶體,這段分配的記憶體在堆裡面 */
int *p = malloc(10*sizeof(int));
/* 陣列的定義 */
char str[100];
/* 字串定義,內容也是存放在棧裡面 */
char str2[] = "abc";
/* 良好的習慣不使用的時候free掉 */
free(p);
JAVA:
/* a這個變數毫無疑問也是在棧裡面 */
int a = 3;
/* 下面 3.14 為 double 型別, java 裡面為了保證精度,會自動轉換為 double */
/* 自動轉換:能夠自動轉換的前提是資料不丟失,
這裡轉換為 float 可能導致 double 型別的資料丟失,所以不會自動轉換 */
/* 這裡可以使用強制轉換 */
float f = (float)3.14;
/* 或如下定義,末尾加個 f ,表明為 float 型 */
float f2 = 3.14f;
short s = 1;
/* 寫成 s=s+1 會出錯,因為對於 byte、short 的運算,為了保證精度,會自動轉換為 int 型別 */
s = (short)(s + 1);/* 所以需要加強制型別轉換 */
/* 除了基本的資料型別以外,都是引用資料型別 */
/* JAVA裡面沒有指標,也不存在 malloc 這種形式,取而代之的是 new */
int p[] = new int[10];
/* 這裡跟 C 的差別就是 C 這樣定義的陣列都放在棧裡,而 java 裡 p2 在棧裡面,陣列值在堆 */
/* 所以JAVA 定義的陣列的空間永遠是放在堆裡面的,因為它屬於"引用(即new)"資料型別 */
int p2[] = {1,2,4};
/* 列印上 C 原來使用逗號分隔, JAVA 使用的是‘+’號,如下 */
System.out.println("p2[1]="+p2[1] + " p2[2]="+p2[2]);
/* java 裡面字串的定義是用個 String 類變數 */
String str = "abc";
/* 陣列的定義方式 */
char str2[] = new char[100];
/* 這裡定義一個數組變數指向上面這個陣列指向的堆,它們指向同一個堆空間 */
/* 由於指向同一個堆空間,所以想釋放這個堆空間的話必須這兩個變數都賦值為null才行 */
char str3[] = str2;
/* java裡面沒有free,變為null了,它可以使堆空間沒有指向,
這時垃圾回收機制看到沒人指向這個堆空間,就會自動釋放這些堆空間 */
p = null;
p2 = null;
str = null;
str2 = null;
str3 = null;
上面部分的差異處還是比較多比較明顯的,只是粗略的過一下,留個概念,接下來是函式,函式是整個程式的功能主體,在 JAVA 裡面它有另一個名字,叫“方法”,下面具體看程式碼。
public class Function{
public static void main(String args[]){
/* 過載後會根據實參的不同調用不同的函式 */
System.out.println(add(1,2));
System.out.println(add(1,2,3));
System.out.println(add(1.5f,2.5f));
}
public static int add(int x, int y){
return x + y;
}
/* 函式過載:函式過載的意思就是函式名一樣,但是可以根據形參的不同來自動呼叫對應形參的函式 */
/* 如果只修改返回值型別是沒法過載的,因為編譯器不知道你是想得到得到什麼返回型別 */
public static int add(int x, int y, int z){
return x + y + z;
}
public static float add(float x, float y){
return x + y;
}
}
下面再簡述下 JAVA 裡面怎麼實現類似 C 裡面的指標作為函式形參直接修改地址裡面的值的實現方法,程式碼如下:
public class Param{
/* main的引數是個字元陣列 */
public static void main(String args[]){
int x = 1;
/* 這裡跟C語言一樣,形參為普通變數無法改變x的值 */
fun(x);
System.out.println(x);
int p[] = new int[1];
p[0] = 123;
/* java使用+號做分隔,跟C不一樣 */
System.out.println("Before fun2: "+p[0]);
/* 因為陣列是引用型別,所以傳遞進去的是指標 */
fun2(p);
System.out.println("After fun2: "+p[0]);
}
public static void fun(int x){
x = 100;
}
public static void fun2(int[] p){//也可以寫成 int p[]
p[0] = 200;
}
}
上面的執行結果如下:
接下來以一張圖作為總結:
我找了另一張圖,描述了 JAVA 的資料型別分類
這裡需要注意的是 C 裡面 char 佔一位元組,只能用來表示 ASCII 碼,而 JAVA 的 char 使用的 unicode 編碼,佔兩位元組,可以表示英文也可以表示漢字等。
相關推薦
JAVA快速入門-基礎知識
Tips: Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師
Java快速入門-01-基礎篇
浮點 鏈接 快速學習 頭部 常見 goto 受保護 cab 例如 Java快速入門-01-基礎篇 如果基礎不好或者想學的很細,請參看:菜鳥教程-JAVA 本筆記適合快速學習,文章後面也會包含一些常見面試問題,記住快捷鍵操作,一些內容我就不轉載了,直接附上鏈接,嘻嘻 開發
零基礎java入門小白如何自學java新手入門必備知識!
一、Java 是什麼? 1.Java出現的背景: 1991 年Sun公司的James Gosling等人開始開發名稱為 Oak 的語言。希望用於控制嵌入在有線電視交換盒、PDA等的微處理器,但卻沒有取得成功,後來由於網際網路的發展,而由於Oak語言本身的具有安全、可移植,又
Java 入門基礎知識,簡介
Java軟體工程師是指運用Java這個開發工具去完成軟體產品的軟體程式設計、開發、測試、維護升級等工作的人員。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::: Java 入門基礎知識 :::::::::::::::::::::::::
linux入門基礎知識及簡單命令介紹
linux基礎linux入門基礎知識介紹1、計算機硬件組成介紹計算機主要由cpu(運算器、控制器),內存,I/O,外部存儲等構成。 cpu主要是用來對二進制數據進行運算操作,它從內存中取出數據,然後進行相應的運算操作。不能從硬盤中直接取數據。 內存從外部存儲中取出數據供cpu運存。內存的最小單位是
入門基礎知識
承載 clas 同比 技術分享 med 例如 流程 _for 描述 大數據的流程:數據收集、數據儲存、數據建模、數據分析、數據變現。 大量看似不相關的事卻能夠通過觀察分析告訴人們背後的因果,並預測未來趨勢。 數據:承載了信息的東西才是數據 信息:把我們不清楚的事情闡明的描
Java 的一些基礎知識
port ack 行程 serverlet 面向 文本文件 col apple 初學者 對於Java的初學者,我們首先要了解什麽是Jave語言?Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難懂的多繼承,指針等概念。Java語言作為靜態面向
Linux入門基礎知識
根文件系統 調度 開頭 處理 系統時鐘 halt 命名法 存儲 body 1、計算機的組成及其功能。 計算機系統主要分為硬件系統和軟件系統兩部分。 (1)硬件系統由五部分組成,其中包括: 控制器:調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問;
矩陣快速冪基礎知識
快速冪 CI images 別人 ron 技術分享 blog 是否 img 一、 先介紹以下矩陣的基礎知識 矩陣:有 n 行 m 列組成一個 n*m 的矩陣 1. 矩陣的加減運算滿足的條件:兩個矩陣的行、列 必須相同 2. 矩陣的乘運算 滿足的條件: A矩陣的列數為 B矩
長沙java開發培訓班,Java快速入門
線程 oci 輸入輸出流 思想 調用 長沙 處理 log4j java開發培訓 Javaweb是用Java技術來解決相關web互聯網領域的技術總和。說的簡單的就是寫網站的一種語言。一般分為前端和後端兩種方向,前端所做的東西就像幕前表演的演員,所做的就是讓網頁看起來順眼,用起
Java基礎之——Java概述與基礎知識
開頭 自動類型轉換 中文 存儲 方向 優先 思路 類型 j2me 1、何為編程? 編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。 為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告
Python入門基礎知識實例,值得收藏!
介紹 作用 方法 bcd python語句 學習 操作數 主程 簡單 7月的編程語言指數榜已經發布,Python 在今年5月首次超越 Java 拿下榜首位置後,仍保持上漲趨勢,正逐漸與 Java 拉開差距。(圖為與去年 7 月數據對比) 上周為大家簡單介紹了如何安裝Pyth
Hanlp中文自然語言處理入門基礎知識
watermark holo bottom ava 領域 elastic 最短 oid 變化 自然語言處理定義:自然語言處理是一門計算機科學、人工智能以及語言學的交叉學科。雖然語言只是人工智能的一部分(人工智能還包括計算機視覺等),但它是非常獨特的一部分。這個星球上有許多生
React Native 入門基礎知識總結
入門 部署 社區 另一個 變化 started EDA set rop 中秋在家閑得無事,想著做點啥,後來想想,為啥不學學 react native。在學習 React Native 時, 需要對前端(HTML,CSS,JavaScript)知識有所了解。對於JS,可以看看
Linux入門基礎知識(1)
win 字符設備 命令的使用 ESS pow 體驗 存放位置 編程 echo -e 描述計算機的組成及其功能計算機系統由硬件系統與軟件系統兩大部分組成。1.1 計算機硬件系統五大部分組成運算器、控制器、存儲器、輸入設備、輸出設備。1.2 計算機硬件系統五大部分功能解釋及作
Java快速入門-04-Java.util包簡單總結
安全 一個 mutex int 順序表 rem 額外 指針 鏈表實現 學Java的程序員,lang包和util包最好是要過一遍的。 建議大家都序下載一個離線版開發文檔,查閱非常方便,我給大家提供一個中文版 jdk1.8 離線文檔,查看:JAVA - JDK 1.8 AP
java 測試開發基礎知識(類加載,JVM等)
常量表達式 對數 前端 .cn 都是 新的 ron 技術分享 區域 寫在開頭: 面試的時候別人很可能會問你的java原理,.class load 原理, jvm機制,這些都是Java的底層知識,特整理如下: 1. 首先,編寫一個java程序,大家會用ide編寫一個例
Java 快速入門-06-JDK 目錄檔案說明
Java 快速入門-06-JDK 目錄檔案說明 JDK:開發環境,搞技術的人或者應用伺服器使用 JRE:執行環境,如瀏覽器外掛或者Swing介面的客戶端等終端使用者需要使用 JDK自含一個JRE,並依賴於自含的JRE,如用JDK\bin\java啟動程式 JDK 預設是在 C:\Program Fil
Java.util庫 + Java.lang庫基礎知識
文章目錄 Arrays類 Character類 Collection介面 Comparator Integer 類 Queue 類 Stack 類 StringBuilder類
CodeMix入門基礎知識
CodeMix入門CodeMix是一個Eclipse外掛,可以直接從Eclipse訪問VS Code和為Code OSS構建的附加擴充套件的各種技術。如果您是一位經驗豐富的Eclipse開發人員,CodeMix有一些新的UI元素和可用性模型需要注意。如果您有使用VS Code開發的經驗,您會發現這些功能很熟悉