Java入門篇(二)——Java語言基礎(上)

来源:https://www.cnblogs.com/adamjwh/archive/2018/01/21/8322434.html
-Advertisement-
Play Games

本篇我們開始進入Java的學習,首先在學習如何編寫Java語言前要先瞭解Java程式的基本結構。 一、Java程式的基本結構 一個Java程式的基本結構大體可以分為包、類、main()主方法、標識符、關鍵字、語句和註釋等,如下: 我們來逐一分析一下每一條語句,過多的概念我就不詳述了,只說最基本的。 ...


  本篇我們開始進入Java的學習,首先在學習如何編寫Java語言前要先瞭解Java程式的基本結構。

一、Java程式的基本結構

  一個Java程式的基本結構大體可以分為包、類、main()主方法、標識符、關鍵字、語句和註釋等,如下:

 1 package hello;                                                // 定義包
 2 
 3 public class Structure {                                    // 創建類
 4 
 5     static int num = 1;                                // 定義類的成員變數
 6     
 7     public static void main(String[] args) {                // 定義主方法
 8         
 9         String str = "http://www.cnblogs.com/adamjwh/";        // 定義局部變數
10         
11         System.out.println(num);                            // 輸出成員變數的值
12         
13         System.out.println(str);                            // 輸出局部變數的值
14         
15     }
16 
17 }

  我們來逐一分析一下每一條語句,過多的概念我就不詳述了,只說最基本的。

  第一條語句“package hello;”定義了Java程式中類所在的包是hello,hello是一個標識符,由程式員自己定義,package是關鍵字。註意:標識符和關鍵字區分大小寫。

  第二條語句“public class Structure”用於創建一個名為Structure的類,類名由程式員自己定義,其中public及class是關鍵字,關於public和static的用法會在後續篇章中提到。

  第三條語句“static int num = 1;”定義了類的成員變數,static和int都是關鍵字,而num是一個標識符,由程式員自己定義。

  第四條語句“public static void main(String[] args)”是類的主方法,Java程式從這裡開始執行,除了可以將“String[] args”改為“String args[]”外,不可改變本條語句的任何部分。

  第五條語句“String str = "http://www.cnblogs.com/adamjwh”是在主方法中定義了一個局部變數,String是一個類,用於創建字元串對象(說簡單點就是說,如果你想創建一條字元串,就使用String類),str是局部變數的名稱,為程式員自己定義的一個標識符,而後面引號中的網址是局部變數str的值,“=”為賦值運算符。

  第六條語句“System.out.println(num);”是輸出語句,這是輸出語句的固定寫法,註意區分大小寫,輸出換行為println,不換行為print。

  第七條語句同樣為輸出語句,執行將輸出str的值,即http://www.cnblogs.com/adamjwh。

二、標識符和關鍵字

  那麼說了這麼多是不是覺得好複雜啊,標識符、關鍵字都是什麼。其實標識符可以簡單理解為一個名字,用來標識類名、變數名、方法名、數組名、文件名的有效字元序列。

  例如,定義一個變數i並賦值為100,那麼我們可以寫出如下代碼: int i = 100; 

  這就是一個典型的賦值語句,其中int是定義一個整型數,i就是標識符,由程式員自己起名,但有一定的規則,簡單點來說就是由字母、數字、下劃線和美元符號組成,第一個字元不能為數字,並且區分大小寫,不能為關鍵字或保留字。

  我們可以舉幾個例子看看,合法標識符如name、user、_u8080、tc_bvt等等,非法標識符如5work、7fix等等。

  上面提到的關鍵字和保留字,是Java語言中已經被賦予特定意義的一組單詞,不可作為標識符使用,比如上面代碼中的int就是關鍵字,至於java的關鍵字有哪些我就不過多的描述了,畢竟網上有很多很詳細的介紹,我們還是主要從代碼入手。

 三、基本數據類型

  瞭解了上面的Java程式的基本結構後是不是對Java有一定的感覺了呢,那麼編寫程式肯定要用到許許多多數據,那Java中的數據又是如何分類及編寫的呢?

  在Java中有8種數據類型,其中6種是數值類型,另外兩種分別是字元類型和布爾類型,如下:

 1 public class Type {
 2     
 3     /* 整數類型 */
 4     byte myByte = 45;                // byte型變數,占一個位元組,取值範圍-128~127
 5     short myShort = 100;            // short型變數,也即短整型,占兩個位元組,取值範圍-32768~32767
 6     int myInt = 450;                // int型變數,也即整型,占四個位元組,取值範圍-2147483648~2147483647
 7     long myLong = 45261636L;        // long型變數,也即長整型,占八個位元組,取值範圍-9223372036854775808~9223372036854775807
 8     
 9     /* 浮點類型 */
10     float myFloat = 15.621F;        // 單精度浮點型,占四個位元組,結尾必須加'F'或'f',如果不加自動定義為double型變數,取值範圍1.4E-45~3.4028235E-38
11     double myDouble = 15.621D;        // 雙精度浮點型,占八個位元組,結尾可以加'D'或'd',也可不加,取值範圍4.9E-324~1.7976931348623157E-308
12     
13     /* 字元類型 */ 
14     char myChar = 'a';                // 字元類型變數,用於存儲單個字元,占兩個位元組,需用單引號括起來
15     
16     /* 布爾類型 */
17     boolean myBoolean = true;        // 布爾類型又稱邏輯類型,只有true和false兩個值,分別代表“真”和“假”
18 }

  當我們要定義一個變數的時候,先判斷變數的數據類型,再從上方8種類型中選擇合適的類型使用即可,定義方法就如上方代碼,以“[數據類型] [變數名] = [值]”的形式即可,其中變數名需自起名,滿足上面提到的標識符的幾個條件。

  在字元類型中還有一種特殊的字元,以反斜線“\”開頭,後跟一個或多個字元,具有特定的含義,叫做轉義字元。

