天天看點

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

環境

并非所有的計算機都可以開發java程式,java程式的開發與運作需要專門的環境。

因為java語言的程式是運作在java所專有的系統中。

  • 要運作java程式我們需要在作業系統(windows,MACOS,Linux)安裝jre(Java Runtime Environment,簡稱JRE)。
  • 要編譯(開發)java程式,我們就需要安裝JDK(Java Development Kit)。

jre和JDK都是一個軟體,jre這個軟體可以運作java編譯後的程式。JDK中包含了JRE,JDK中不止有JRE還有java程式的編譯軟體。我們作為java程式員,隻要安裝JDK即可。

[1]安裝JDK

關鍵的步驟:

安裝完成之後,會在安裝的目錄中産生一個檔案夾:

java目錄中有一個JDK和JRE,檢視JDK的目錄下的内容:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

[2]配置環境變量

我們要使用java -version檢視目前的JDK的版本。

打開指令視窗:

①在運作中輸入CMD,回車。

②按鍵盤上的win鍵+R鍵。

所有的指令視窗預設都是在C槽,

我們需要連接配接幾個簡單dos指令。

  • 盤符切換 : 進入任何和一個盤符, 都是使用盤符名稱:比如 😄 :
  • 進入某一個目錄: cd 目錄名稱

我們要執行java指令,就要進入jdk的bin目錄。

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

因為指令本身也是一段程式,所有要運作這個指令,必須能找到這個指令,是以我們要進入JDK的bin目錄才能執行java的指令。

我們不可能每次執行java程式都要進入這個bin目錄,是以要配置環境變量,環境變量的作用就是讓作業系統可以在任何位置都能找到java的指令。

配置環境變量開始:

建立使用者變量或者系統變量

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

修改PATH變量

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

建立編輯環境變量

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

測試運作環境和編譯環境的版本:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

關注我:私信“資料”擷取Java進階架構資料、大廠面試試題、視訊

java語言的介紹

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試
  • java語言是所有的面向對象語言的帶頭大哥。
  • java語言是目前位置跨平台做的最好的一門語言。

java語言的運作

第一個java程式:

在任何位置建立一個記事本檔案,字尾修改為.java

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

我這裡的命名是Hello.java

在其中編寫如下内容:

public class Hello{     public static void main(String []args){

        System.out.println(“Hello Java!”);

    }

}

儲存檔案之後,在檔案所在的目錄進行編譯。使用指令javac 檔案名,運作位元組碼檔案 :java Hello

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

關注我:私信“資料”擷取Java進階架構資料、大廠面試試題、視訊

第一個java程式的幾個問題:

  • 源檔案的字尾必須是.java
  • 源檔案的名字最好是英文,所有的單詞的首字母最好大寫。
  • 程式中的類名和檔案名必須完全一緻
  • java語言是嚴格區分大小寫的,是以該大寫的字母一定要大寫。
  • 所有的标點符号必須是英文狀态輸入。
  • 每一句程式結束了必須使用“;”結尾。

java程式的運作過程

java程式三步走:

①編寫源程式。 所謂源程式就是我們編寫的.java檔案。裡面的内容是程式員看得懂。

②編譯遠端。 使用javac指令将源程式編譯成位元組碼檔案(.class檔案)。java程式是運作在JVM上的,JVM隻認識位元組碼檔案。

③執行java位元組碼檔案。 使用java指令執行java位元組碼檔案。

JVM

JVM本身是一個軟體,在jre中就有JVM。

這台電腦使用的JVM是:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

java語言一個非常重要的特性就是跨平台。

所謂跨平台,就是我們在任何一個作業系統中将java源程式編譯成位元組碼檔案,然後這個位元組碼檔案可以在任何其他的作業系統中正常運作。

java語言如何跨平台:

java語言跨平台就是通過JVM實作,java程式是運作在JVM上的,和作業系統本身是沒關系。JVM就像一個花盆,java程式就好像花盆中的一顆植物。這棵植物隻關心花盆,不關心花盆在哪裡。

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

不同的作業系統上有不同的JVM。這個寫JVM對java程式的解釋是一樣的。

是以Oracle為每一個不同的作業系統都提供了專門的JVM。 我們現在所說的JVM隻是一個規範(标準)。

目前市面上最流行的JVM就是HotSpot。就是全是的java的解釋器就隻有HotSpot。這就是它規範的原因。

開發工具

java程式的開發工具:

常見的開發工具:記事本、eclipse(免費的)、IDEA(可以試用一個月)、NetBeans…

