一芙扎、object類
Object類是一個(gè)特殊的類借跪,它是所有類的父類,是JAVA類層中的最頂層類驶睦,java.lang.Object類
1、Object類的常用方法
(1)toString()方法:將一個(gè)對象返回為字符串形式
(2)getClass()方法:返回對象執(zhí)行時(shí)的Class實(shí)例画拾,然后使用此實(shí)例調(diào)用getName()方法可以取得類的名稱
(3)hashCode()方法:返回對象在內(nèi)存中地址轉(zhuǎn)換成的一個(gè)int值(可以就當(dāng)做地址看),也就是說全局唯一的
(4)equals()方法:判斷值是否相等
2啥繁、equals 和 == 的區(qū)別
(1)== 是判斷兩個(gè)變量或?qū)嵗遣皇侵赶蛲粋€(gè)內(nèi)存空間;equals是判斷兩個(gè)變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同
(2)== 是指對內(nèi)存地址進(jìn)行比較青抛; equals()是對字符串的內(nèi)容進(jìn)行比較
(3)== 指引用是否相同; equals()指的是值是否相同
通俗點(diǎn)講:==是看看左右是不是一個(gè)東西酬核。equals是看看左右是不是長得一樣
二蜜另、Math類
Math類是一個(gè)很有用的數(shù)學(xué)幫助類,做數(shù)學(xué)運(yùn)算等操作嫡意。
1举瑰、Math類的常用方法
(1)Math.abs 求絕對值
(2)Math.ceil 得到不小于某數(shù)的最大整數(shù)
(3)Math.floor 得到不大于某數(shù)的最大整數(shù)
(4)Math.max 求兩數(shù)中最大
(5)Math.min 求兩數(shù)中最小
(6)Math.random 返回0,1之間的一個(gè)隨機(jī)數(shù)
2蔬螟、UUID
- UUID 含義是通用唯一識(shí)別碼 (Universally Unique Identifier)此迅,這是一個(gè)軟件建構(gòu)的標(biāo)準(zhǔn)。
- UUID 來作為數(shù)據(jù)庫數(shù)據(jù)表主鍵是非常不錯(cuò)的選擇,保證每次生成的UUID 是唯一的耸序。
三忍些、Date類
Date類用于表示日期和時(shí)間,java.util.Date
1坎怪、Date類的常見用法
(1)Date d = new Date():創(chuàng)建一個(gè)代表系統(tǒng)當(dāng)前日期的Date對象
(2)Date(int year, int month, int day): 創(chuàng)建一個(gè)指定日期的Date對象
(3)int compareTo(Date anotherDate):比較兩個(gè)日期的順序罢坝。例:
//如果date2大于date返回 1 等于返回 0 小于 -1
System.out.println(date2.compareTo(date));
2、SimpleDateFormat 類
要想格式化時(shí)間或者把字符串轉(zhuǎn)換為Date類搅窿,可以使用java.text.Dateformat抽象類規(guī)定日期格式化的操作嘁酿,具體常用的實(shí)現(xiàn)是java.text.SimpleDateformat類
//日期轉(zhuǎn)換為字符串
SimpleDateFormat sdformat = new SimpleDateFormat("yyy y-MM-dd HH:mm:ss");
String text = sdformat .format(new Date());
//把字符串轉(zhuǎn)換為日期
String text = "2021年1月1日 1:11:11";
SimpleDateFormat sdformat= new SimpleDateFormat("yyyy年M月dd日 H:mm:ss");
Date date= sdformat.parse(text);
System.out.println("date = " + date);
3、Calendar類
抽象類 Calendar 提供了一組方法男应,允許把以毫秒為單位的時(shí)間轉(zhuǎn)換成一些有用的時(shí)間組成部分闹司。Calendar 不能直接創(chuàng)建對象,但可以使用靜態(tài)方法 getInstance() 獲得代表當(dāng)前日期的日歷對象
//根據(jù)當(dāng)前的語言地區(qū)環(huán)境獲取一個(gè)日歷對象
Calendar c = Calendar.getInstance();
System.out.println(c);
System.out.println("獲取年份:"+c.get(Calendar.YEAR));
System.out.println("獲取月份:"+(c.get(Calendar.MONTH)+1));//月份0~11
System.out.println("獲取日期(今天是該月的第幾天):"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("獲取小時(shí)數(shù)(12小時(shí)制):"+c.get(Calendar.HOUR));
System.out.println("獲取小時(shí)數(shù)(24小時(shí)制):"+c.get(Calendar.HOUR_OF_DAY));
System.out.println("獲取分鐘數(shù):"+c.get(Calendar.MINUTE));
System.out.println("獲取秒鐘數(shù):"+c.get(Calendar.SECOND));
System.out.println("獲取毫秒數(shù):"+c.get(Calendar.MILLISECOND));
System.out.println("獲取當(dāng)前是該年中的第幾天:"+c.get(Calendar.DAY_OF_YEAR));
System.out.println("獲取今天是周幾:"+c.get(Calendar.DAY_OF_WEEK));
//將月份設(shè)置到6月份
c.set(Calendar.MONTH, 5);
//如何獲取該月的總天數(shù)與該月第一天的周數(shù)沐飘?
//獲取今年的總天數(shù)
System.out.println(c.getActualMaximum(Calendar.DAY_OF_YEAR));
//獲取當(dāng)前日歷表示的該月份的最大天數(shù)(總天數(shù))
System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
//獲取該月的第一天是周幾开仰?
//將日期設(shè)置到這個(gè)月的第一天
c.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("獲取今天是周幾:"+c.get(Calendar.DAY_OF_WEEK));
四、String類
1薪铜、String 众弓、StringBuffer、StringBuilder
String:(1)不可變性隔箍,底層是final修飾的char[]數(shù)組谓娃,private
final char value[] ;(2)常量蜒滩,不可變滨达,所以線程安全;
StringBuffer:(1)可變性俯艰,可以使用append()方法捡遍;(2)多線程數(shù)據(jù)量較大;(3)效率低竹握,安全画株。對方法加了同步鎖或者對調(diào)用的方法加了同步鎖,所以是線程安全的啦辐,
StringBuilder:(1)可變性谓传,可以使用append()方法;(2)單線程數(shù)據(jù)量較大芹关;(3)效率高续挟,不安全。StringBuilder 并沒有對方法進(jìn)行加同步鎖侥衬,所以是非線程安全的诗祸。
對于三者使用的總結(jié):
- 操作少量的數(shù)據(jù) = String
- 單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) = StringBuilder
- 多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) = StringBuffer
2跑芳、String 的常用方法
- length()字符串的長度
- charAt() 截取一個(gè)字符
- equals()和equalsIgnoreCase() 比較兩個(gè)字符串
- compareTo()和compareToIgnoreCase() 比較字符串
- concat() 連接兩個(gè)字符串
- replace() 替換
- toUpperCase() /toLowerCase() 轉(zhuǎn)換為大小寫
- trim() 去掉起始和結(jié)尾的空格
3、String的使用
String str = "a" + 1 +2 結(jié)果為“a12”
String str = ‘a(chǎn)’+ 1 +2 結(jié)果為100
String str = 1 + 2 + "a" 結(jié)果為"3a"
4直颅、String str="str"與 String str=new String("str")的內(nèi)存分配
因?yàn)閮?nèi)存的分配方式是不一樣的博个,
- String str="str"的方式,java 虛擬機(jī)會(huì)將其分配到常量池中际乘;
- 而 String str=new String("str") 則會(huì)被分到堆內(nèi)存中坡倔。
5、值傳遞和引用傳遞
- 值傳遞是對基本類型變量而言的,傳遞的是該變量的一個(gè)副本,改變副本不影響原來變量.
- 引用傳遞一般是對于對象型變量而言的,傳遞的是該對象地址的一個(gè)副本, 并不是原對象本身
一般認(rèn)為,java內(nèi)的基礎(chǔ)類型數(shù)據(jù)傳遞都是值傳遞. java中實(shí)例對象的傳遞是引用傳遞
五脖含、包裝類
java語言是一個(gè)面向?qū)ο蟮恼Z言罪塔,但是java中的基本數(shù)據(jù)類型卻不是面向?qū)ο蟮模俏覀冊趯?shí)際使用中經(jīng)常將基本數(shù)據(jù)類型轉(zhuǎn)換成對象养葵,便于操作征堪,比如,集合的操作中关拒,這時(shí)佃蚜,我們就需要將基本類型數(shù)據(jù)轉(zhuǎn)化成對象!
1着绊、包裝類和基本數(shù)據(jù)類型的關(guān)系
基本數(shù)據(jù)類型 | 包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2谐算、自動(dòng)裝箱拆箱
Java 5 增加了自動(dòng)裝箱、拆箱機(jī)制归露,提供基本數(shù)據(jù)類型和包裝類型的相互轉(zhuǎn)換操作洲脂。
(1)自動(dòng)裝箱
自動(dòng)裝箱即自動(dòng)將基本數(shù)據(jù)類型轉(zhuǎn)換成包裝類型
Integer i2 = Integer.valueOf(8);
// 自動(dòng)裝箱
Integer i3 = 8;
(2)自動(dòng)拆箱
自動(dòng)拆箱即自動(dòng)將包裝類型轉(zhuǎn)換成基本數(shù)據(jù)類型
// 自動(dòng)拆箱
int i4 = i3;
int i5 = i3.intValue();
六、file類
File類主要是JAVA為文件這塊的操作(如刪除剧包、新增等)而設(shè)計(jì)的相關(guān)類
- 可以實(shí)現(xiàn)獲取文件和目錄屬性等功能
- 可以實(shí)現(xiàn)對文件和目錄的創(chuàng)建恐锦、刪除等功能
1、file類的三種構(gòu)造方法
(1)File(String path):如果 path 是實(shí)際存在的路徑疆液,則該 File 對象表示的是目錄一铅;如果 path 是文件名,則該 File 對象表示的是文件堕油。
(2)File(String path, String name):path 是路徑名潘飘,name 是文件名。
(3)File(File dir, String name):dir 是路徑對象馍迄,name 是文件名福也。
使用任意一個(gè)構(gòu)造方法都可以創(chuàng)建一個(gè) File 對象,然后調(diào)用其提供的方法對文件進(jìn)行操作
2攀圈、file類的常用方法
- createNewFile() //有則不創(chuàng)建 返回false,沒有則創(chuàng)建 返回true
- delete() //刪除成功 返回true ,失敗返回false
- getAbsoluteFile() //返回絕對路徑
- getPath() //返回相對路徑
- getName() //返回文件名
- isFile() //是否為文件 boolean
- length //長度
- mkdir() //創(chuàng)建單層目錄
- mkdirs() //創(chuàng)建多級(jí)目錄
- delete() //只能刪除空目錄
- list() //返回一個(gè)字符串?dāng)?shù)組峦甩,命名由此抽象路徑名表示的目錄中的文件和目錄赘来。
- listFiles() //返回一個(gè)抽象路徑名數(shù)組现喳,表示由該抽象路徑名表示的目錄中的文件和目錄。
3犬辰、file類的使用
(1)獲取文件屬性
public class Test0 {
public static void main(String[] args) {
String path = "C:/windows/"; // 指定文件所在的目錄
File f = new File(path, "text.txt"); // 建立File變量,并設(shè)定由f變量引用
System.out.println("文件信息如下:");
System.out.println("============================================");
System.out.println("文件長度:" + f.length() + "字節(jié)");
System.out.println("文件或者目錄:" + (f.isFile() ? "是文件" : "不是文件"));
System.out.println("文件或者目錄:" + (f.isDirectory() ? "是目錄" : "不是目錄"));
System.out.println("是否可讀:" + (f.canRead() ? "可讀取" : "不可讀取"));
System.out.println("是否可寫:" + (f.canWrite() ? "可寫入" : "不可寫入"));
System.out.println("是否隱藏:" + (f.isHidden() ? "是隱藏文件" : "不是隱藏文件"));
System.out.println("最后修改日期:" + new Date(f.lastModified()));
System.out.println("文件名稱:" + f.getName());
System.out.println("文件路徑:" + f.getPath());
System.out.println("絕對路徑:" + f.getAbsolutePath());
}
}
(2)創(chuàng)建和刪除文件
public class Test {
public static void main(String[] args) throws IOException {
File f = new File("C:\\test.txt"); // 創(chuàng)建指向文件的File對象
if (f.exists()) // 判斷文件是否存在
{
f.delete(); // 存在則先刪除
}
f.createNewFile(); // 再創(chuàng)建
}
}