轉義字元 含義
\ddd 1~3位八進位數據所表示的字元,如\456
\dxxxx 4位十六進位所表示的字元,如\0051
\' 單引號字元
\\ 反斜杠字元
\t 垂直製表符,將游標移到下一個製表符的位置
\r 回車
\n 換行
\b 退格
\f 換頁

 

 

 

 

 

 

 

 

  

  轉義字元一般多用於輸出,比如“\n”回車換行,“\t”移到下一製表位,如果想要輸出單引號、雙引號、下劃線等字元時,也需要用轉義字元進行輸出。

四、變數與常量

  剛剛我們提到了變數,接下來就說一下什麼是變數和常量。在程式執行過程中,其值不能改變的稱為常量,其值能改變的稱為變數。變數與常量的聲明都必須使用合法的標識符,所有變數與常量只有在聲明之後才能使用。下麵舉一個聲明變數的例子:

int age; // 聲明int型變數 
char c = 'J' // 聲明char型變數並賦值

  既然叫變數那肯定是能改變的,現在我們對變數進行一下改變試試:

 1 public class Variable {
 2 
 3     public static void main(String[] args) {
 4         int num = 10;                                // 定義一個變數num,並賦給初值10
 5         System.out.println("num的初值為:"+num);        // 輸出當前變數num的值為10
 6         
 7         num = 100;                                    // 將100賦給num
 8         System.out.println("num現在的值為:"+num);        // 輸出現在變數num的值為100
 9     }
10 
11 }

  上方是一段測試代碼,我們首先定義一個變數,起名為num,然後對它賦一個初值10,再對這個變數賦值為100,看兩次值的變化,運行結果如下所示:

  

  由此可以看出變數是在運行過程中其值可以改變。

  而常量在整個程式中只能被賦值一次,需通過final關鍵字進行限定,如 final double PI = 3.1415926; ,為定義一個常量,名為PI(圓周率),我們如果單獨定義一個變數是“double PI = 3.1415926;”,現在定義一個常量就是在double前加一個final關鍵字進行限定即可。

 

  看到這裡,是不是對Java的聲明及定義有一些瞭解了呢?也許在之前大家也都見到了有些變數前有static這個關鍵字,它有什麼用呢?這裡就要說的變數的有效範圍了。

  變數的有效範圍是指程式代碼能夠訪問該變數的區域,若超出變數所在區域訪問變數則編譯時會出現錯誤。可分為“成員變數”和“局部變數”。

  在類體中定義的變數被稱為成員變數,成員變數在整個類中都有效,分為靜態變數和實例變數兩種。

class var {
    int x = 45;                 // 定義實例變數
    static int y = 90;        // 定義靜態變數
}

  其中x是實例變數,y是靜態變數。如果成員變數的類型前面加上static,就被稱為靜態變數,靜態變數的有效範圍可以跨類,甚至可達到整個應用程式之內,也可用“類名.靜態變數”的方式在其它類中使用(具體會在今後的篇幅中出現,想瞭解的可先行查閱資料)。

  而在類的方法體中定義的變數(即“{”與“}”之間的聲明變數)稱之為局部變數。只在當前代碼塊中有效,簡單點來說就是只在其所定義的大括弧中有效。下麵舉一個例子:

 1 public class Val {
 2 
 3     static int times = 3;                                    // 定義成員變數times
 4     public static void main(String[] args) {
 5         int times = 4;                                        // 定義局部變數times
 6         
 7         System.out.println("times的值為:" + times);            // 將times輸出
 8         System.out.println("靜態變數times的值為:" + Val.times);        // 輸出靜態變數
 9     }
10 
11 }

  輸出結果為:

  

  從這段代碼可以看出,首先在main方法外定義了一個成員變數times,並且是一個靜態變數,而在main方法內又定義了一個局部變數times。這裡有人就會問了,變數名不是不能相同嗎?註意,這裡第一個times是成員變數,作用範圍是針對於整個類而言,而第二個times是局部變數,只在main方法內有效,所以兩個重名並不衝突。但如果我們直接輸出times,如第一個輸出,輸出結果為4,是局部變數起了作用,因為當局部變數與成員變數名字相同時,此時成員變數將被隱藏,即這個成員變數在此方法中暫時失效。如果我們想調用成員變數,需要使用“類名.靜態變數”調用,如第二個輸出,類名為Val,靜態變數名為times,用“Val.times”即可調用靜態變數的值為3。