關注我:私信“資料”擷取Java進階架構資料、大廠面試試題、視訊

java文法文法基礎

Hello程式的說明

我們的第一個java程式:

public class Hello {     public static void main(String[] args) {

        System.out.println(“Hello  Java!”);

    }

}

java程式的最小阻止單元是"類" (class)。

在java檔案中(.java結尾)編寫java類。

在Hello.java檔案中的寫法:

public class Hello是固定寫法。這裡Hello稱之為類名,類名必須和檔案名完全一緻。public和class 是固定的關鍵字。類中的程式要寫在一對{}

上面類中的:

public static void main(String[] args) {

        System.out.println(“Hello  Java!”);

    }

稱之為主函數,主函數的簽名:public static void main(String[] args)固定寫法!!!。

主函數中要執行的程式要寫在一對{}中。 我們目前寫的就是在控制台輸出“Hello Java”。

基本結構:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

類和主函數之間,主函數和要執行的程式之間都是有縮進的。這個縮進是一個制表符。任何一個結構的開始的{都是在語句的後面,結束的"}"都是在下面的。

資料類型

為什麼要有資料類型?

我們認知周邊的事物就是分類識别,同樣計算機要處理資料,也是分類處理資料,所有就有了資料類型。

java中的資料類型:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

java中的8中基本資料類型:

  • byte 位元組型。 在記憶體中占8個bit。 表示範圍是 -128 ~127
  • shrot 短整型。 在内中占2個位元組。16個bit。 -32768 ~ 32767
  • int 整形。 在記憶體中占4個位元組。 32個bit。-2147483648 ~ 2147483647
  • long 長整型。在記憶體中占8個位元組。64個bit。-9223372036854775808 ~ 9223372036854775806
  • float 浮點型。在記憶體中占4個位元組。32個bit。1.4E-45 ~ 3.4028235E38
  • double雙精度型。在記憶體中占8個位元組。64個bit。4.9E-324 ~ 1.7976931348623157E308
  • char字元型。表示"一個"字元。在記憶體中占2個位元組。16個bit。 0~ 65535
  • boolean布爾型。表示true或者false。在記憶體中理論上占一個bit位。 在java中boolean的值隻有true和false。

特殊的引用類型:String 表示字元串。多個字元:“Hello”。

變量

變量是存儲資料的最小單元。

java語言是強資料類類型,申明變量的時候必須注名變量要存儲的資料類型。申請之後,變量的類型不能随意改變。

申請變量的文法:

資料類型  變量名;

給變量指派依然是使用指派運算符=:

變量名 = 變量的值 ; //申請的同時指派

資料類型 變量名 = 變量的值;

使用變量的時候,直接使用變量的名稱即可。

案例:

public class Demo1 {     public static void main(String [] args){         // 申請變量

        int age;         // 給變量指派(不同資料類型,指派方式不一樣)

        age = 18; // 整形直接寫數字即可。

        // 申請的同時指派

        double score = 86.9; // double類型的直接寫數字即可。

        // 使用變量輸出這兩個變量值

        System.out.println(age);

        System.out.println(score);

    }

}

不同類型的變量的指派方式:

// 不同類型的變量的指派方式

// byte類型, 數字,注意範圍不要超過byte的範圍

byte b = 127; // short,數字,主要範圍不要超過short範圍

short s = 32000; // int類型 數字,主要範圍不要超過int範圍

int i = 65432656; // long類型,數字,注意如果數字超過了int的範圍,則需要使用"L/l"表示目前數字是長整型

long l = 2111111111111110L; // 字元型  單個字元,必須使用單引号包裹

char ch = ‘男’; // 浮點型 如果指派是小數,必須有字尾"F/f"。

float f = 12.0F; // 雙精度型  數字,直接寫。  可以在後面使用"D/d"。

double d = 12.5; // boolean類型。  在java中boolean隻有true或者false。

boolean flag = true;

// 非基本類型的String  類型的名字是String,指派要使用雙引号

String name = “旗木卡卡西”;

命名規則和規範

類名,變量名的命名規則:(絕對不能觸犯)

  • 不能以數字開頭
  • 不能有特殊符号
  • 不能是java的關鍵字或者保留字元。

類名,變量名的命名規範:

  • 所有類名 單詞的首字母必須大寫 Demo
  • 所有的變量名 第一個單詞全部小寫,其餘單詞的首字母必須大寫 firsrName
  • 如果是縮寫,類名則全部大寫,變量名則全部小寫
  • 言簡意赅。
  • 盡量使用英文單詞,如果是拼音,不允許使用拼音和英文的混合。千萬不要使用拼音縮寫。更不要使用中文。

資料類型轉換

所謂資料類型轉換,就是各種不同的資料類型之間的轉換。

問題:不同的資料類型在記憶體中的所占的bit位是不一樣的。那麼數字 10 在記憶體中占多少bit位?

理論上數字10隻需要4個bit位(1010)。但是數字10有不同的類型:

byte b  = 10; short s = 10; int i = 10; long l = 10; float f = 10; double d = 10;

上面的定義在記憶體中的情況:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

任何一個類型在無論數值多大,在記憶體中占的位置大小是固定的。

我們将任何一個byte類型的資料直接指派給int類型,是否行得通?

byte x = ???;int i = x;

其實就是任何小的類型到大的類型都是自動轉換的。

還有一個特殊的情況就是: char可以自動轉換為int。

看圖記憶:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

幾個問題:

給長整型指派:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

當我們寫任何整形數字的時候,如果沒有任何修飾(字尾)。 這個數字預設是int類型。

如果是将這個數字指派給byte或者short,則預設會轉換為對應的類型,當然範圍必須在對應的類型的範圍内。

byte x = 10;short s = 100;

但是如果将整形數字指派給長整型變量,這個數字則預設就是整形的。如果超過了整形的範圍,就會報錯,必須使用"L"标明是長整型。

long l = 21111111110L;

給float指派:

float f = 12.5;

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

所有的小數在預設情況下都是double。 是以當給float的變量指派小數的時候,必須使用"F"字尾。

小的類型到大的類型是自動轉換的,那麼大類型能否轉換小類型。

計算機認為将int轉換為short的時候,空間放不下,可能會丢失資料。 我們知道不會丢失,是以我們可以強制轉換。

文法:[目标類型就是我們要轉換成的類型,源資料就是原始的資料]

目标類型 變量名  =  (目标類型)源資料。

int x = 10;        // 強制類型轉換

       short s2 = (short)x;

上面的案例中是沒有資料丢失的。

double d = 12.5;// 強制類型轉換int a = (int)d;

System.out.println(a);

上面的強制類型轉換會導緻小數部分直接被丢棄。

基本類型和字元串之間的轉換

任何類型轉換為字元串 都可以使用 : xxxx + “”

字元串轉換為其他類型:

[1]字元串轉換為整形

前提是字元串必須是整數形式的字元串,比如: “128”,“369”。

操作文法:

String age = “20”;// 使用Integer.parseInt(str) 将字元串轉換為數字int age_ = Integer.parseInt(age);

System.out.println(age_);

如果字元串格式不争取,則會報錯:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

[2]轉換為Float或者Double或者Short或者byte或者…

String str = “10”;

byte b1 = Byte.parseByte(str);

short s3 = Short.parseShort(str);

long ll = Long.parseLong(str);

float f1 = Float.parseFloat(str);

double d1 = Double.parseDouble(str);// 取出字元串中的某一個字元, 其中0就索引。char ch = str.charAt(0);String bstr = “false”;

boolean flag = Boolean.parseBoolean(bstr);

語句

控制台的輸出語句,純粹的為了友善我們學習,在實際工作中,幾乎沒啥用。

固定的文法:

System.out.print();// 輸出不換行System.out.println();// 輸出且換行

// 直接輸出一個字元串,并且換行System.out.println(“今天天氣不太好!”);

System.out.println(“的确不太好”);// 輸出字元串,但是不換行System.out.print(“這是第一行,”);

System.out.print(“還是第一行”);

System.out.println();// 輸出一個空的換行// 可以輸出任何類型的資料System.out.println(‘帥’);

System.out.println(15);

System.out.println(15L);

System.out.println(12.5);

System.out.println(true);// 可以在()中使用“+”連接配接任何類型和字元串System.out.println(“小明的名字是:” + “小明”);

System.out.println(“小明的成績是:” + 89);// 如果是兩個數字,”+“可能會出現數學運算System.out.println(5+6);// 任何變量都不需要雙引号,可以直接輸出或者使用"+"連接配接String name = “旗木卡卡西”;int age = 28;

System.out.println(name + “的年齡是” + age);int x = 3;int y = 4;int temp = x ;

x = y;

y = temp;

System.out.println("x = " + x);

System.out.println("y = " + y);

在輸出語句中還有一些特殊的符号

在字元串中可以使用\n表示換行。 可以使用\t表示一個制表符。可以使用\表示一個\

看案例:

// \n表示換行

       System.out.println(“你好!\n 今天天氣不錯!”);

       System.out.println(“張三\t李四\t王五”);

       System.out.println(“我的程式在C:\code下”);        //  輸出一個成績表

       System.out.println(“姓名  國文 數學 英語”);

       System.out.println(“張三   80  89   85”);

       System.out.println(“張三豐 80  89   85”);

       System.out.println(“卡卡西 80  89   85”);

       System.out.println(“-------------------”);

       System.out.println(“姓名\t國文\t數學\t英語”);

       System.out.println(“張三\t80\t89\t85”);

       System.out.println(“張三豐\t80\t89\t85”);

       System.out.println(“卡卡西\t80\t89\t85”);

java基礎文法

運算符

[1]算數運算符

+,-,*,/,% ,++,–

和之前學習的JS中的使用完全一緻。

但是在強資料類型的語言中,一個表達式的最終的結果取決于這個表達式中類型最大的操作數。

案例:

int x = 5,y = 2;         double z = x / y;

        System.out.println("z = " + z);// 2.0

得到的z是2.0而不是2.5。 就是因為x和y都是int類型。是以結果會強制轉換為int類型。

案例:

int a = 5;

        double b = 20.0 / 5;

應用問題:總共有168條資料。計劃每頁放20條資料,請計算總共需要多少頁?

//總共有168條資料。計劃每頁放20條資料,請計算總共需要多少頁?

int total = 168; int size = 20; //int maxPageNum = total % size == 0 ? total / size:(total / size + 1);

int maxPageNum = (int)Math.ceil(total * 1.0 / size);//ceil() 方法執行的是向上取整計算,它傳回的是大于或等于函數參數,并且與之最接近的整數。

System.out.println(“最大頁碼是:” + maxPageNum);

總結:

下面的情況: 後面的表達式中有double類型的操作,前面的變量是int類型,無法接收。

int m  = 10 + 2 / 5 * ( 1.2 * 5);

解決方案:

①将對應的double類型的操作數強制轉換為int

int m  = 10 + 2 / 5 * ( (int)1.2 * 5);

②将整個表達式的結果強制轉換為int

int m  = (int)(10 + 2 / 5 * ( 1.2 * 5));

[2]關系運算符

,>=,<,<=,==,!=

java中沒有=和!

任何一個表達式中如果出現了比較運算符,則整個表達式的結果肯定是一個布爾值。

[3]邏輯運算符

!,&&,||***問題:&和&&有什麼差別?

&&和|| 有短路作用 。 在java中&和|也可以做邏輯運算,但是沒有短路作用。

案例:

int x = 3,y = 4;

boolean flag = x > 3 && (y = 5) > 4;

System.out.println(flag);

System.out.println("x = " + x);

System.out.println("y = " + y);

當我們使用"&&"的時候,最終的結果中flag = false,x = 3,y = 4。

當我們将“&&”修改為“&”的時候,flag = false, x = 3, y = 5;

[4]指派運算符

=,+=,-=,*=,/=,%=

[5]三目運算

當表達式1的結果為true的時候,整個表達式的結果是表達式2的結果否則是表達式3的結果

表達式1?表達式2:表達式3;

應用:找出兩個數中較大的一個數。

int m = 5,n = 7;int max = m > n ? m : n;

System.out.println(max);

流程控制

分支流程

[1]if系列

if(表達式){if語句;}

if(表達式){if語句}else{else語句}

if(表達式){if語句}else if(表達式){elseif語句}…[else]

上面的分支語句的文法中所有的表達式都必須是布爾類型的。

在JS中if(表達式)會自動轉換布爾值。但是在java中不行的。

[2]switch

switch(表達式){    case value1:

       statement1;        break;// 可選

   case value2:

       statement2:        break;

       …    default:

       statement;

}

在JDK1.7之前switch中的表達式隻能是int或者char類型或者枚舉。不能是任何其他類型。

在JDK1.7之後,新增了String。

循環流程

[1]while(){}

要注意的是:()中的表達式必須是布爾值。

java中的while往往使用來做不知道循環次數的循環,或者死循環。

問題:錄入學身的成績,并且計算平均分。

public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);        int score = 0;        int sum = 0;        int count = 1;        while(true){

           System.out.println(“請錄入第”+count+“位同學的成績(輸入-1表示結束):”);

           score = sc.nextInt();            if(score == -1){                break;

           }

           sum += score;

           count++;

       }

       System.out.println(“總共錄入了”+count+“位同學的成績,平均分為:”+(sum / count));

   }

