1. 程式人生 > >學習筆記1-常用類與異常處理

學習筆記1-常用類與異常處理

JDK常見包

java.lang ——包含一些Java語言的核心類,如StringMathIntegerSystemExceptionThread,提供常用功能。在java.lang包中還有一個子包:java.lang.reflect用於實現java類的反射機制。這個包是JVM在程式中自動匯入的包         

⑵ java.awt —— 包含了構成抽象視窗工具集(abstract window toolkits)的多個類,這些類被用來構建和管理應用程式的圖形使用者介面(GUI)

⑶ avax.swing——此包用於建立圖形使用者介面,此包中的元件相對於java.awt

包而言是輕量級元件。

java.applet——包含applet執行所需的一些類。

java.net——包含與網路相關的類。如SocketURL

java.io —— 包含能提供多種輸入/輸出功能的類。

java.util——包含一些實用工具類,如日期類、集合類。

JDK中還有很多其他的包,如用於資料庫程式設計的java.sql包,用於編寫網路程式的java.rmi(Remote Method Invocation)。另外,javax.*包是對基本包的擴充套件,包括用於編寫GUI程式的javax. swing包,以及用於編寫聲音程式的javax. sound包等·

JDK的所有包中的類構成了

java類庫,或者叫做J2SE APIjava應用程式的編寫都依賴於J2SE API

Object

equals()

Ø僅當被比較的兩個引用變數指向同一物件時,equals()方法才返fpl true

Ø許多Java類都覆蓋了這個方法,如java.io.File, .java.util.Date,java.lang.String、包裝類等。比較規則為:如果兩個物件的型別一致,並且內容一致,則返回true

hashCode():

Ø返回物件的雜湊碼值

ØHashTableHashMap會根據物件的雜湊碼值來決定它的存放位置

Ø為了使程式更健壯,在編寫Java類時要養成以下程式設計習慣

q如果Java類重定義了equals()方法,那麼這個類也必須重定義hashCode()方法,並且保證當兩個物件用equals()方法比較的結果為true時,這兩個物件的hashCode()方法的返回值也相等。

q如果Java類實現了Comparable介面,那麼應重定義compareTo(), equals()hashCode()方法,保證compareTo ()equals()方法採用相同的比較規則來比較兩個物件是否相等,並且保證當兩個物件用equals()方法比較的結果為true時,這兩個物件的hashCade()方法的返回值相等。

toString():

Ø返回當前物件的字串表示,格式為“完整類名@物件的十六進位制雜湊碼”

Ø許多類,如StringStringBuffer和包裝類都覆蓋了toString()方法,返回具有實際意義的內容

finalize():

Ø對於一個已經不被任何引用變數引用的物件,當垃圾回收器準備回收該物件所佔用的記憶體時,將自動呼叫該物件的finalize()方法。

String

ØString類用來操作字串,可以把任意物件和陣列轉化成字串

ØString是字串常量。String的操作都是改變賦值地址而不是改變值操作。

==”與equals的區別:==”對於兩個物件的地址值作比較是否相等,Equals 判斷兩個物件的內容是否相等

String類的方法

1,獲取

1,獲取字串的長度:length();

2,指定位置的字元。Char charAt(int index);

3,獲取指定字元的位置。索引不存在返回-1,所以通過返回值-1來判斷一個字元在不在的情況。

int indexOf(int ch);int indexOf(int ch,int fromIndex);

int indexOf(String str);int indexOf(String str,int fromIndex);

int lastIndexOf(int ch);int lastIndexOf(int ch,int fromIndex);

int lastIndexOf(String str);int lastIndexOf(String str,int fromIndex);

4,獲取子串。

String substring(int start);//start位開始,到length()-1為止。

String substring(int start,int end);//start開始到end為止。//包含start不包含end

獲取整串 substring(0,str.length());

2,判斷

1,字串中包含指定的字串嗎?Booleancontains(String substring);

2,字串是否以指定字串開頭?BooleanstartsWith(string);

3,字串是否以指定字串結尾啊?boolean endsWith(string);

4,判斷字串是否相同boolean equals(string);覆蓋了Object中的方法,判斷字串內容是否相同。

5,判斷字串內容是否相同,忽略大小寫。boolean equalsIgnoreCase(string):

轉換

1,通過建構函式可以將字元陣列或者位元組陣列轉成字串。

2,可以通過字串中的靜態方法,將字元陣列轉成字串。

static String copyValueOf(char[] );static String copyValueOf(char[],int offset,int count);

static String valueOf(char[]);static String valueOf(char[],int offset,int count);

3,將基本資料型別或者物件轉成字串。

static String valueOf(char);

static String valueOf(boolean);

static String valueOf(double);

static String valueOf(float);

static String valueOf(int);

static String valueOf(long);

static String valueOf(Object);

