Java Object、Scanner、String 、生成jar包

生成jar包

一、如何生成jar包:java

  在eclipse中,選中要導出內容,右鍵export---->Java---->Jar File程序員

  在彈出的框中,選擇要生成的文件路徑,點擊finish數組

二、第三方Jar包:eclipse

  Jdk開發商是第一方、程序員做爲用戶是第二方,開源社區、組織或者其餘公司均可以認爲是第三方ide

  一旦將第三方的jar包導入到咱們的工程中來,就可使用第三方開發好的全部功能ui

三、導入第三方jar包:編碼

  一、在工程下新建一個目錄(專門用於存放第三方jar),命名爲libspa

  二、將下載好的第三方jar包,拷貝到lib目錄中code

  三、將導入的jar包添加到Build Path中(鼠標右鍵,選擇build path----> add to build path)對象

  四、看到奶瓶狀的標記出現,就說明該jar包中的全部類型能夠直接使用了

四、使用第三方jar包,查看原碼:

  一、使用鼠標右鍵,選擇Open declaration

  二、使用快捷鍵F3

  三、使用鍵盤ctrl + 鼠標左鍵

五、關聯源代碼:

  Attach Source ---->external File或者Folder---->找到原碼所在的目錄便可

Object

一、Object類是所類型的頂層父類,全部類型的類直接或者間接的父類,全部的類型中都含有Object類中全部的方法。
  class Animal{}
  class Dog extends Animal{}
二、隨意定義一個類型,不手動顯定義其父類,那麼這個類的父類是Object類
三、Object類的構造方法 Object()
  1.能夠本身建立對象
  2.讓子類訪問
  3.Object類在執行構造方法時,不去訪問本身的父類,由於沒父類了。

四、Object類的經常使用方法

  1.getClass()方法
    返回當前 對象的運行時類
    運行時類:真正建立對象所使用的那個子類類型。
    返回值:Class類型的對象。
  2.hashCode() 方法
    1.根據對象的狀況,生成的一個整數,就是哈希碼值,生成數字的方法 就是hashCode()
    2.注意事項
      同一個對象屢次調用hashCode方法,返回相同的整數。
  3.String toString()
    返回該對象的字符串表示。
    1.Object類型中,這個方法的實現,全類名+@+哈希碼值的十六進制表示
      getClass().getName()+"@"+Integer.toHexString(hashCode())
    2.打印對象,默認會調用toString()
    3.重寫的原則:返回該對象中的全部的成員變量的值(對象的屬性)
  4.boolean equals(Object obj)
    指示其餘某個對象是否與此對象「相等」。
    Object類中的equals方法比較是兩個對象的地址
    若是比較其它內容,須要重寫equals方法。
  5.== equals方法的區別
    1.兩種都是用於比較數據是否相等。
    2.不一樣點:
      1.比較內容不一樣:
        ==能夠比較任意數據類型,既能夠比較基本數據類型,也能夠比較引用數據類型。
        equals()只能比較引用數據類型。
      2.比較規則不一樣:
        ==在比較基本數據類型的時候,比較的是數據的值,比較引用數據類型時,比較的是地址值
        equals方法在重寫以前,比較是兩個對象的地址,在重寫以後,比較的是本身定的規則。

Scanner

一、Scanner就是一個掃描器, 能夠掃描指定設備的基本數據和字符串
二、構造方法
  Scanner(File source):掃描指定的文件
  Scanner(String path):掃描指定的路徑
  Scanner(InputStream source):掃描指定的輸入流
  System.in屬於InputStream類的對象,默認關聯鍵盤
三、錄入基本數據類型
  1. nextByte():獲取一個byte數據
    nextShort()
    nextInt()
    nextLong()
    nextFloat()
    nextDouble()
    nextBoolean()
  2.注意事項
    1.nextChar()沒有這個方法
    2.鍵盤錄入的是數據,不是java代碼,因此float類型的常量不須要加f.
    3.一次想錄入多個數據,可使用空格進行分隔
四、錄入字符串
  1.next(): 空格來分隔每一個字符串
  2.nextLine():換行來分隔字符串
五、Scanner注意事項:
  之後儘可能不要交叉使用空格和換行標誌分隔。