[2]do{}while();

表達式也必須是布爾值。 和while的差別就是肯定至少會執行一次。

[3]for(;😉{}

for(;😉{}for(表達式1;表達式2;表達式3){

         循環語句

}

第一次進入for循環的時候,首先執行表達式1,在判斷表達式2,如果是true執行循環語句,如果是false就退出循環。在此我向大家推薦一個架構學習交流圈。交流學習指導僞鑫:1253431195(裡面有大量的面試題及答案)裡面會分享一些資深架構師錄制的視訊錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化、分布式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多

當循環語句執行結束之後,執行表達式3,繼續判斷表示2的結果,根據結果進入下次循環或者退出循環。

for(int i = 0;i< 10;i++){

   System.out.println(i);

}

[4]break和continue

break:跳出整個循環。

continue:結束本次循環,繼續下次循環。

控制台輸入

我們可以使用System.out.print()在控制台輸出任何内容。

我們也可以使用System.in.read()在控制台錄入任何内容。

java提供了一個專門的類,Scanner,這個Scanner可以從控制台錄入任何基本資料類型。

用法:

// ①引入Scanner包import java.util.Scanner;public class Demo{    public static void main(String[] args) {        // ②建立一個Scanner對象

       Scanner sc = new Scanner(System.in);        // ③錄入資料

       // 錄入一個字元串

       System.out.println(“請輸入您的姓名:”);

       String name = sc.next();// 讀取字元串

       System.out.println(“請輸入您的年齡:”);        int age = sc.nextInt();// 讀取控制台的整形數字

       System.out.println(“姓名:”+name+“\n年齡:”+age);

   }

}