4,將字串轉成大小寫。

String toLowerCase();String toUpperCase();

5,將字串轉成陣列。

轉成字元陣列。char[] toCharArray();

轉成位元組陣列。byte[] getBytes();//可以加入編碼表。

6,將字串轉成字串陣列。切割方法。String[] split(分割的規則-字串);

7,將字串進行內容替換。變成新字串。

String replace(oldChar,newChar);

String replace(oldstring,newstring);

8,對字串進行追加。String concat(string);

String s = new String(a)String s = a;的區別

JavaString型別提供了緩衝池機制,當使用雙引號定義物件時,java環境首先去字串常量池中尋找相同內容的字串,如存在就直接拿來應用,如不存在則建立一個新字串放入常量池。

String a=tom;

String b=tom;

上述程式碼中,變數ab使用的是字串常量池中同一個儲存物件

當使用建構函式定義物件時,每次呼叫都會建立一個新物件。

//建立了二個“物件”,一個由jvm隱含地建立,放入字串常量池裡,還有一個通過new語句顯式建立,在堆裡

String a= new String(tom);

String b=new String(tom);

上述程式碼中,變數ab使用的是兩個不同的儲存物件,只是物件中的內容相同。

正則表示式

StringBuffer

1,新增。

StringBuffer append(data):在緩衝區中追加資料。追加到尾部。

StringBuffer insert(index,data):在指定位置插入資料。

2,刪除。

StringBuffer delete(start,end);

StringBuffer deleteCharAt(index);

3,修改。

StringBuffer replace(start,end,string);

void setCharAt(index,char);

void setLength(len);

4,查詢。

int indexOf(string);

int indexOf(string,int fromIndex);

int lastIndexOf(string);

int lastIndexOf(string,int fromIndex);

5,獲取子串

string substring(start);

string substring(start,end);

6,反轉。

StringBuffer  reverse()

StringStringBufferStringBuilder詳解

nString是字串常量,String在編譯後是final的,所以是定長,內容不可變;StringBufferStringBuilder可變。

n不可變類有一些優點,比如因為它的物件是隻讀的,所以多執行緒併發訪問不會有任何問題。當然也有一些缺點,比如每個不同的狀態都要一個物件來代表,可能會造成效能上的問題。所以Java標準類庫還提供了可變版本,即StringBuffer和StringBuilder

nStringBufferJDK1.5以前的,StringBuilder是升級以後的,二者方法都一樣,是緩衝區,,容器長度可變。StringBuilder更高效,因為不考慮執行緒同步Synchronized問題如果需要同步,則使用 StringBuffer

n因為String物件建立後不能改變,所以對於每一個不同的字串使用內容相同的字串,不必每次都new一個String,都需要一個String物件來表示,所以經常對字串進行修改會引起很大的記憶體開銷。而StringBuffer和StringBuilder可以只修改一個字串物件,而不每個不同的字串都要生成一個新的物件。

nString a = "123"a = a + "456"細節;在用String類物件直接+操作時,JVM會建立一個臨時的StringBuffer類物件,並呼叫其append()方法完成字串的拼接,這是因為String類是不可變的,拼接操作不得不使用StringBuffer類(並且JVM會將"Hello"和" world!"建立為兩個新的String物件)。之後,再將這個臨時StringBuffer物件轉型為一個String,記憶體開銷不菲

n操作字串一般使用String。但經常改變內容的字串最好不要用 String ,因為每次生成物件都會對系統性能產生影響你需要使用字串來處理大量資料的時候,建議使StringBuilder而不是String

基本資料型別的包裝類

Ø包裝類中提供了一系列實用的方法,比如Integer類的靜態方法parseInt(String s)能把字串轉換為整數,java集合中不能存放基本型別資料,如果要存放數字,應使用包裝型別

Ø所有的包裝類都是final的,因此沒有子類。

關於自動裝箱與拆箱的小問題:

Integer a = new Integer(127);

Integer b = new Integer(127);

System.out.println(a == b);//false

System.out.println(a.equals(b));//ture

Integer x = 127;

Integer y = 127;

System.out.println(x == y);//ture

System.out.println(x.equals(y));//ture

// JDK1.5後,如果兩次自動裝箱的int型數值在1個位元組範圍內( -128127),那麼第二次將不會重新開闢記憶體空間,而會共享第一次建立空間的值。原因在於在Integer類裡有個內部類IntegerCache存放-128127範圍內的對應Integer類物件,而該類的靜態方法valueOf的實現是當數在 -128127之內時直接返回內部類IntegerCache中存放的對應的Integer類物件,否則new一個新物件。這是設計模式中的享元模式。

MathRandom

java.util.Math

ØMathfina類,沒有子類。Math類的構造方法是private的,因此Math類不能被例項化。

Ø包含了所有用於幾何和三角的浮點運算方法,這些方法都是靜態的

