java學習筆記(菜鳥原創)

来源:http://www.cnblogs.com/lollipops/archive/2016/08/04/5738755.html
-Advertisement-
Play Games

本文是java學習隨手的筆記,分享非大家,吾本電腦專業大學僧一枚,參加研究生考試,因技術不過關,覆試pass了我,於是我來到一家菜鳥公司,拿著微薄的工資,吃著饅頭喝著涼水,苦練技術,因為相信技術可以成就夢想,於是日夜勤奮,堅持不懈,相信通過自己的努力,可以學有所長。造福一方,哈哈。 ...


搭建Java開發環境
使用開發工具開發Myeclipse
基礎核心:JAVASEEEME面向對象 API JVM.
JAVAEE是指java enterprise edition,java企業版,多用於企業級開發,包括web開發等等很多組建
JAVASE是指java standard edition,Java標準版,就是一般Java程式的開發就可以,可以看作是JAVAEE的子集

JVM(java virtual machine)源代碼myprogram.Java--(編譯器)二進位位元組碼myprogram.class--(解釋器)myprogram
JDK:(JAVA開發工具包)
JRE:(JAVA運行時環境)JDK包括JRE,JRE包括JVM

Java開發環境搭建
第一步:安裝JDK
第二部:配置環境變數 java-home 配置JDK安裝路徑  path(最前面前後路徑用;隔開) 配置JDK命令文件bin路徑 classpath(.表示當前路徑,;表示路徑隔開lib路徑)配置類庫文件lib的位置

使用記事本編寫java程式
使用javac命令編譯java源代碼為二進位位元組碼文件.class,使用解釋interpretor器解釋.class文件。
javac編譯器命令後要跟擴展名,java命令後不能跟擴展名.class

IDE是一套工具,集成開發環境,包括eclipse myeclipse netbean 等將程式開發環境和程式調試環境集合在一起。
使用eclipse進行程式的開發
1創建java項目,2創建程式包,3編寫java緣程式 4運行Java程式
創建一個工程,包括源代碼,圖片,視頻,腳本等東西。創建包是為了方便代碼的管理。例如名字相同的可以放在不同的包中。包名一般命名為項目名的功能變數名稱的反向,例如com.imooc
pubic 修飾符class關鍵字,helloworld 與源代碼文件名字要一致
public static void是必須的都一樣,main是程式的入口。
myeclipse是對eclipse的擴展,是一個十分優秀的用於開發java,javaee的eclipse插件集合

java語言對大小寫敏感。System.out.println("welcome to imooc");

程式的移植,項目的導入和導出的操作。找到項目properties屬性,有location可知道項目的存儲位置,複製粘貼就導出了,然後導入是,視窗import--general--existing project--選擇項目位置就倒入了進來。

常用的技巧:
1、多練,企業需要動手能力強的,嘴皮子再溜不能寫也是扯淡,
2、多問,網站上論壇上去避免走彎路,拒絕鑽牛角尖,節省時間,
3、多動手調試錯誤,會debug,複習和總結。
4、每寫完一個小知識點就做一個總結,每周小總結,每月進行大總結,記筆記犯過的錯誤,博客,鞏固學過的知識點,(技術型太強,知識點非常的多,所以需要總結鞏固。)
學雖容易,學好不易,且學且珍惜。

java關鍵字try catch finally throw  throws true char false boolean int short long float double if else switch case break continue default  for private protected public implements extends interface super class static void main null new package byte validate class instanceof  synchronized(同步)import
另外java區分大小寫,所以Void 就不是關鍵字。

標識符:就是用於給JAVA程式中變數、類、方法等命名的符號,其規則:
1.  標識符可以由字母、數字、下劃線(_)、美元符($)組成,但不能包含 @、%、空格等其它特殊字元,不能以數字開頭。譬如:123name 就是不合法滴
 2.  標識符不能是 Java 關鍵字和保留字( Java 預留的關鍵字,以後的升級版本中有可能作為關鍵字),但可以包含關鍵字和保留字。如:不可以使用 void 作為標識符,但是 Myvoid 可以
 3.  標識符是嚴格區分大小寫的。 所以涅,一定要分清楚 imooc 和 IMooc 是兩個不同的標識符哦!
 4.  標識符的命名最好能反映出其作用,做到見名知意。