注意的事情:

[1]sc.next() 按照 空字元 截斷字元串

如果輸入内容如下:

旗木  卡卡西

隻能讀取到旗木而卡卡西會進入下一個API的調用(可能會報錯)。

如果一行的輸入中一定是有空格的,則可以使用sc.nextLine();

[2]讀取控制台的數字 :

  • sc.nextInt()
  • sc.nextDouble()
  • sc.nextFloat()

當使用這些API的時候,輸入的格式必須正确,否則就會報異常:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

變量作用域

所謂變量的作用域就是這個變量從申明到結束。(這個變量可以使用的位置)

java 中變量的作用域就是從變量的申明開始,到離這個變量最近的結束的“}”結束。

public class Demo6 {    // 成員變量,作用域是在整個類中。

   static String name = “這是一個成員變量”;    public static void main(String[] args) {        // 局部變量  在main方法中使用

       int x = 10;        if (x > 5){            // 局部變量,隻能在if語句塊中使用。

           int z = 100;

       }        // 變量a和y 都隻能在for循環中使用

       // a在整個循環中都可以使用。

       // y 每次循環都會建立一個新的。

       for(int a = 0;a > 10; a --){            int y = 1000;

           System.out.println(“0”);

       }        // 如果要在main方法中使用成員變量,則成員變量必須使用static修飾。

       System.out.println(name);

   }

}