六、小問題  

  問題:當你調用完以空格做爲分隔符的方法以後,再調用一個以換行符爲分隔符的方法時,這個方法不會等待你繼續錄入,而是直接結束程序,若是打印返回的內容,就是一個空字符串。

  緣由:

  1、鍵盤錄入123以後,其實你錄入的是123+一個換行符,當使用nextInt方法以後,將123這三個字符解析成一個int類型的數字,獲取到內存的變量中,在Scanner對象中,留下了一個換行符,下次再調用nextLine,這個方法是以換行符做爲分隔符,在分隔符前面只剩下了一個空串,將空串返回,因此不須要等待用戶繼續錄入了。

  2、鍵盤錄入123以後,其實你錄入的是123+換行符,當使用nextInt方法以後,將123這個數字解析成一個int類型的數字,獲取到內存的變量中,在Scanner對象中,還剩一個換行符,再次調用nextInt方法時,發現只剩一個空串了,沒法解析成一個int類型的數據,只能等待用戶繼續錄入。因此不會出現上述問題。

  3、鍵盤錄入abc以後,其實你錄入的是abc+換行符,當你使用nextLine方法以後,將換行符前面的全部數據都解析成一個字符串,所以換行符前面就沒有任何須要解析的數據了,若是再次調用nextLine,只須要到換行符以後尋找,只能繼續等待用戶錄入了。(其實就是nextLine方法一碰到換行符就跳過了)

  解決方式:

  1、連續兩次調用nextLine,第一次會將空串略過,第二次就會等待用戶錄入

  2、建立兩個Scanner對象,新的Scanner對象中沒有上次錄入的數據,是乾淨的,因此不會影響下次的錄入。

  3、全部的錄入都以字符串的形式錄入到內存中,而後再進行數據類型之間的轉換

String

一、String就是一個字符串類型,屬於java.lang包,不須要導包
二、全部的字符串常量("helloworld","abc"),都屬於字符串對象
三、字符串的字面屬於常量,存儲在方法區的常量池中。
四、String類型是一個常量,在建立以後就沒法更改。日常見到的改變是從新賦值新地址
五、由於沒有提供set方法
六、String類型的構造方法
  1.String():建立一個空字符串
  2.String(String original):建立參數字符串的一個副本(參數字符串在常量池中,構造方法建立的字符串在堆內存中)。
  3.String(byte[] bytes) :將一個字節數組轉一個字符串
    將咱們不認識的字節數組,轉成了咱們認識的字符串,過程叫解碼。
    查詢的是當前平臺默認的編碼表。
  4.String(byte[] bytes, int offset, int length)
  5.String(char[] value):
  6.String(char[] value, int offset, int count)
七、String中經常使用的方法
  1.判斷功能
    boolean equals(Object anObject) :比較字符串自己
    boolean equalsIgnoreCase(String anotherString)
    boolean contains(CharSequence s)
    boolean startsWith(String prefix) 
    boolean endsWith(String suffix)
    boolean isEmpty()
  2.判斷功能練習
    模擬用戶登陸:
    正確的用戶名是admin,密碼是123
    鍵盤錄入用戶名和密碼,一共三次機會,若是錄入錯誤,前兩次提示還有幾回機會,
    最後一次提示"帳號已被鎖定"
    錄入正確,提示「登陸成功」

import java.util.Scanner;

/*
 * 模擬用戶登陸:
    正確用戶名是admin,密碼是123
    鍵盤錄入用戶名和密碼,一共有三次機會,若是錄入錯誤,前兩次提示還有幾回機會
    最後一次提示「登陸機會已經用完」
    錄入正確,提示「登陸成功」
 */
public class Demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = 3;
        boolean flag = true;
        while(flag){
            if(count>0) {
                System.out.println("請輸入用戶名:");
                String userName = sc.nextLine();
                if(userName.equals("admin")) {
                    System.out.println("請輸入密碼:");
                    String code = sc.nextLine();
                    if(code.equals("hao123.com")) {
                        System.out.println("登陸成功");
                        break;
                    }else {
                        count--;
                        System.out.println("密碼錯誤,還有"+count+"次機會,請從新輸入");
                    }
                }else {
                    count--;
                    System.out.println("用戶名錯誤,還有"+count+"次機會,請從新輸入");
                }
            }else {
                System.out.println("三次機會以用完,是否從新輸入?1:繼續,0:退出");
                int a = sc.nextInt();
                if(a==1) {
                    count = 3;
                }else{
                    break;
                }
            }
        }
        sc.close();
    }
}
練習

 

  3.String類型的獲取功能     int length()     char charAt(int index)     String substring(int beginIndex, int endIndex)     int indexOf(String str) "aabbacc"  4.String類型的轉換功能     byte[] getBytes(String charsetName)     char[] toCharArray()     String toUpperCase()     String toLowerCase()     String concat(String str)     static String valueOf()   5."i lOVe jAva"-->"I Love Java"     splite(" ")  6.String類型的其它的方法     String replace(char oldChar, char newChar)     String trim() " ab c "-->"abc" //去掉字符串左右兩邊的空格、製表符

相關文章
相關標籤/搜索