java基礎筆記

1,Java開發環境搭建

經常使用DOS命令

    d:           訪問D盤java

    cd + 文件名    訪問該文件mysql

cd..          訪問上一級sql

cd\         返回到當前盤符根目錄下數據庫

cla        清除屏幕apache

dir        顯示當前目錄下的文件和子目錄信息api

 

Java開發環境(JDK)

如何校驗JDK安裝是否成功的方法。你無需瞭解爲何要這麼作,只須要嚴格按照下面的步驟操做便可:數組

  1. 在鍵盤上按:WIN+R鍵,這時會彈出運行窗口;
  2. 在運行窗口中輸入:CMD,按「肯定」按鈕,這時會彈出DOS窗口;
  3. 在DOS窗口中輸入:JDK安裝路徑\bin\java.exe。

 

一些經常使用的存儲單位:安全

1B(字節) = 8bit框架

1KB = 1024B工具

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

 

 

 

 

 

 

 

 

 

 

 

 

 

須要注意:

(1)       Java 嚴格區分大小寫

(2)       main 是程序的主方法,程序入口

(3)       a++     ++,--運算符後置時,先使用變量a原有值參與運算操做,運算操做完成後,變量a的值自增1或者自減1;

++a        ++,--運算符前置時,先將變量a的值自增1或者自減1,而後使用更新後的新值參與運算操做

&&還具備短路的功能,即若是第一個表達式爲false,則再也不計算第二個表達式

(4)       【cmd下javac 錯誤: 編碼GBK的不可映射字符】

在cmd窗口下執行javac命令是,寫爲javac -encoding utf-8 -d .  文件名

-encoding utf-8 -d .

(5)       【輸出那裏,不要隨便空格】

(6)       引用數據類型(如Scanner):

1導包:import java.util.Scanner;

2建立對象實例:Scanner sc = new Scanner(System.in);

3調用方法:

                   int  i = sc.nextInt(); 用來接收控制檯錄入的數字

         String s = sc.next(); 用來接收控制檯錄入的字符串

(7)       continue語句用在循環語句中,它的做用是終止(跳過)本次循環,執行下一次循環。break結束當前循環; contiune 跳出本次循環

(8)       switch 沒有break的話,會按順序一直執行

(9)       數字中包含7  :  String.valueOf(a).contains("7")

(10)   自定義的引用類型,每次new 都會在堆中開闢一片內存空間

(11)   數組 length     ArrayList 集合 .size( )  (數據任意的添加和刪除)  字符串 .length( )

(12)   強制類型轉型 int a = 9; char b = (char)a;

1)         Eclipse 快捷鍵:

2)         內容輔助鍵  Alt+/

3)         自動補齊main方法  main 而後 Alt+/

4)         自動補齊輸出語句  syso 而後 Alt+/

5)         格式化Ctrl+Shift+f

6)         代碼區域右鍵 -- Source – Format

7)         自動導包: Ctrl+Shift+o

8)         若是當前類在多個包中都存在,這時候,使用Ctrl+shift+o,進行選擇一個包導入便可。

9)         註釋

10)     單行註釋

11)     加註釋: 先選中須要註釋的內容,而後 Ctrl+/

12)     取消註釋:先選中須要取消註釋的內容, 而後 Ctrl+/

13)     多行註釋

14)     加註釋: 先選中須要註釋的內容,而後 Ctrl+Shift+/

15)     取消註釋:先選中須要取消註釋的內容, 而後 Ctrl+Shift+\

(13)    Ctrl + alt + 下箭頭    複製這行代碼

(14)                      //調用父類已經存在的功能使用super  super.showNum();    在子類重寫這個(和父類的方法是同一個名字)的方法時,在方法類加上(super.方法名() )

(15)   多態:普通,抽象,接口。  運行的都是子類定義的方法

成員變量:定義和引用都看父類

方法運行看子類,可是父類也要有定義

靜態方法看父類      靜態屬於類,和對象無關

(16)   類實現(implements)接口,接口繼承(extends)多個接口

(17)   每一個類都有它的構造方法

(18)   Ctrl +t  查看繼承關係

(19)   Final 不可變  不能被繼承  除構造方法 都能修飾

(20)   類的方法中沒有 非靜態    就得加靜態static