五、代碼註釋

  註釋可以提高程式的可讀性,註釋包含的文字不會對程式產生任何影響,在Java中,代碼註釋主要有以下幾種:

  1. 單行註釋  

  “//”為單行註釋標記,從“//”開始到換行為止的所有內容均被註釋而被編譯器忽略。

// 這是一條單行註釋

  2. 多行註釋

  “/* */”為多行註釋標記,符號“/*”與“*/”之間的所有內容均為註釋內容,可以換行。

/*
    註釋內容1
    註釋內容2
    ......
*/

  在多行註釋中可以嵌套單行註釋,比如下麵的用法是正確的:

/*
    名稱:博客園    // 時間:2018-1-20
*/

  但在多行註釋中不能嵌套多行註釋。

  3. 文檔註釋

  “/** */”為文檔註釋標記。符號“/**”與“*/”之間的內容均為文檔註釋內容。當文檔註釋出現在任何聲明之前時,會被Javadoc文檔工具讀取作為Javadoc文檔內容。格式與多行註釋相同。

1 /**
2     * name: Hello World
3     * time: 2018-1-20
4     * author: Adam
5 **/

 

  下一篇將繼續介紹Java語言基礎中的運算符及類型轉換。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /** * Created by admin on 2017/8/19. */ // import Vue from 'vue' // import axios from './HTTP.js' // Vue.use(axios) import * as DB from './DBDATA.js' ... ...
  • 前臺: 支持四套模版, 可以在後臺切換 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版引擎生成html 2.因為是生成的html,所以訪問速度快,輕便,對伺服器負擔小 3.網站前端採用主流的響應式佈局,同一頁面同時支持PC、平板、手機(三 ...
  • 因為是開發階段,我需要在本地調試,而微信開發需要配置功能變數名稱,這樣natapp.cn就有了用武之地,應該說natapp就是為此而生的。 natapp.cn是什麼 這是一個內網映射的網站,支持微信公眾號、小程式本地開發調試,具體詳情請到官網去瞭解:https://natapp.cn/ 雖然官網已經有配置教 ...
  • C/S又稱Client/Server或客戶/伺服器模式。伺服器通常採用高性能的PC、工作站或小型機,並採用大型資料庫系統,如Oracle、Sybase、Informix或 SQL Server。客戶端需要安裝專用的客戶端軟體。 B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(B ...
  • Django中模型(二) 三、定義模型 1、模型、屬性、表、欄位間的關係: 一個模型類在資料庫中對應一張表;在模型類中定義的屬性,對應該模型對照表中的欄位。 2、定義屬性 A、概述 ·django根據屬性的類型確定以下信息 ·當前選擇的資料庫支持欄位的類型 ·渲染管理表單時使用的預設html控制項 · ...
  • B站是目前本人看到的最好的免費學習Python的網站 黑馬程式員- https://space.bilibili.com/37974444?spm_id_from=333.338.viewbox_report.6#/ B站上找老男孩Linux 教育視頻 關註黑馬程式員官方微信可下載近70G的Pyth ...
  • #for 和 while #for用來迭代處理,什麼叫迭代?你就當沒看到這個詞,for是把一堆玩意做一個一個加工用的,比如吃一袋花生,得一個一個剝吧,就是這意思 a = 'abcde' #每個字母當做一個花生,a是一袋子 for i in a: #從袋子裡面一個一個拿花生,拿出的每一個花生都起名叫小 ...
  • 1.會話技術簡介 http協議是無狀態的,因此對於服務端來說,當它接收到客戶端的http請求時,無法識別這個請求來源於哪個客戶端。無狀態的協議有優點也有缺點,但對於需要識別客戶端甚至是需要記住客戶端的業務來說,應當要讓http協議"有狀態"。 需要記住客戶端的業務種類非常多。例如登陸系統,在一個頁面 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...