主頁 > 軟體設計 > JAVA語法基礎 識別符號 關鍵字 注釋 變數 資料型別與型別轉換

JAVA語法基礎 識別符號 關鍵字 注釋 變數 資料型別與型別轉換

2021-04-02 11:29:36 軟體設計

1 JAVA語法基礎

1.1 識別符號

識別符號可以簡單的理解成一個名字,
在Java中,我們需要標識代碼的很多元素,包括類名、方法、欄位、變數、包名等等,我們選擇的那個名稱就稱為識別符號,一個正確的識別符號需要遵循以下規則:

1. 識別符號可以由字母、數字、下劃線(_)、美元符($)組成,但不能包含 @、%、空格等其它特殊字符
2. 不能以數字開頭,如:123name 就是不合法
3. 識別符號嚴格區分大小寫,如: tmooc 和 tMooc 是兩個不同的識別符號
4. 識別符號的命名最好能反映出其作用,做到見名知意,
5. 識別符號不能是Java的關鍵字

1.2 關鍵字

在Java中,有一些單詞被賦予了特定的意義,一共有53個關鍵字,
這53個單詞都是全小寫,其中有兩個保留字:const和goto,
注意,關鍵字不能被用作識別符號!!
關鍵字速查表

1.3 注釋

幾乎所有編程語言都允許程式員在代碼中輸入注釋,因為編譯器會忽略注釋,所以注釋并不會影響程式的運行結果,
注釋的真正作用是: 它可以向任何閱讀代碼的人描述或者解釋程式的實作思路,如何使用以及其它任何相關資訊, 提高代碼的可讀性,方便后期的維護與復用,Java的注釋有3種:

1. 單行注釋: 注釋單行內容.

格式: 每行都以”//”開頭.
快捷方式: Ctrl+/ 添加注釋,同樣的快捷鍵,再按一次取消注釋

2. 多行注釋:注釋多行內容,雖然叫多行注釋,也可注釋單行內容.

格式: 以”/”開頭, 以”/”結束.
快捷方式: Ctrl+shift+/ 添加注釋, Ctrl+shift+\ 取消注釋, 也可以輸入”/*”之后按回車添加注釋

3. 檔案注釋: 一般用來注釋類和方法,通過注釋內容來記錄類或者方法的資訊.

格式: 以”/”開頭, 以”*/”結尾.
快捷方式: 輸入“/
” 之后按回車添加注釋

1.4 變數

在JAVA中,我們需要記錄一些資料,但這些資料的值是不固定的,總在變,我們可以把這些資料理解為變數,
我們通過三個元素來描述變數:變數型別 變數名以及變數值,
int age = 18; //宣告int型別的變數并賦值
String tel ; //宣告String型別的變數

注意:

  1. 變數名必須是一個有效的識別符號
  2. 變數名不可以使用java關鍵字
  3. 變數名不能重復

1.5 常量

在程式運行程序中,值一直不會改變的量成為常量,(后續會進一步學習,略…)

2 資料型別

2.1 基本型別介紹(八種)

變數就是申請記憶體來存盤值,也就是說,當創建變數的時候,需要在記憶體中申請空間,
java是一個強型別的語言,會把日常見到的資料,分成好多型別.
記憶體管理系統根據變數型別來分配存盤空間,分配的空間只能用來儲存該型別資料,
常用的轉換關系:
位 bit,來自英文bit,音譯為“位元”,表示二進制位,
1 Byte = 8 Bits (1位元組 = 8位)
1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB八大基本型別速查表

2.2 練習: 輸入個人資訊

創建包: cn.tedu.basic
創建類: TestInfo.java
需求: 在控制臺列印: java架構師今年20歲,月薪100000.99,感慨java是世界上最好的語言

package cn.tedu.basic;
/**
 * 	本類用于測驗在控制臺列印個人資訊
 * 	需求: 在控制臺列印: 
 *  java架構師XXX今年X歲,月薪XXX,感慨java是世界上最好的語言
 *  @author XYCheng
 */
public class TestInfo {
	//Alt+/ 提示補全代碼  Ctrl+s保存代碼  Ctrl+F11執行代碼
	public static void main(String[] args) {
		/**1.在我們的程式當中{} [] () "" 都是成對出現的,而且都是英文符號*/
		/**2. 一串資料,在java里是字串型別—String  
		 * 字串型別的資料,要被一對雙引號 引起來*/
		System.out.println("歡迎來到Java世界,可愛的程式猿們");
		
		/**3.定義變數的規則:資料型別 資料名 資料值 */
		String name="陳子樞";
		int age = 18;
		double salary = 100000.99;
		
		/**4.把靜態資料與動態資料分開,通過+實作動態資料的動態拼接*/
		System.out.println("我叫"+name);
		/**5.如果是在中間拼接用""+變數+""的格式*/
		System.out.println("java架構師"+name+",今年"+age+"歲,月薪"+salary+",感慨java是世界上最好的語言");
	}
}

