Java面向對象筆記 • 【第6章 Java常用類】

全部章節   >>>>


本章目錄

6.1 Object類

6.1.1 Object類概述

6.1.2 Object的常用方法

6.1.3 實踐練習

6.2 String類和StringBuffer類

6.2.1 String類構造方法

6.2.2 String類常用方法

6.2.3 StringBuffer類常用方法

6.2.4 實踐練習(一)

6.2.5 實踐練習(二)

6.3 Math類

6.3.1 Math類運算操作

6.3.2 實踐練習

6.4 日期處理類

6.4.1 Date類

6.4.2 Calendar類

6.4.3 SimpleDateFormat類

6.4.4 實踐練習

總結:


6.1 Object類

6.1.1 Object類概述

Java可以把任何類型的對象賦值給Object類型的變量

如果一個類在聲明時沒有使用extends關鍵字爲其顯示指定父類,則該類默認繼承Object類。

所有數組類型都繼承於Object類(包括對象數組和基本數據類型數組)。

6.1.2 Object的常用方法

方法名

返回類型

說明

equals(Object obj)

boolean

判斷指定對象與該對象是否相等

hashCode()

int

返回該對象的哈希碼值

toString

String

使用字符串表示該對象信息

說明:

默認情況下,Object類的hashCode()方法根據該對象的內存地址來計算很多類都重寫了Object類的hashCode()方法

當使用System.out.println()方法輸出一個對象,或者將某個對象和字符串進行連接運算時,系統會自動調用該對象的toString()方法,返回該對象的字符串信息

Object類的toString()方法默認返回“運行時類名+@+十六進制的hashCode值”格式的字符串。

示例:演示Object常用方法

UserInfo userInfo=new UserInfo();
//當前對象與行創建的UserInfo對象比較內存地址
boolean  flag=this.equals(userInfo);
System.out.println("equals()返回值:"+flag);  
//調用本類中重寫父類的toString()方法
String tsResult=this.toString();
System.out.println("toString()返回值:"+tsResult);
//調用hashCode()方法
int hashCode=this.hashCode();
System.out.println("hashCode()返回值:"+hashCode);
//重寫Object類的toString()
 public String  toString(){ return "重寫了父類的toString方法"; }

6.1.3 實踐練習

 

6.2 String類和StringBuffer類

String類和StringBuffer類主要用於處理字符串,這兩個類提供了許多字符串的實用處理方法

String類是一個不可變類(被final修飾),一個String對象所包含的字符串內容永遠不會被改變

StringBuffer類是可變類,一個StringBuffer對象所包含的字符串內容可以  添加或修改

6.2.1 String類構造方法

構造方法

說明

String()

創建一個內容爲空的字符串

String(String value)

初始化一個新創建的String對象,使其表示一個與參數相同的字符序列

String(byte[]bytes,Charset charset)

使用指定的字符編碼,將指定的byte[]數組構造成一個字符串

String(char[]  char)

將制定的char[]數組構造成一個字符串

6.2.2 String類常用方法

方法名

說明

char charAt(index)

獲取字符串中指定位置的字符。其中,參數index指的是字符串的序數,字符串的序數從0開始到length()-1

String concat(String str)

將該String對象與str連接在一起。與Java提供的字符串連接運算符“+”的功能相同

Boolean equals(Object anObject)

將該字符串與指定對象相比,如果兩者包含的字符序列相等,則返回true;否則返回false

byte[] getBytes()

將該String對象轉換成byte數組

int indexOf(String str)

找出str子字符串在該字符串中第一次出現的位置

int length()

返回當前字符串的長度

String replace(char oldChar,char newChar)

將字符串中的第一個oldChar替換成newChar

boolean endsWith(String sufffix)

String對象是否以sufffix結束

String substring(int beginIndex,int endIndex)

獲取從beginIndex位置開始到endIndex(不包括)位置的子字符串

char[] toCharArray()

將該String對象轉換成char數組

String toUpperCase()

將字符串轉換成大寫

示例:演示String類常用方法的使用

int index=value.indexOf("A"); //第一次出現指定字符串的下標,如果未出現,則返回-1
System.out.println("第一次出現字母A的下標:"+index);
int length=value.length();//字符串的長度
System.out.println("輸入字符串的長度:"+length);
boolean  flag="Hello String".equals(value); //判斷兩個字符串字面值是否相等
System.out.println("控制檯輸入的字符串是否與Hello String字面值相等:"+flag);
boolean  tag=value.endsWith(“.java”); //判斷結尾處是否包含“.java” 
System.out.println("控制檯輸入的字符串是否以.java結尾:"+tag);
String newValue=value.toUpperCase(); //轉換大寫字母
System.out.println("控制檯輸入字符串轉換爲大寫字母值:"+newValue);
String val=value.substring(0, 2); //字符串截取
System.out.println("按照從0下標開始截取長度爲2的子字符串:"+val);
String[] str=value.split("-"); //按照給定格式拆分字符串,返回一個String[]數組
System.out.println("將按照-拆分後返回的字符串數組遍歷結果:");
for(String data:str){ System.out.println(data); }