優秀攻城師的習慣:
1、變數名由多單片語成時,第一個單詞的首字母小寫,其後單詞的首字母大寫,俗稱駱駝式命名法(也稱駝峰命名法),如 myAge
2、變數命名時,儘量簡短且能清楚的表達變數的作用,做到見名知意。如:定義變數名 stuName 保存“學生姓名”信息
PS: Java 變數名的長度沒有限制,但 Java 語言是區分大小寫的,所以 price 和 Price 是兩個完全不同的變數哦!

Java 語言是一種強類型語言。通俗點說就是,在 Java 中存儲的數據都是有類型的,而且必須在編譯時就確定其類型。整型浮點型布爾型,類,介面,數組。int 4,char 2 boolean 1 float 4 double 8 強制轉化時,數值上並未進行四捨五入,而是直接將小數位截斷。自動轉換時,int可以自動轉為double,反之不可,因為double是八位,int是4位。3轉為3.0。

常量,我們可以理解為是一種特殊的變數,它的值被設定後,在程式運行過程中不允許改變。語法:final 常量名 = 值;程式中使用常量可以提高代碼的可維護性。伙計們註意啦:常量名一般使用大寫字元。
我們可以通過 javadoc 命令從文檔註釋中提取內容,生成程式的 API 幫助文檔。javadoc -d doc Demon03.java!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!文檔註釋!!!!!!!!!!!!!!
一定要註意哦!自增和自減運算符只能用於操作變數,不能直接用於操作數值或常量!例如 5++ 、 8-- 等寫法都是錯誤滴!

PS:% 用來求餘數,也稱為”取模運算符“
1、  > 、 < 、 >= 、 <= 只支持左右兩邊操作數是數值類型
2、  == 、 != 兩邊的操作數既可以是數值類型,也可以是引用類型
比較運算符用於判斷兩個數據的大小,例如:大於、等於、不等於。比較的結果是一個布爾值( true 或 false )。
String sex = "女";
sex.equals("男");
import java.util.Arrays;
public int sort(int [] scores){
Arrays.sort(scores);
System.out.println(Array.toString(scores));
}

 重載如果同一個類中包含了兩個或兩個以上方法名相同、方法參數的個數、順序或類型不同的方法,則稱為方法的,也可稱該方法被重載了。
判斷方法重載的依據:
1、 必須是在同一個類中
2、 方法名相同
3、 方法參數的個數、順序或類型不同
4、 與方法的修飾符或返回值沒有關係

構造方法
1、使用new+構造方法創建一個新的對象
2、構造方法是定義在java類中的一個用來初始化對象的方法,其作用是用來創建和初始化一個對象,構造方法必須與類同名且沒有返回值。
3、格式為,public 構造方法名(參數){內容}
4、當沒有指定的構造方法時,系統會自動的調用預設的構造方法,並賦初值
5、當有指定的構造方法,無論是有參,無參的構造方法,都不會自動添加無參的構造方法。比如定義了一個有參構造方法,而調用了無參的構造方法,則行不通。
6、有參和無參構造方法就是方法的重載
7、避免有參構造方法傳值不安全的問題。

靜態變數static:同一類的多個對象共用同一個成員,static修飾的成員成為靜態成員,或類成員,他屬於整個類所有,而不是某個對象所有,即被類的所有對象所共用,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問,鑒於其特殊性推薦使用類名訪問。靜態成員屬於整個類,當系統第一次使用該類時,就會為其分配記憶體空間直到該類被卸載才會進行資源回收,可被修改哦哦/

靜態方法可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。如果希望在靜態方法中調用非靜態變數,可以通過創建類的對象。然後通過對象訪問非靜態變數。靜態方法可以直接被類調用,非靜態方法可以直接被對象調用。
public static void print(){
HelloWorld hello = new HelloWorld();
System.out.println("歡迎你"+hello.name+"|");
System.out.println("愛好"+hobby+“、”);
}
普通成員方法中,則可以直接訪問同類的非靜態變數和靜態變數。靜態方法中不能調用非靜態方法,需要通過對象來訪問非靜態成員。
通過輸出結果,我們可以看到,程式運行時靜態初始化塊最先被執行,然後執行普通初始化塊,最後才執行構造方法。由於靜態初始化塊只在類載入時執行一次,所以當再次創建對象 hello2 時並未執行靜態初始化塊.

