Java學習地址 視頻地址 真的很推薦大家去聽老韓的課(非常細誰聽誰知道):【零基礎 快速學Java】韓順平 零基礎30天學會Java_嗶哩嗶哩_bilibili 使用心得 說一下我使用的心得: 1. 學過C和C++,作為軟體工程的學生大一下學期的 Java 屬實是混過去的(60飄過),當我真正想開 ...
Java學習地址
視頻地址
真的很推薦大家去聽老韓的課(非常細誰聽誰知道):【零基礎 快速學Java】韓順平 零基礎30天學會Java_嗶哩嗶哩_bilibili
使用心得
說一下我使用的心得:
1. 學過C和C++,作為軟體工程的學生大一下學期的 Java 屬實是混過去的(60飄過),當我真正想開始好好學專業課時才發現,面向對象的思想和語言真的很重要,而且幾乎貫穿了你整個大學生涯,而Java 又作為典型的面向對象語言,毫不誇張的講,不會 Java你會寸步難行,十分難受。
2. 由於算是有一點基礎,但是聽老韓的課也沒有想象中的啰嗦,大可以二倍速聽前面的基礎內容,如果你一點基礎沒有,一定要正常速度跟著老韓敲代碼,如果你認為前面迴圈選擇分支和數組你都沒有什麼問題,也可以從面向對象的思想直接開始,很基礎很入門,同樣也很實用。
編譯器
可以使用老韓上課講的命令行,但是由於我已經習慣了idea 所以直接用了idea進行編程,之後會出一篇簡單使用 idea 的博客。
筆記軟體
以前用的 有道雲筆記 ,因為有學姐推薦,然後一直在用,但是開始記Java的時候用的 語雀 ,給大家看一下界面,比較討喜,同步也還不錯。
Java重要特點
- 面向對象(oop)
- 健壯性:強類型機制,異常處理,垃圾的自動收集
- 跨平臺性的 (一個編譯好的.class可以在多個系統下運行)
TEST.java -> TEST.class (java虛擬機機制) 在windows上和在Linux都可以運行
- java語言是解釋型的語言 : js php java 解釋型語言(代碼不能在編譯器直接運行,需要用到解釋器) c/c++ 編譯型語言 (二進位代碼,可以直接在編譯器裡面運行)
Java開發快速入門
執行流程分析
.java文件 編譯後 .class文件 運行後 結果
(源文件) Javac (位元組碼文件) java
編譯:通過編譯器將其編譯成JVM可以識別的位元組碼文件 通過javac編譯工具對其.java文件進行編譯 如果程式沒有錯誤 酒鬼生成位元組碼文件,即為可以執行的Java程式
運行:本質就是將 .class文件裝載到 jvm機執行
註意:對修改後的Java文件需要重新編譯後,再生成新的.class文件後才能正常運行
Java開發註意事項
- 由 class 組成
- main 方法由固定的書寫格式
- 一個源文件最多只有一個 public 類 但其他類的個數不限制
- 每一個類編譯以後,都對應一個.class文件 (,class 文件可以為空類)
- 文件中如果有public類,文件必須與public類同名
- 可以將main方法寫在非public類中,然後指定運行當前類,這樣入口就是非public類的main方法
Java轉義字元
//註釋,也代表轉義字元的演示 // \n 換行符 // \t 對齊符 public static void main(String[] args){ System.out.println(" "); } // \ 輸出一個斜杠 寫法: \\win11 // 第一個用作轉義符 第二個才是真正輸出的\ // 如果要輸出兩個 \ 寫法: \\\win11 // 想要輸出雙引號 “” 寫法: "老韓說:\"要好好學習\"" // \r 一個回車 public static void main(String[] args){ System.out.println("韓老師教育\r北京"); } // 輸出結果為:北京師教育 如果改為: public static void main(String[] args){ System.out.println("韓老師教育\r\n北京"); } // 輸出結果為:韓老師教育 // 北京
易犯錯誤(用cmd里的錯誤)
- 找不到文件
- 主類名和文件名不一致
- 缺少分號
- 英文與中文字元混在一起(非法字元)
- 拼寫錯誤?環境錯誤?(業務錯誤)
註釋(comment)
- 提高代碼可讀性(思想通過註釋表達出來)
- 幫助其他閱讀你代碼的人理解代碼
- 對你自己的程式負責任
代碼演示
// 單行註釋 /* 多行註釋 */ 細節: 註釋掉的代碼塊是不會被程式 (解釋機) 執行 多行註釋中不允許再嵌套多行註釋 有兩個或多個結尾字元!!!! javadoc 文檔註釋 基本格式: javadoc標簽 Javadoc -d 文件夾名 -xx -yy 文件.java (-xx和-yy就是標簽) /** * @author 王帥 * @version 1.0 */ public static void main(String[] args){ System.out.println(" "); }
Javadoc標簽彙總:
標簽 |
描述 |
示例 |
@author |
標識一個類的作者 |
@author description |
@deprecated |
指名一個過期的類或成員 |
@deprecated description |
{@docRoot} |
指明當前文檔根目錄的路徑 |
Directory Path |
@exception |
標誌一個類拋出的異常 |
@exception exception-name explanation |
{@inheritDoc} |
從直接父類繼承的註釋 |
Inherits a comment from the immediate surperclass. |
{@link} |
插入一個到另一個主題的鏈接 |
{@link name text} |
{@linkplain} |
插入一個到另一個主題的鏈接,但是該鏈接顯示純文本字體 |
Inserts an in-line link to another topic. |
@param |
說明一個方法的參數 |
@param parameter-name explanation |
@return |
說明返回值類型 |
@return explanation |
@see |
指定一個到另一個主題的鏈接 |
@see anchor |
@serial |
說明一個序列化屬性 |
@serial description |
@serialData |
說明通過writeObject( ) 和 writeExternal( )方法寫的數據 |
@serialData description |
@serialField |
說明一個ObjectStreamField組件 |
@serialField name type description |
@since |
標記當引入一個特定的變化時 |
@since release |
@throws |
和 @exception標簽一樣. |
The @throws tag has the same meaning as the @exception tag. |
{@value} |
顯示常量的值,該常量必須是static屬性。 |
Displays the value of a constant, which must be a static field. |
@version |
指定類的版本 |
@version info |
文檔註釋範例
import java.io.*; /** * 這個類演示了文檔註釋 * @author Ayan Amhed * @version 1.2 */ public class SquareNum { /** * This method returns the square of num. * This is a multiline description. You can use * as many lines as you like. * @param num The value to be squared. * @return num squared. */ public double square(double num) { return num * num; } /** * This method inputs a number from the user. * @return The value input as a double. * @exception IOException On input error. * @see IOException */ public double getNumber() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader inData = new BufferedReader(isr); String str; str = inData.readLine(); return (new Double(str)).doubleValue(); } /** * This method demonstrates square(). * @param args Unused. * @return Nothing. * @exception IOException On input error. * @see IOException */ public static void main(String args[]) throws IOException { SquareNum ob = new SquareNum(); double val; System.out.println("Enter value to be squared: "); val = ob.getNumber(); val = ob.square(val); System.out.println("Squared value is " + val); } }
Java代碼規範
- 類、方法的註釋要以Javadoc的方式來寫;
- 非Javadoc註釋是為了給代碼的維護者來(閱讀者)看;
- tab將選中代碼整體右移,shift+tab將選中代碼整體左移;
- 運算符和等號兩邊習慣加上兩個空格;
int n; int a = 10; int b = a + n;
- 源文件要用 UTF-8 存儲;
- Java代碼每一行的行寬儘量不要超過80個字元;
- 代碼編寫的 次行風格 和 行尾風格 。
import java.awt.*; import javax.swing.*; public class Circle99Frame extends JFrame { public static void main(String args[]){ JFrame frame=new Circle99Frame(); frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); frame.setSize(600,600); frame.setVisible(true); } public void paint( Graphics g){ g.drawString("circle 99",20,20); int x0=getSize().width/2; int y0=getSize().height/2; for(int r=0;r<getSize().height/2;r+=10){ g.setColor(getRandomColor()); g.drawOval(x0-r,y0-r,r*2,r*2); } } Color getRandomColor(){ return new Color( (int)(Math.random()*255),//random本身只產生(0~1)之間的小數, (int)(Math.random()*255), (int)(Math.random()*255) ); } } import java.awt.*; import javax.swing.*; public class Circle99Frame extends JFrame { public static void main(String args[]) { JFrame frame=new Circle99Frame(); frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); frame.setSize(600,600); frame.setVisible(true); } public void paint( Graphics g) { g.drawString("circle 99",20,20); int x0=getSize().width/2; int y0=getSize().height/2; for(int r=0;r<getSize().height/2;r+=10) { g.setColor(getRandomColor()); g.drawOval(x0-r,y0-r,r*2,r*2); } } Color getRandomColor() { return new Color( (int)(Math.random()*255),//random本身只產生(0~1)之間的小數, (int)(Math.random()*255), (int)(Math.random()*255) ); } }
變數
變數是程式的基本組成單位。
不論是用通過哪種高級語言編寫程式,變數都是基本單位。
變數基本要素
類型,名稱,數值
public static void main(String [] args){ int a=1; int b=3; b=89; System.out.println(a); System.out.println(b); }
變數的基本原理
變數的使用基本步驟
- 聲明變數
- 賦值 (把 60賦給a)
- 使用
- 輸出 (沒有輸出的程式是沒有意義的)
面向對象編程
用單獨的變數來解決問題不利於解決數據的管理
Java的設計者引入類與對象就是基於現有的問題新開發的一種手段和技術
class Cat{ // 屬性(成員變數)field String name; int age; String color; } //實例化一個貓類 public static void main(String [] args){ Cat cat1 = new Cat(); //用 cat1 來接受new的cat cat1.name = "小白"; cat1.age = 3; cat1.color = "白色"; Cat cat2 = new Cat(); cat2.name = "小黑"; cat2.age = 6; cat2.color = "黑色"; //訪問對象屬性 System.out.println("第一隻貓的信息"+cat1.name+" "+cat1.age+" "+cat1.color) }
理解類與對象
- 類是抽象的,概念的,比如人,貓。
- 對象是實例的,具體的,代表一個具體事物。
- 類是對象的模板,對象是類的實例。
對象在記憶體中的存在形式
數據一定有它對應地址
屬性的註意事項
- 屬性的定義語法詞變數:訪問修飾符、屬性類型、屬性名
class Person{ int age; String name; double str; boolean isPass; } public static void main(String [] args){ // 創建person對象 // p1是對象名(對象引用) // new Persom() 創建的對象空間(數據)才是真正的對象 Person p1 = new Person(); }