2.3 練習:查看基本型別的最大值與最小值

創建包: cn.tedu.basic
創建類: TestTypeScope.java

package cn.tedu.basic;
/**
 * 本類用于查看基本型別的最大值與最小值
 * Ctrl+Alt+向下鍵 快速向下復制一行
 */
public class TestTypeScope {
	//必須要寫入口函式,否則代碼無法執行,因為沒有入口
	public static void main(String[] args) {//入口函式
		//進行整形型別的測驗 byte1 short2 int4 long8
		//1.定義變數,用變數分別保存最大值與最小值
		//定義變數 資料型別 變數名 變數值 Ctrl+Alt+向下鍵 快速向下復制一行 換位置:Alt+方向鍵
		/**JAVA提供了對應的基本型別的工具箱*/
		byte byteMax = Byte.MAX_VALUE;
		byte byteMin = Byte.MIN_VALUE;
		System.out.println("byte型別的最大值是:"+byteMax);//127
		System.out.println("byte型別的最小值是:"+byteMin);//-128
	
		short shortMax = Short.MAX_VALUE;
		short shortMin = Short.MIN_VALUE;
		System.out.println("short型別的最大值是:"+shortMax);//32767
		System.out.println("short型別的最小值是:"+shortMin);//-32768
		
		int intMax = Integer.MAX_VALUE;
		int intMin = Integer.MIN_VALUE;
		System.out.println("int型別的最大值是:"+intMax);//2147483647
		System.out.println("int型別的最小值是:"+intMin);//-2147483648
		
		long longMax = Long.MAX_VALUE;
		long longMin = Long.MIN_VALUE;
		System.out.println("long型別的最大值是:"+longMax);//9223372036854775807
		System.out.println("long型別的最小值是:"+longMin);//-9223372036854775808
		
		//浮點型測驗 float double
		//1.4E-45(1.4乘以10的負45次方)
		float floatMax = Float.MAX_VALUE;
		float floatMin = Float.MIN_VALUE;
		System.out.println("float型別的最大值是:"+floatMax);//3.4028235E38
		System.out.println("float型別的最小值是:"+floatMin);//1.4E-45
		
		double doubleMax = Double.MAX_VALUE;
		double doubleMin = Double.MIN_VALUE;
		System.out.println("double型別的最大值是:"+doubleMax);//1.7976931348623157E308
		System.out.println("double型別的最小值是:"+doubleMin);//4.9E-324
		
		//布爾型boolean true真 false假
		boolean b1 = true;
		boolean b2 = false;
		
		//字符型char
		char c1 = 'a';//可以保存一個字符
		char c2 = 97;//可以保存一個數字
		char c3 = '中';//可以保存一個漢字
		//char型別可以存數字,但是在列印時,會去查ASCII碼表,把數字對應的字符拿出來使用
		//ASCII碼表值規定了陣列0-127對應的字符,128-65535默認按照字符?來處理
		System.out.println(c1);//a
		System.out.println(c2);//a
		System.out.println(c3);//中
	}
}

2.4 練習:求圓形的面積

需求:求出指定半徑圓的面積
公式:圓的面積:πrr
創建包: cn.tedu.basic
創建類: TestCircleArea.java

package cn.tedu.basic;

import java.util.Scanner;

/**本類用于求圓的面積*/
public class TestCircleArea {
	public static void main(String[] args) {
		//公式:π*r*r
		//1.提示用戶輸入要求圓的半徑
		System.out.println("請您輸入要求圓的半徑值:");
		//2.接收用戶輸入的半徑值
		double r = new Scanner(System.in).nextDouble();
		//3.根據半徑進行計算圓的面積
		double circleArea = 3.14*r*r;
		//4.把圓的面積列印到控制臺
		System.out.println("當半徑為"+r+"時,圓的面積為:"+circleArea);
	}
}

2.5 練習:變數交換

變數值交換

需求: 接收用戶輸入的兩個值:假設a=1,b=2,并將這兩個變數的值進行互換

創建包: cn.tedu.basic
創建類: TestValueExchage.java

package cn.tedu.basic;

import java.util.Scanner;

/**本類用于交換兩個變數的值*/
public class TestValueExchage {
	public static void main(String[] args) {
		//1.提示并接收用于輸入的兩個值
		System.out.println("請輸入a的值:");
		int a = new Scanner(System.in).nextInt();
		System.out.println("請輸入b的值:");
		int b = new Scanner(System.in).nextInt();
		System.out.println("a的值:"+a);
		System.out.println("b的值:"+b);
		
		//2.交換a b 兩個變數的值
		int t ;//定義用來值交換的第三方變數t
		t = a;//把a的值交給t來保存
		a = b;//把b的值交給a來保存
		b = t;//把t的值嫁給b來保存
		//3.把交換后的兩個值列印在控制臺
		System.out.println("交換后,a的值為:"+a);
		System.out.println("交換后,b的值為:"+b);
		
	}
}