在類裏面,若是方法沒有涉及到 成員變量,那就應該加靜態 static

靜態變量或方法  直接用接口或者類名 調用

(21)   導包  ctrl shift + o          類的全名帶着包

(22)   Protected 權限的類  中的方法 或 參數,只能被子類在子類中用

(23)   咱們想在類中定義一個靜態常量,一般使用public static final修飾的變量來完成定義。此時變量名用所有大寫

如:public static final 數據類型 變量名 = 值;

        public static final String COMPANY_NAME = "傳智播客";

使用類的靜態成員時,不須要建立對象,直接使用類名來訪問便可

如:Company.COMPANY_NAME

(24)   Instanceof      如: obj  instanceof Person    判斷obj是否爲Person 類型

(25)   Char  作運算 都是先轉INT  如:97  = ‘A’    char 記得單引號 ‘  ’

(26)   StringBuffer 線程安全,但速度慢。因此,咱們用StringBuilder  速度快,無論安全

(27)   String 的一些用法:

String1.contains("end")        String1中是否包含end

str1.indexOf(str2)              str1 中包含 str2 ,str2 在 str1 中的索引位置

(28)   正則:   ^ 表示「異或」     . 表示任意字符

Matches    split    replaceAll()

\\  表示把後面的 符號  轉爲 正常表示的符號

如:. 在正則中表示任意字符,\\ . 則僅表示爲一個點

(29)   有異常     ctrl  1

(30)   毫秒  1000毫秒 = 1秒

毫秒到天數的換算: 毫秒/1000/60(一分鐘60秒)/60(一小時60分鐘)/24(一天24小時)

轉換爲毫秒值                   Date date = new Date();

                   long time = date.getTime();

(31)   轉 string      直接 String  s  =  I + 「 」   就能夠了

也能夠用                    String s3 = String.valueOf(a);

                                   String s2 = Integer.toString(i,2);

String 轉 char        char[] c= s.toCharArray();

String 轉 byte        「sfsfsf」.getBytes();

(32)   Integer  i = 127; Integer  j = 127;  這個,若是是127之內的數字,虛擬機不會新new 一個對象,而是讓 j = i

若是是128及以上的數字,就會從新 new 出一個對象

 

(33)   System.arraycopy(arr1, 2, arr2, 1,3);

複製數組:把 arr1 的元素從索引爲2的開始,複製到arr2的索引1的後面,複製3個

 

(34)   集合存對象的時候:當打印array.get[i] 時,實際上打印的是array.get[i] 這個對象的.toString( )    咱們能夠在這個對象的類中,改寫toString( )

(35)    加強for循環     For( int I : arr )   遍歷arr 數組,不改數據

(36)   泛型:像ArrayList<String>  arr = new ArrayList<String>(); 這種,後面須要指明類型的

(37)   迭代器:itrator   ollection coll = new ArrayList();   Iterator it = coll.iterator();

(38)   泛型的通配符   <?>     限定繼承的父類(上限) <?  Extends  Person >

限定該子類的父類(下限) <?  Super  Person >

(39)   數組操做:    int[]  i  =  {12,4,34,67,3,43};

String  s = Arrays.toString(i);

(40)   Set<String> set = new HashSet<String>();

Set 無序,無重複元素,只能用 迭代器 和加強for 循環 來遍歷

(41)   String  大小寫轉換      String start = sWord[i].substring(0, 1).toUpperCase();

                            String end = sWord[i].substring(1).toLowerCase();

(42)   可變參數(本質是數組),隨便傳幾個:Function(int…a){    }

一個方法中只能有一個可變參數;可變參數只能放在參數列表最後

(43)   異常:     throw  new  RuntimeException("run");

RuntimeException 不用在方法的尾巴上加 throws RuntimeException 了

如:public  static  int  get(int[] arr) throws Exception{    }

(44)   遞歸: 構造方法禁止遞歸

(45)   字節流:換行:\r\n  (寫在上一句的結尾,或者,下一句的開頭)

字符流:換行:FileWriter   fw.newLine();  (具備平臺無關性)