注意:

==”比較的是兩個對象的內存地址是否相同,而Object中的equals()方法默認比較的也是兩個對象的內存地址是否相同

由於String類重寫了Object類的equals()方法,重寫的邏輯是比較當前調用對象與被比較對象的字符串字面值,如果相同則返回true,否則返回false

思考:

比較以下創建字符串對象的兩種方式

  String str1="hello";

  String str2=new String("hello");

分析:

雖然引用變量str1與引用Str2最終的字面值相等,但是str1str2直接指向的不是同一對象

使用new String(“hello”)在創建對象時,首先在堆內存中創建一個”hello“對象,然後再查找常量池中是否存在“hello”字符串對象,如果存在不會在常量池中創建個新的“hello”對象否則創建一個新的“hello”對象

6.2.3 StringBuffer類常用方法

StringBuffer代表一個字符序列可變的字符串

StringBuffer提供的append()insert()reverse()以及setCharAt()等方法,可以改變    

StringBuffer對象的字符序列。

 

提醒:String是不可變類,如果使用String創建字符串,則會額外生成很多字符串,耗費系統資源

方法名

說明

StringBuff append(String str)

將字符串str追加到當前StringBuffer對象

StringBuffer  insert (intoffset ,  String str)                  

按順序將字符串str插入到當前StringBuffer對象的

intoffset位置

StringBuffer reverse()

將當前StringBuffer對象的字符序列用其反轉形式取代

void setCharAt(int index, char ch)

index索引處的字符設置爲ch

示例:演示StringBuffer類常用方法的使用

StringBuffer  stringBuffer=new StringBuffer();
stringBuffer.append("Intelligence"); //追加字符串
System.out.println("當前stringBuffer對象值:"+stringBuffer);
System.out.println("在下標0插入Artificial後的值:"+stringBuffer.insert(0,"Artificial ")); //在指定位置添加字符串
stringBuffer.replace(10, 11, "-"); //將指定位置的內容進行替換	
System.out.println("stringBuffer長度:"+stringBuffer.length());
System.out.println("翻轉後的內容:"+stringBuffer.reverse()); //將內容進行反轉
String str="Java";
String newStr=str+" Android"; //將"Java"字符串與“ Android”字符串連接後賦值給newStr變量
System.out.println("str的值="+str);
System.out.println("newStr值="+newStr);
System.out.println("str==newString?="+(str==newStr));
StringBuffer sb=new StringBuffer();
sb.append("Cloud");
System.out.println("sb的值="+sb);
StringBuffer sBuffer=sb.append(" Computing");
System.out.println("sBuffer的值="+sBuffer);
System.out.println("sb==sBuffer?="+(sb==sBuffer));

6.2.4 實踐練習(一)

6.2.5 實踐練習(二)

 

6.3 Math類

6.3.1 Math類運算操作

Java提供“+”“-”“*”“/”和“%”等基本算術符運算符

對於較爲複雜的運算,如三角函數、指數函數和絕對值函數等運算,基本運算符無法完成相關的操作

Java提供了工具Math類來完成這些複雜的運算

Math類的方法都是靜態方法

 

示例:演示Math類常用方法的使用

System.out.println("27的算數立方根的值="+Math.cbrt(27));
System.out.println("4的平方根的值="+Math.sqrt(4));
System.out.println("3的2次方的值="+Math.pow(3, 2));
System.out.println("-4.5的絕對值="+Math.abs(-4.5));
System.out.println("8和10兩個數的最大值="+Math.max(10, 8));
//返回一個隨機數,該值的範圍在0.0~1.0之間
System.out.println("產生的隨機數值="+Math.random());
System.out.println("5.5四捨五入後的值="+Math.round(5.5));
System.out.println("弧度爲π/6的正弦值="+Math.sin(Math.PI/6));

6.3.2 實踐練習

 

6.4 日期處理類

6.4.1 Date類

Java提供了java.util.Date類處理日期、時間,Date對象既包含日期,也包含時間

Date類提供了兩個構造器。

構造方法

說明

Date()

創建一個代表當前日期時間的Date對象

Date(long time)

根據指定long類型整數生成一個Date對象

說明:Date(long time),該構造器的參數表示創建的Date對象和GMT19701100:00:00之間的時間差,以毫秒作爲計算單位