雙層循環

問題1:在控制台輸出矩形

public class Demo7 {    public static void main(String[] args) {        public class Demo12 {    public static void main(String[] args) {        long a =1,b = 1;        for(int x = 3; x <= 56;x ++){            // 計算下一個數

           long m = a + b;

           System.out.println(“第”+x+“位是”+m);            // b指派給a,m指派給b

           a = b;

           b = m;

       }

   }

}

數組

變量就是在記憶體中開辟一個空間,存儲一個資料,然後給這個空間起一個别名。他們和在一起就是一個變量。

數組就是在記憶體開辟一組連續的空間,這組連續的空間的格式是一緻的。給這組連續的空間一起起一個别名。給每個空間給上編号。他們和在一起就是一個數組。

數組的幾個特點:

  • 在記憶體中是連續的空間,每個空間都有對應的索引。索引都是從0開始的。
  • 一個數組中的資料類型都是一緻的。
  • 數組一旦初始化,長度是不能改變的。

數組的初始化和簡單使用

[1]數組的申明和初始化

在java中數組使用 []申明,文法

[]在數組名的前面或者後面都可以,但是一般寫在數組名的前面 。 數組名的命名要求和變量名的命名要求完全一緻。在此我向大家推薦一個架構學習交流圈。交流學習指導僞鑫:1253431195(裡面有大量的面試題及答案)裡面會分享一些資深架構師錄制的視訊錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化、分布式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多

案例:

// 申明數組int [] scores;String [] names;

數組的初始化:文法

方式1:

數組名 = new  資料類型[length]; // 這裡的length必須存在,是整形

方式2:

數組名 = new 資料類型[]{“卡卡西”,“佐助”,“鳴人”} // 直接給數組元素指派的情況下,千萬不要寫length

方式3:

// 申明數組的同時初始化資料類型 [] 數組名 = {25,68,98,54,56} // 直接使用{}給數組指派,但是這種方式隻能使用在申明的同時就初始化的情況。

案例:

// 初始化scores = new int [5]; // scores中的5個元素的預設值都是0names = new String[]{“卡卡西”,“佐助”,“小丸子”};// 不要寫長度// 申明數組的同時初始化double [] ds = {12.5,12.3,12.6};

當我們使用方式1建立了一個數組的時候,這個數組是有預設值的。

String [] names = new String[10]; // 這個數組的預設值是 null。

各種不同的資料類型的數組的預設值是:

  • byte [] 預設值 0
  • short [] 預設值 0
  • int [] 預設值 0
  • long[] 預設值 0L
  • float [] 預設值 0.0F
  • double [] 預設值 0.0D
  • char [] 預設值\u000其實就是一個空字元
  • boolean [] 預設值是 false。
  • 其他類型 數組 預設值全部是 null。

[2]數組的使用

tips:在java中數組元素的索引隻能是int類型。

擷取指定索引的元素:

String name = 數組名[index];

給指定索引的元素指派:

數組名[index ] = “哈哈”;

擷取數組的元素個數

int length = 數組名.length;

tips:在java中任何使用我們使用的數組的索引超過了數組元素的索引界限時,都會抛出異常。

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

案例:

public class Demo14 {    public static void main(String[] args) {        // 申明數組

       int [] scores;

       String [] names;        // 初始化

       scores = new int [5]; // scores中的5個元素的預設值都是0

       names = new String[]{“卡卡西”,“佐助”,“小丸子”};// 不要寫長度

       // 申明數組的同時初始化

       double [] ds = {12.5,12.3,12.6};        // 數組的簡單使用

       String [] ns = new String[5];

       ns[0] = “大聖”;

       ns[1] = “二師兄”;

       ns[2] = “小丸子”;

       ns[3] = “喬峰”;

       ns[4] = “虛竹”;        // 擷取數組的中某一個元素

       String name = ns[1];

       System.out.println(“name-1:”+name);

       System.out.println(“------------------”);        for (int i = 0;i < ns.length; i ++){

           System.out.println(ns[i]);

       }

   }

}

冒泡排序

排序是所有算法中最為重要的。在筆試中非常的常見。

筆試題:對如下的數組進行從大到小的排序

int[] arr = {56,86,25,47,98,25,35};

所謂排序是說在程式執行結束之後,記憶體中的數組修改為如下的樣式

int[] arr = {98,86,56,47,35,25,25};

import java.util.Arrays;

public class Demo2 {

    public static void main(String[] args) {         int[] arr = {56,86,25,47,98,25,35};         for(int i = 0; i < arr.length - 1;i ++){// 執行多少輪

            for (int j = 0;j < arr.length - 1 - i;j ++){// 内部循環的次數是 逐個遞減

                // 比較j和j+1兩個元素的大小

                if(arr[j] < arr[j + 1]){                     // 交換兩個元素的位置

                    int temp = arr[j];

                    arr[j] = arr[j+1];

                    arr[j+1] = temp;

                }

            }

        }

        System.out.println(Arrays.toString(arr));

    }

}

斷點調試

找bug: 如果程式報錯了,根據錯誤提示可以查找問題所在。 如果程式沒有報錯,就必須猜測問題所在。 斷點調試查找問題。bug不是文法錯誤。

寫好程式,在需要調試的位置添加斷點:

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

加好斷點之後,右鍵debug啟動。啟動之後,程式會暫停在添加斷點的位

【Java進階營】Java基礎知識分享環境java語言的介紹java語言的運作開發工具java文法文法基礎Hello程式的說明資料類型變量命名規則和規範資料類型轉換語句java基礎文法運算符流程控制分支流程循環流程控制台輸入變量作用域雙層循環數組數組的初始化和簡單使用冒泡排序斷點調試

看完如果有幫助,希望可以給個 三連 ,你的鼓勵就是我不斷前進的動力。謝謝

關注我:私信“資料”擷取Java進階架構資料、大廠面試試題、視訊