(46)   字節流的異常處理:

                   FileOutputStream fos = null;

                  try{

                            fos = new FileOutputStream("d:\\a.txt");       

                            fos.write('p');           

                            byte[] b = "asdf".getBytes();

                            fos.write(b);

                   }catch(IOException ex){

                            System.out.println(ex);

                            throw new RuntimeException("文件寫入失敗");

                   }finally{

                            try {

                                     if(fos!=null)

                                               fos.close();

                            } catch (IOException e) {

                                     throw new RuntimeException("關閉資源失敗");

                            }

                   }

(47)   fos = new FileOutputStream("d:\\a.txt",true);          給該文本文件續寫數據

fos.write('p');  

(48)            轉換嗎?轉換流。InputStreamReader OutputStreamWriter

         高效嗎?緩衝區對象。BufferedXXX

InputStream

       FileInputStream

       BufferedInputStream

 

OuputStream

   FileOutputStream

   BufferedOuputStream

 

Writer

  OutputStreamWriter

      FileWriter                      à fw.flush();

      BufferedWriter

 

Reader

         InputStreamReader

     FileReader

         BufferedReader      à 特有功能:br.readLine()  能夠讀出文件的一行

 

(49)   靜態方法不容許 訪問 非靜態。靜態方法裏面不能寫,this,super

(50)   MySQL    auto_increment  自動增加

(51)    

         JDBC操做數據庫的步驟

         1.註冊驅動

             告知JVM使用的是哪個數據庫的驅動

                   Class.forName("com.mysql.jdbc.Driver");

         2.得到鏈接

            使用JDBC中的類,完成對MySQL數據庫的鏈接

                   url:"jdbc:mysql://localhost:3306/day07"

            Connection con = DriverManager.getConnection(url, username, password);

         3.得到語句執行平臺

           經過鏈接對象獲取對SQL語句的執行者對象

            PreparedStatement pst =  con.prepareStatement(sql);

         4.執行sql語句

           使用執行者對象,向數據庫執行SQL語句

           獲取到數據庫的執行後的結果

             ResultSet rs = pst.executeQuery();  或者 pst.executeUpdate();

         5.處理結果

                   rs.close();

                    stat.close();

                    con.close();

         6.釋放資源  一堆close()

 

使用 properties 配置時,該文件要放在src 下面

(52)   Alt + shift + m  把抽取的代碼放進一個方法中

(53)   Ctrl + 2  調用的一個新的方法,左邊「  類名  本身取的名字「   會自動出現

(54)   用 resourceBundle 取properties 文件中的值,properties 的key命名首字母小寫

塊編輯   alt + shift + a      全變大寫  Ctrl + shift + x   全變小寫  Ctrl + shift + y

(55)   Class  裏面的常量  命名要所有大寫

(56)   127.0.0.1   本機地址

(57)   Tomcat 部署

發佈:在底下server部分中,右鍵選  add and remove

(58)    

(59)    

(60)    

(61)    

(62)    

(63)    

(64)    

(65)    

(66)    

(67)    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2-----------------數據庫鏈接-----------------------------

JDBC(配置文件àJDBCUtils類鏈接數據庫à使用JDBCUtils操做)

導包:mysql-connector-java-5.1.39-bin.jar

步驟一:建立Java項目,引入mysql的驅動包.

步驟二:編寫程序

步驟三:註冊驅動

步驟四:得到鏈接

步驟五:執行SQL

步驟六:釋放資源

 

 