面向對象三大特性,封裝,繼承,多態。
封裝屬性,setter\getter方法,對象調用setter\getter方法來賦值。

包的概念,,更好的管理java類,解決同名文件衝突(區分同名的兩個類)
包的定義,package 包名,必須放在java源程式的第一行,包名間可以使用“.”號隔開,eg:com.imooc.MyClass,區分層次
系統中的包:
java.(功能).(類)
java.lang(類)包含java語言基礎的類String Integer Double /Math.......
util包含java語言中各種工具類Scander,Date,Calendar
io包含輸入輸出相關功能的類 每多一個點功能更加的詳細。
import com.java.util.MyClass.
包的規範是全小寫字母拼寫。可以載入某個包下的所有文件,也可以載入某個具體包下的所有文件。

答:什麼是內部類呢內部類的主要作用如下:
1. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類
2. 內部類的方法可以直接訪問外部類的所有數據,包括私有的數據
3. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便

靜態內部類是 static 修飾的內部類,這種內部類的特點是:
1、 靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問
2、 如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過“成員名”直接調用外部類的靜態成員
3、 創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類();

方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和 static 修飾符。

繼承,extends,繼承子類方法的重寫。
繼承的初始化順序:初始化父類再初始化子類,先執行初始化對象中的屬性,再執行構造方法中的初始化。

final修飾的類不可以被繼承,final 修飾的方法不可以被重寫,final修飾的已經賦初值的屬性不可以被更改包括在構造方法中。而沒有被賦值的final屬性可以在構造方法中被賦值。如果final修飾後的屬性沒有賦初值,那麼系統會報錯。
在方法中的局部變數被final修飾後也不可以被更改,也就稱之為常量。

java中的super關鍵字:在對象的內部使用,可以代表父類對象,訪問父類對象的屬性就super.age,訪問父類的方法,super.eat()。在子類的構造方法中隱式調用了父類的構造方法。
如果子類構造方法中沒有顯示調用父類構造方法,則隱式super()調用。
如果顯示調用父類的構造方法,則放在子類構造方法的第一行。
如果在父類定義有參數的構造方法,在子類中第一行必須有super()方法,因為沒有super會隱式調用預設構造方法,所以。。。。。


Object類
1、toString()方法,返回對象是哈希code碼,(對象地址字元串)可以通過重寫toString方法來顯示對象的屬性。
2、equals方法,比較的是對象的引用是否占用同一塊記憶體地址。一般比較的是值是否相等,所以要重新equals方法。
Dog dog = new Dog(),是new 一個Dog類的構造方法創建一個對象,將對象付給dog,其實dog不是我們創建的對象,他是我們對象的地址,也就叫做對象的引用。==也是比較的引用的值是否相同。

多態:
1、引用多態
父類的引用可以指向本類的對象
父類的引用還可以指向子類的對象
子類的引用不可以指向父類的對象
2、方法多態
創建本類對象時,調用的方法為本類方法
創建子類對象時,如果有重寫調用方法是子類的對象,如果沒有重寫就調用父類。
不可以用父類的引用調用子類獨有的方法。


引用類型轉換:
向上無風險,向下的有風險,如何規避風險,那麼就用instanceof修飾符避免類型轉換的安全性問題。判斷是其子類型。

抽象類
abstract修飾,public abstract class ,public abstract void 方法。
抽象方法只聲明,不寫內容。
含有抽象方法的類叫抽象類,繼承抽象類的子類可以定義其他方法。

介面 可以實現多個介面。
一般命名首字母大寫
修飾符必須是public,產量和方法都是抽象方法。
繼承了抽象類,必須實現抽象類的抽象方法,調用了介面,必須實現介面的抽象方法。
繼承父類要在調用介面之前。

異常,thread (erro.exception(runtimeexception))

String 對象創建後則不能被修改,所謂的修改其實就是創建了新的對象,所指向的記憶體空間不同,
一旦一個字元串在記憶體中創建,則這個字元串將不可改變。如果需要一個可以改變的字元串,我們可以是用StringBuffer或者StringBuilder。每次new一個字元串就是產生一個新的對象,即便兩個字元串的內容相同,使用“==”比較只是比較他們的引用或者引用的地址。比較內容要用equals