示例:演示Date類構造方法的使用

//使用無參構造方法創建Date對象
Date date=new Date();
System.out.println("當前系統時間:"+date);
Date newDate=new Date(1000*60*60*24*20);
System.out.println("1970年1月1日的20天后的時間="+newDate);

注意:

Date類的很多方法已經不推薦使用了例如,對時間進行加減運算,獲取指定Date對象的年、月、日的所有方法都已被棄用

如果需要對日期進行這些運算,則應該使用Calendar工具類。

6.4.2 Calendar類

  • 由於Date類在設計上的一些問題,所以Java提供了Calendar類來更好地處理日期和時間
  • Calendar類是一個抽象類,所以不能實例化Calendar對象。但是Calendar類提供過了靜態的方法getInstance(),以獲得Calendar對象
  • CalendarDate類都是表示日期的工具類,兩者可以直接相互轉換

通過getInstance()方法創建Calendar的子類對象

Calendar  calendar=Calendar.getInstance();

Calendar中獲取Date對象

Date date=calendar.getTime();

通過Date對象獲得對應的Calendar對象

calendar.setTime(new Date());

示例:使用Calendar類實現對日期的操作

Calendar  calendar=Calendar.getInstance();
//創建一個距離1970年1月1日2天后的日期對象
Date date=new Date(1000*60*60*24*2);
System.out.println(date);
calendar.setTime(date); //將date對象賦給Calendar對象
System.out.println("年:"+calendar.get(Calendar.YEAR)+"年"); //獲取年份	 
System.out.println("月:"+calendar.get(Calendar.MONTH)+1+"月"); //獲取月份
System.out.println("日:"+calendar.get(Calendar.DATE)+"日"); //獲取日期	
System.out.println("星期:"+(calendar.get(Calendar.DAY_OF_WEEK)-1)); //獲取星期
System.out.println("本年的第:"+calendar.get(Calendar.DAY_OF_YEAR)+"天"); //這一天是一年中的第幾天

6.4.3 SimpleDateFormat類

SimpleDateFormat是一個日期時間格式化類,該類位於java.text包中。

該類可以靈活地格式化Date對象,也可以用於解析各種格式的日期字符串

使用String類型的SimpleDateFormat類的構造器創建對象時,需要傳入一個模板字符串

日期格式化模板標記

標記

說明

y

年。年份是4位數時,需要寫成yyyy

M

年份中的月。年份是2位數時,需要寫成MM

d

月中的天數。天數是2位數時,需要寫成dd

H

一天中的24小時。小時是2位數,需要寫成HH

m

小時中的分鐘數。分鐘是2位數,需要寫成mm

s

分鐘中的秒數。秒是2位數,需要寫成ss

示例:SimpleDateFormat類具體操作

public class SimpleDateFormatUse {
	private static final String PARRENT1 = "yyyy-MM-dd HH:mm:ss";
	private static final String PARRENT2 = "yyyy年MM月dd日 HH時mm分ss秒";
	public static void parse(String strDate) {
	//創建SimpleDateFormat對象。y代表年、M代表月、d代表日,HH代表24小時制的時、m代表分、s代表秒
	SimpleDateFormat sdf = new SimpleDateFormat(PARRENT1);
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat(PARRENT2);
	try {
		//將字符串日期轉換成Date對象
		Date date = sdf.parse(strDate);
		//將date對象重新轉換成“yyyy年MM月dd日 HH時mm分ss秒”格式的日期字符串
		String str = simpleDateFormat.format(date);
		System.out.println(strDate + ":解析成的Date=" + date);
		System.out.println("date對象按照"+PARRENT2+"格式轉換後的字符串日期:");
		System.out.println(str);
	} catch (ParseException e) {e.printStackTrace();}
}

6.4.4 實踐練習

 

總結:

  • Object類是所有Java類的父。可以根據具體的業務邏輯重寫Objectequals()方法,用以判斷兩個對象是否相等。
  • String類是一個不可變類(被final修飾),一個String對象所包含的字符串內容永遠不會被改變。而StringBuffer類是可變類,一個StringBuffer對象所包含的字符串內容可以被添加或修改。
  • Math類的random()方法隨機生成一個0~1之間的double小數。
  • DateCalendar都是是時間處理類但是Calendar更好地處理日期和時間
  • Calendar類是一個抽象類,所以不能實例化Calendar對象,可以通過Calendar類提供靜態方法getInstance()獲得Calendar對象
  • SimpleDateFormat是一個日期時間格式化類,該類位於java.text包中。該類可以靈活地格式化Date對象,也可以用於解析各種格式的日期字符串,使用String類型的SimpleDateFormat類的構造器創建對象時,需要傳入一個模板字符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章