配置文件 (jdbc.properties)

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql:///day07

     (或url=jdbc:mysql://localhost:3306/base1)

username=root

password=root

步驟:註冊驅動à獲取鏈接à釋放驅動

 

 

JDBCUtils

1,定義

static final String DRIVERCLASS;

    static final String URL;

    static final String USERNAME;

    static final String PASSWORD;

2,jdbc.properties獲取數據

    static{

       //獲取數據

       ResourceBundle rb = ResourceBundle.getBundle("jdbc");

       DRIVERCLASS = rb.getString("driverClassName");

       URL = rb.getString("url");

       USERNAME = rb.getString("username");

       PASSWORD = rb.getString("password");  

    }

3獲取驅動

static{

       try {

           //獲取驅動

           Class.forName(DRIVERCLASS);

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       }

    }

4鏈接數據庫

    public static Connection getConnection(){

       try{

           //鏈接數據庫

           Return DriverManager.getConnection(URL,USERNAME,PASSWORD);

       }catch(Exception ex){

           System.out.println(ex+".222");

           throw new RuntimeException();

       }

    }

5,釋放鏈接,關閉

    /**

     * 釋放鏈接,關閉

     * @param con

     * @param pre

     * @param rs

     */

    public static void close(Connection con,PreparedStatement pre,ResultSet rs){

       conClose(con);

       preClose(pre);

       reClose(rs);

    }

 

    /**

     * 釋放Connection鏈接      (其餘兩個與這個相似)

     * @param con

     */

    public static void conClose(Connection con){

       if(con != null){

           try{

              con.close();

           }catch(Exception ex){

              ex.printStackTrace();

           }

       }

    }

 

 

測試:

           Connection con = JDBCUtils.getConnection();

           String sql = "select * from student";

        PreparedStatement    pre = con.prepareStatement(sql);

           ResultSet re = pre.executeQuery();

           while(re.next()){

              System.out.println(re.getString("name"));

            }

 

 

 

 

 

 

鏈接池操做(經常使用鏈接池:DBCP,C3P0)

DBCP:(理解) apache組織

 

 

 

 

1.導入jar包:commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

        2.使用api

            a.硬編碼

                    //建立鏈接池

                    BasicDataSource ds = new BasicDataSource();

                   

                    //配置信息

                    ds.setDriverClassName("com.mysql.jdbc.Driver");

                    ds.setUrl("jdbc:mysql:///day07");

                    ds.setUsername("root");

                    ds.setPassword("1234");

            b.配置文件

                    實現編寫一個properties文件

                    //存放配置文件

                    Properties prop = new Properties();

                    prop.load(new FileInputStream("src/dbcp.properties"));

                    //設置

//prop.setProperty("driverClassName","com.mysql.jdbc.Driver"); 

     //建立鏈接池

      DataSource ds = new BasicDataSourceFactory().createDataSource(prop);

 

C3P0

 

導包: c3p0-0.9.1.2.jar

  ComboPooledDataSource bs = new ComboPooledDataSource("mydemo"); 

       Connection conn = bs.getConnection();

       String sql = "insert into student values(?,?)";

       PreparedStatement pre = conn.prepareStatement(sql);

       pre.setInt(1,8);

       pre.setString(2, "bob");

       int i = pre.executeUpdate();

       System.out.println(i);

配置文件:c3p0-config.xml

<c3p0-config>

    <!-- 默認配置,若是沒有指定則使用這個配置 -->

    <default-config>

       <!-- 基本配置 -->

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>

       <property name="user">root</property>

       <property name="password">root</property>

   

       <!--擴展配置-->

       <property name="checkoutTimeout">30000</property>

       <property name="idleConnectionTestPeriod">30</property>

        <property name="initialPoolSize">10</property>

       <property name="maxIdleTime">30</property>

       <property name="maxPoolSize">100</property>

       <property name="minPoolSize">10</property>

       <property name="maxStatements">200</property>

    </default-config>

   

    <!-- 命名的配置 -->

    <named-config name="mydemo">

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>

       <property name="user">root</property>

       <property name="password">root</property>

      

       <!-- 若是池中數據鏈接不夠時一次增加多少個 -->

       <property name="acquireIncrement">5</property>

       <property name="initialPoolSize">20</property>

       <property name="minPoolSize">10</property>

       <property name="maxPoolSize">40</property>

       <property name="maxStatements">20</property>

       <property name="maxStatementsPerConnection">5</property>

    </named-config>

</c3p0-config>

 

 

 

DBUtils QueryRunner  QueryRunner

update(String sql, Object... params) ,執行更新數據

query(String sql, ResultSetHandler<T> rsh, Object... params) ,執行查詢

         重要的結果集處理類:BeanHandler,BeanListHandler,MapListHandler,ScalarHandler

         closeQuietly(Connection conn) 關閉鏈接,若是有異常try後不拋。

         是apache組織的一個工具類,jdbc的框架,更方便咱們使用

         使用步驟:

                   1.導入jar包(commons-dbutils-1.4.jar)

                   2.建立一個queryrunner類

                     queryrunner做用:操做sql語句

                                     構造方法:

                                               new QueryRunner(Datasource ds);

                   3.編寫sql

                   4.執行sql

                            query(..):執行r操做

                            update(...):執行cud操做

相關文章
相關標籤/搜索