qabs(X  x):返回不同型別的絕對值。

qmax(兩個引數):返回兩個數中的最大值。

qmin(兩個引數):返回最小值。

qrandom():返回大於等於0小於1的隨機數。

qpow(double a, double b):ab次冪

qround(double a):四捨五入

qceil(double a):返回大於A的最小整數。

qfloor(double a):返回小於A的最大整數。

java. util.Random

提供了一系列用於生成隨機數的方法。

ØnextInt():返回下一個int型別的隨機數,隨機數的值大於或等於0

ØnextInt(int n):返回下一個int型別的隨機數,隨機數的值大於或等於0且小於引數n

ØnextLang();返回下一個long型別的隨機數,隨機數的值位於long型別的取值範圍內

ØnextFioat():返回下一個float型別的隨機數,隨機數的值大於或等於0且小於1.0

ØnextDouble():返回下一個double型別的隨機數,隨機數的值大於或等於0且小於1.0

ØnextBoolean(}:返回下一個boolean型別的隨機數,隨機數的值為truefalse

BigDecimal

Ø能作用於intfloat的操作,也同樣能作用於BigIntegerBigDecimal。只不過必須以方法呼叫方式取代運算子方式來實現。這樣犧牲了速度,但換來了精度。

ØBigDecimal支援任意精度的整數。在運算中,可以淮確地表示任何大小的整數,而不會丟失任何資訊。而BigDecimal支援任何精度的定點數,例如,可以用它進行精確的貨幣計算。

DateCalendarDateFormat

java.util.Date

Ø包裝了一個long型別資料,表示與19701100:00:00這一刻所相距的毫秒數。Date類用於表示日期和時間

Ø由於開始設計Date時沒有考慮到國際化,所以後來又設計了DateFormat類和Calendar類來解決Date類中的問題

ØDate類的預設構造方法呼叫System_currentTimeMillis{)方法獲取當前時間,

new Date()語句等價於:new Date(System.currentTimeMillis())

ØDate.getTime():日期物件轉成毫秒值。

setTime():毫秒值轉成日期物件。

java. text.DateFormat抽象類

Ø用於定製日期的格式,它有一個具體子類為java.text.SimpleDateFormat

1,format(Date date):Date格式轉化為日期或者時間的字串

2,DateFormat getDateInstance():獲取日期,按照預設的格式。

3,Date parse(String source,ParsePosition pos):根據給定的規則生成日期和時間字串

4,// 設定日期格式, new Date()為獲取當前系統時間

String strTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

.format(new Date());

java.util.Calendar

1,Calendar getInstance():使用靜態方法,返回這個類物件

2,Add(int field,int amount):增加或減去指定的時間。

3,Int get(int field):返回給定的欄位的值。

4,Set(int year, int month, int date):設定時間

SystemRuntime

ØJava不支援全域性方法和變數,Java設計者將一些系統相關的重要方法和變數收集到了一個統一的類中,這就是System類 

ØLang型中System類裡面都是靜態方法,要使用直接用類名.方法就可以呼叫了。

  1currentTimeMillis():返回以毫秒為單位的當前時間。

  2exit():終止java虛擬機器

  3getProperties():返回Properties確定當前系統屬性。

  4setProperty(String key, String value):自定義鍵值的系統屬性。

ØRuntime類封裝了

相關推薦

學習筆記1-常用異常處理

JDK常見包 ⑴java.lang ——包含一些Java語言的核心類,如String、Math、Integer、System、Exception和Thread,提供常用功能。在java.lang包中還有一個子包:java.lang.reflect用於實現java類的

MySQL學習筆記(4)-- jdbc異常處理和工具抽取

一:異常處理 在前面的學習中,所有的異常全部都是使用throws方法解決的,現在嘗試將異常在程式內部進行處理。 為什麼要在程式內部處理異常? 因為採用throws方法,一旦產生異常,程式會停止執行,並將異常丟擲,但是此時程式內的資源並沒有釋放出來,而Con

Python學習筆記之面對象錯誤處理

實現 單繼承 父類 成對 數據類型 itl 同時 屬性 子類 反射 __import__()函數用於加載類和函數 __import__(name[, globals[, locals[, fromlist[, level]]]]) 參數說明: n

hibernate框架學習筆記1:搭建測試

for this ble action 1.7 turn yiq targe cts hibernate框架屬於dao層,類似dbutils的作用,是一款ORM(對象關系映射)操作 使用hibernate框架好處是:操作數據庫不需要寫SQL語句,使用面向對象的方式完成

python學習筆記(十五)異常處理

關鍵字 .exe strip support 異常 解析器 輸入 rod () python解析器去執行程序,檢測到了一個錯誤時,觸發異常,異常觸發後且沒被處理的情況下,程序就在當前異常處終止,後面的代碼不會運行,所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性