2.6 參考型別

參考型別是一個物件型別,值是什么呢?它的值是指向記憶體空間的參考,就是地址,所指向的記憶體中保存著變數所表示的一個值或一組值,如:類,介面,陣列,后面講,,,
(后續會進一步學習,略…)

3 基本型別的字面值(5條)

3.1 整數字面值是int型別

int x = 99999;//對,右面資料的字面值是int型別
int x = 99999999999;//錯,右面資料的字面值是int型別,但是已經超出int的取值范圍,

3.2 byte,short,char三種比int小的整數可以用范圍內的值直接賦值

byte b1=127;//對,
byte b2=128;//錯,超出byte范圍

3.3 浮點數的字面值是double型別

double r =3.14;//對
float r =3.14;//錯,右面的資料字面值是double,float是4位元組存不下double型別的資料

3.4 字面值后綴L D F

long x =99999999999L;//字面值是int型別,需轉成long型別的資料,加字面值后綴L即可
float b = 3.0F;//3.0字面值是double型別,加后綴F會變成float型別
double d = 3D;//3字面值是int型別,加后綴D,會變成double型別

3.5 進制前綴

0b - 標識這是2進制 ,如:0b0101
0 - 標識這是8進制, 8進制是三位,如: 023
0x - 標識這是16進制,如: 0x0001
\u -標識這是char型別,屬于16進制

4 基本型別的型別轉換

箭頭開始的地方是小型別,箭頭指向的地方是大型別
我們此處所指的"大"和"小",指的是對應型別的取值范圍,不是位元組數哦
基本型別的型別轉換

4.1 小到大(隱式轉換)

byte m = 120;
int n = m;//小轉大,右面的m是小型別,給左面的n大型別賦值,可以直接使用
float f = 3.2f; double d = f; -->可以執行

4.2 大到小(顯示轉換)

容量大的型別轉換為容量小的型別時必須使用強制型別轉換,

int x = 999;
byte y =(byte)x;//大轉小,右面x給左面的y小型別賦值,不可以,需要強制型別轉換
  1. 轉換程序中可能導致溢位或損失精度
    例如:int i =128; byte b = (byte)i; //列印的結果是-128
    因為 byte 型別是 8 位,最大值為127,所以當 int 強制轉換為 byte 型別時,值 128 時候就會導致溢位,
  2. 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入
    例如:float f = 32.7f; int a2 =(int) f; //列印的結果是32
  3. 不能對boolean型別進行型別轉換,

4.3 口訣:

小到大,直接轉 大到小,強制轉 浮變整,小數沒

低 ------------------------------------> 高

byte,short,char→ int→ long→float→double

5 運算規則(5條)

5.1 計算結果的資料型別,與最大資料型別一致

System.out.println(3/2);//1,int/int,得到的結果型別還是int
System.out.println(3/2d);//1.5,int/double,得到的結果是double

5.2 byte,short,char三種比int小的整數,運算時會先自動轉換成int

byte a = 1;
byte b = 2;
byte c = (byte)(a+b);
//a+b會自動提升成int型別,右面得運算結果就是int大型別
//給左面的byte小型別賦值,不可以,需要強轉,

5.3 整數運算溢位

整數運算溢位

整數運算,類似于一個鐘表,轉到最大時,再轉會回到最小,
計算:光速運行一年的長度是多宣告?3億m/s

//溢位的現象:
//因為做了大的整型資料的運算,會超出int取值范圍,解決方法:把整數提升成long型別,
System.out.println(300000000L606024365);

5.4 浮點數運算不精確

1-0.8 (這是一個現象,后續會學習解決方案)

5.5 浮點數的特殊值

Infinity 無窮大 3.14/0
NaN not a number 0/0.0 或 0.0/0

6 拓展 識別符號命名風格

1.【強制】識別符號命名均不能以數字開頭,而且下劃線或美元符號開始,也不能以下劃線或美元符號結束
錯誤案例:1name/name / name / n a m e / n a m e name / name name/name
2.【強制】代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式,
說明:正確的英文拼寫和語法可以讓閱讀者易于理解,避免歧義,
注意,即使純拼音命名方式也要避免采用,
正確案例:alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文,
錯誤案例:DaZheModule [打折模塊] / getPingfenByName() [評分]
3.【強制】類名使用 UpperCamelCase 風格

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/271614.html

標籤:其他

上一篇:C語言:檔案操作集合,干貨滿滿!

下一篇:從今天加入CSDN大家庭

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more