java基礎篇-01-java語言的概述\變量\數據類型

背景

從事java開發已經三年由余了,最近想好好的總結下java開發。所以打算寫一系列相關文章,能夠系統的涵蓋java后端從入門到高階的開發,所以開始寫java的博客。
這些博客不是簡單的進行流程的介紹,而是我進行實踐和思考的結果,希望對自學的同學能有所幫組。

java語言的概述

1.語言發展概
java語言的發展,經歷了三代的語言,才發展出了純面向對象的java語言。第一代語言是打孔機,純粹的機器語言。第二代語言是匯編語言,第三代語言是高級語言,有面向過程思想的C、Pascal、Fortan等。有面向對象的C++,有跨平臺又面向對象的java等。

95年 sun公司推出JAVA,前身oak
創始人: 詹姆斯 高斯林

3.java語言版本

  • 98年 內部版本1.2 java技術平臺命名為:j2se、j2me、j2ee
  • 04年 內部版本1.5 外部版本5.0 改動非常大
  • 06年 內部版本1.6 重命名java技術平臺,javaSE、javaME、javaEE
  • 09年 Oracle收購sun公司
  • 11年 內部版本1.7
  • 14年 內部版本1.8 改動非常大
  • 17年 內部版本1.9 從該版本開始,每6個月版本升級計劃
  • 18年3月 內部版本1.10

注意公司中使用的都是LTS版本

2.java技術體系平臺
java se(Java Standard Edition) Java標準版
主要應用于PC上的GUI程序開發。

java ee(Java Enterprise Edition) Java企業級版本
主要用于web應用程序開發,為企業提供一套解決方案。

java me(Java Micro Edition)
主要用于嵌入式平臺的開發。現在幾乎沒用了。

3.java在各個領域中的應用

  • 企業級開發
  • android應用
  • 機器學習領域

java的運行機制和執行過程

兩個機制,一是JVM虛擬機機制,二是GC,垃圾自動回收機制.

java語言環境的搭建

下載安裝JDK

到Oracle官網下載 , 下載對應的版本,我這使用的事JDK8

配置path環境變量

windows下安裝后的JDK會生成兩個目錄,一個jdk,一個jre,因為jdk中帶有jre

什么是環境變量如何實操配置?

環境變量是運行命令的時候, 操作系統會默認去搜索的路徑。

windows下的環境變量配置

到Oracle官網下載對應的JDK版本.

  • 添加JAVA_HOME環境變量為JDK安裝的根目錄。
  • 將%JAVA_HOME%/bin添加到PATH環境變量下。
Unix下的環境變量配置

mac下安裝JDK很簡單。
方法一: brew cast install java8即可安裝jdk8
方法二: 到Oracle官網下載對應的JDK版本, 按提示安裝即可
mac下安裝的會自動添加到對應的path環境變量中

JDK、JRE、JVM是什么有什么關系?

JDK(Java Development Kit)指java開發工具包
JRE(Java Runtime Environment)指java運行環境
JVM指Java虛擬機, 其運行于對于操作系統層之上。(具有指令集并使用不同的存儲區域。負責執行指
令,管理數據、內存、寄存器。)
JDK = JRE + 開發工具集合
JRE = JVM + Java SE標準類庫

Java中的注釋

java中的注釋和C、C++都一樣, 有單行和多行注釋。
其中java還有文檔注釋,所謂的文檔注釋就是該注釋可以生成對應的文檔,方便閱讀和維護。

文檔注釋

語法:

/**
* @author: sweetcs
*
*/

文檔注釋對應的生成文檔的命令javadoc,該命令是用來生成java api文檔的命令,而文檔注釋是為了在生成API文檔的時候,能夠生成對應接口的描述。
javadoc -d 文件夾名稱 xxx.java

類的結構

類的簽名,修飾符是可選的
public class XXXX
類體

{

}

方法的簽名:
public int calcHeight(int a, int b)
方法體

{

}

變量

標識符

標識符就是給變量、類、方法取名字就叫做標識符。
java中的標識符必須是字母(以a-z大小),數字、下劃線和$符號組成.

命名標識符需要注意的細節

  • 標識符不能以數字開頭取名
  • 標識符不能以空白符開頭
  • 標識符不能以保留字、關鍵字命名

按數據類型分類

image.png