python學習筆記-day8-2-【python 異常處理 try except】

finall 沒有 class cond col pytho span try 學習 python的異常處理,與其它語言的異常一樣,當錯誤發生的時候,能捕獲到發生的錯誤,不會導致程序crash。 一、try except 1、 try except Exception,

Java學習筆記_180711_常用

1.2 對象 bject 行數 ren str 學習 語言 基本 1.Object類 Object類是java語言中所有類的根,所有的類都繼承了Object類,擁有Object類的屬性和方法。 1.1 clone() 返回對象的拷貝(克隆),對於基本類型會進行數值拷貝,對於

Java 常用異常處理

Java異常類是對於程式中可能出現的錯誤或者異常的一種處理方式。在設計程式的過程中,對於可能出現的異常錯誤,比如說使用者輸入錯誤,裝置錯誤,磁碟滿了或者程式碼錯誤等等,通常採用異常處理的方式來進行處理可能的錯誤。 JAVA的異常處理機制:如果某個方法不能按照正常的途徑完成任務,就可以通過另一

Java學習筆記之——常用

時間類 案例 執行 技術分享 form 格式 時間 mage edate Random,String,Math 1.Random Random() 創建一個新的隨機數生成器 案例:產生3個5-10的隨機數 運行結果 註意: 2.StingBuffer,

Spring Boot 學習筆記(十三)——全域性異常處理

預設異常處理機制 1、Whitelabel Error Page 當客戶端訪問頁面不存在,或服務端處理髮生異常,一般瀏覽器客戶端傳送的請求頭中為:Accept:text/html;所以就返回一個html文件。 這裡有一個很重要的類:BasicErrorContr

Python學習筆記4---PYTHON物件

第二天---python類與物件 Python中類是抽象的模板 Class 類名 (繼承的類):縮排塊中寫類的語句 類的例項化 變數名=類名() 類可以起到模板的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性強制填寫進去。通過定義一個特殊的_init方法,在建立

Java學習筆記之抽象介面的應用

1、抽象類的實際應用 — 定義模板 假設有這樣的場景,將人分為工人和學生,兩者都能說話,只是說話的內容不一樣,換句話說,說話這個功能應該是一個具體功能,說話的內容由學生和工人決定,我們可以用抽象類實現這個場景 abstract class Person2{ private S

學習筆記(六) 網路程式設計資料處理

廢話不多說啦,我們直接學習Android中最常使用的網路技術。 在請求網路之前,我們需要在AndroidManifest中宣告訪問網路的許可權: uses-permission android:name="android.permission.INTER

NLP學習筆記(1)-詞向量語言模型

閱讀的第一篇詞向量相關的文獻是Tomas Mikolov 2013年的論文,其中提到了Bengio在2003的經典文章。經過一番努力,粗略的學習了這兩篇文獻,並查閱了相關的資料,現簡單整理如下: 1、詞向量 作為NLP的初學者,遇到的第一個難以理解的概念就是

python學習筆記21(物件的屬性)

類與物件的屬性 物件屬性與類屬性 class Person(object): # 這裡的屬性實際上屬於類屬性(用類名來呼叫) name = "person" def __init__(self, name): pass #物件屬

opencv-python 學習筆記1:簡單的圖片處理

# -*- coding: utf-8 -*- """ @xiaowuyi:http://www.cnblogs.com/xiaowuyi """ import cv2 img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)# 讀入彩色圖片 cv2.imsho

Hadoop學習筆記1.基本介紹環境配置

一、Hadoop的發展歷史   說到Hadoop的起源,不得不說到一個傳奇的IT公司—全球IT技術的引領者Google。Google(自稱)為雲端計算概念的提出者,在自身多年的搜尋引擎業務中構建了突破性的GFS(Google File System),從此檔案系統進入分散式時代。除此之外,Google在

caffe學習筆記1-win10安裝測試mnist

windows下caffe的安裝有些麻煩,我折騰了一天終於安裝好caffe並且成功測試了mnist,在此期間遇到了不少坑,特此記錄一下。 安裝caffe caffe的安裝方式一直在變化,我安裝的時候發現不少部落格寫的東西已經有些過時了,所以建議大家在安裝的時

Linux系統學習筆記(安裝軟體和異常處理

Linux系統下怎麼安裝.deb檔案? deb 是 ubuntu 、debian 的格式。 .deb是solaris系統下的安裝包字尾名。安裝方法如下 cd 到安裝包的目錄 dpkg(空格)-i

java學習筆記五--StringString例子

請解釋字串比較之中“==”和equals()的區別?          ==:比較的是兩個字串記憶體地址的數值是否相等,屬於數值比較;         equals():比較的是兩個字串的內容,屬於內容比較。         以後進行字串相等判斷的時候都使用equals()