使用 substring(beginIndex , endIndex) 進行字元串截取時,包括 beginIndex 位置的字元,不包括 endIndex 位置的字元

使用 indexOf 進行字元或字元串查找時,如果匹配返回位置索引;如果沒有匹配結果,返回 -1

字元串 str 中字元的索引從0開始,範圍為 0 到 str.length()-1
toLowerCase()//將字元串轉換為小寫
charAt()//獲取索引位置為1的字元
getBytes()//將字元串轉換為byte[].
 
基本類型和包裝類之間的轉換,double b =87.6  Double a = new Double(b); Double a = b;
自動裝箱,手動裝箱,自動拆箱,手動拆箱。double c = a.doubleValue();  double d = a;

基本類型和字元串之間的轉換:Double.toString(a);Sg.valueof(a);Double.parseDouble(str);Double.valueof(str);

java集合框架:collection (list(arraylist) queue(linkedlist) set(hashset))map(hashmap)


Class類,萬事萬物皆對象,靜態的類和成員是對象,普通的數據類型是不是對象

127.0.0.1本地迴環地址 MySQL -uroot -p -P -h127.0.0.1

我:
String Buffer append 和String+之間的區別:
我:
StringBuffer的append方法的在記憶體中是放在一起的,+並不放在一起


資料庫的自定義函數聲明,存儲過程的聲明,存儲引擎的認識
還有各種鏈接,內連接,左外鏈接,右外鏈接,還有各種子查詢。

Map 泛型
Oracle 郵箱為qq郵箱,密碼為SHAOke12345

控制層的Action 的操作,就是要把Dao中的各個方法封裝成一個Action類
然後再主方法中進行調用這個Action類,來調用各個函數,比較的方便。











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

-Advertisement-
Play Games
更多相關文章
  • 1、基本思想:設無向連通網為G=(V, E),令G的最小生成樹為T=(U, TE),其初態為U=V,TE={ },然後,按照邊的權值由小到大的順序,考察G的邊集E中的各條邊。若被考察的邊的兩個頂點屬於T的兩個不同的連通分量,則將此邊作為最小生成樹的邊加入到T中,同時把兩個連通分量連接為一個連通分量; ...
  • 所謂最小乘積生成樹,即對於一個無向連通圖的每一條邊均有兩個權值xi,yi,在圖中找一顆生成樹,使得Σxi*Σyi取最小值。 直接處理問題較為棘手,但每條邊的權值可以描述為一個二元組(xi,yi),這也就不難想到將生成樹轉化為平面內的點,x代表Σxi,y代表Σyi(註意這裡的xi,yi指的是在生成樹中 ...
  • 原文:http://www.cnblogs.com/san-fu-su/p/5737984.html C裡面沒有垃圾回收機制,有時候你申請了動態記憶體卻忘記釋放,這就尷尬了(你的程式扮演了強盜角色,有借有還才是好孩子)。當你想找出記憶體泄露的地方時,有的投入海量的代碼中,頭痛不已。還好GNU C庫提供了 ...
  • 最近在做統計錢的計算時遇到的一個需求,需要將一個大類別下的每一種錢進行特定的運算然後獲得六年的錢,最後將這些錢按照年份進行彙總,獲得總得大類型的六年的錢,在這個過程中採用了這種方法,每次算得錢放在map中,然後將map進行合併,寫篇隨筆mark下。 public class CombineMap { ...
  • Obstack介紹 Obstack初始化 在Obstack中申請對象 釋放對象 申請growing object 獲取Obstack狀態 數據對齊 以下是來自wiki對obstack的介紹: Obstack是C標準庫裡面對記憶體管理的GNU擴展(實際上就是GNU C library了)。Obstack ...
  • http://user.qzone.qq.com/1282179846/blog/1470248763 引入一個簡單的例子: 1/關鍵字extends表示繼承。表明正在構造一個新類派生於一個已經存在的類。已經存在的類稱為超類/基類/或者父類;新類稱為子類/派生類/或者孩子類。 子類擁有的功能比超類更 ...
  • I have a simple test module: print("fish")print("sticks")It runs pretty fast as expected, wether i use Run as or Debugg as does not matter. But as soo ...
  • 遞歸測試 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...