基本數據類型

整型
  • byte 一個字節 -128~127
  • short 兩個字節 -2^15 ~ 2 ^15 -1
  • int 四個字節 -2^31 ~ 2^31 -1
  • long 八個字節 -2^63 ~ 2^63 - 1

java的整型常量默認為 int 型,聲明long型常量須后加‘l’或‘L’

浮點型

java中的浮點型有兩種,double和float,必須包含小數點。

  • 浮點型常量默認類型是double
  • 要創建float類型的浮點類型,需要在小數后加f或者F
  • float四字節、double 8字節
  • 浮點型常量可以使用d或者D表示,比如9D, 9d
字符類型

字符類型是可以運算, 因為其本質就是數字。java中的字符用Unicode編碼,這些字符包含在ASCII碼范圍內沒有變。

字符常量的三種表示方式

  • 使用單引號括起來的單個字符
  • 轉移字符
  • 使用Unicode值來表示字符型常量
Unicode編碼與UTF-8的關系
  • Unicode是一種編碼,它只規定了符號的二進制代碼,沒有規定該二進制代碼如何存儲。
  • 無法區別 Unicode 和 ASCII:計算機無法區分三個字節表示一個符號還是分別表示三個符號。另外,我們知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那么每個英文字母前都必然有二到三個字節是0,這對于存儲空間來說是極大的浪費。
  • UTF-8是對Unicode編碼的一種實現方式
  • UTF-8是一種變長的編碼方式。它可以使用 1-6 個字節表示一個符號,根據不同的符號而變化字節長度。

UTF-8的編碼規則:

  • 對于單字節的UTF-8編碼,該字節的最高位為0,其余7位用來對字符進行編碼(等同于ASCII碼)。
  • 對于多字節的UTF-8編碼,如果編碼包含 n 個字節,那么第一個字節的前 n 位為1,第一個字節的第 n+1 位為0,該字節的剩余各位用來對字符進行編碼。在第一個字節之后的所有的字節,都是最高兩位為"10",其余6位用來對字符進行編碼。
Unicode和UTF-8的區別
  • Unicode是一種編碼規范, 其每個字符占用2個字節。而UTF-8是這種規范的一種實現, 是一種變長編碼方案, 英文字母還是占用一個字節,但是漢字占用3個字節
布爾類型
  • boolean類型數據只允許取值true和false,無null。不可以0或非 0 的整數替代false和true,這點和C語言不同。
  • Java虛擬機中沒有任何供boolean值專用的字節碼指令,java語言表達所操作的boolean值,在編譯之后都使用java虛擬機中的int數據類型來代替:true用1表示,false用0表示《java虛擬機規范 8版》

引用數據類型

  • class定義的類
  • interface定義的接口
  • 數組

數據類型轉換

基本數據類型轉換

自動數據類型轉換

基本規則: (小--->大)容量小的類型自動轉換為容量大的數據類型。數據類型按容量大小排序為

image.png
  • 有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算。 -
  • byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型。
  • 當把任何基本類型的值和字符串(String)進行連接運算時(+),基本類型的值將自動轉化為字符串類型。

整型常量
所謂的整型常量,是屬于整數,但沒有說明使用什么整數結構來進行存儲(byte\short\int).
所以byte b = 5并不是表示5是整型常量,所以并不是int類型存儲到byte類型,這里需要注意理解。

強制類型轉換

基本規則: 大轉小。大轉小的時候, 編譯器編譯期間默認是會報錯的,比如報類型不兼容等。這個時候就需要使用強制類型轉換。

語法:數據類型 變量名 = (目標數據類型)值;

特點:
①表達式有個自動提升原則。表達式的結果的最終類型為 操作數中的最大類型
②強轉符號只針對于最近的有效
int a = (int)12.5+7.5;
③byte、short的底層存儲實際是以int形式。每次byte、short運算都當做int類型
④char類型只能存儲int的常量值,但不能直接存儲int的變量值

String類型和基本類型之前的轉換

基本類型 轉 String

語法:直接拼接空字符串.
String s = i + ""

String 轉 基本類型

語法:通過調用基本數據類型對應的包裝類里的parseXXX方法。
例如:

String s = "123455.5";
double d= Double.pareseDouble(s);

String轉char

String s = "a";
char c = s.charAt(0);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。