1.1 Math
-
1、Math類(lèi)概述
- Math 包含操作基本數(shù)字進(jìn)行運(yùn)算的方法
-
2、Math中方法的調(diào)用方式
- Math類(lèi)中無(wú)構(gòu)造方法,但內(nèi)部的方法都是靜態(tài)的,則可以通過(guò) 類(lèi)名.進(jìn)行調(diào)用
-
3、Math類(lèi)的常用方法
方法名 方法名 說(shuō)明 public static int abs(int a) 返回參數(shù)的絕對(duì)值 public static double ceil(double a) 返回大于或等于參數(shù)的最小double值,等于一個(gè)整數(shù) public static double floor(double a) 返回小于或等于參數(shù)的最大double值,等于一個(gè)整數(shù) public static int round(float a) 按照四舍五入返回最接近參數(shù)的int public static int max(int a,int b) 返回兩個(gè)int值中的較大值 public static int min(int a,int b) 返回兩個(gè)int值中的較小值 public static double pow (double a,double b) 返回a的b次冪的值 public static double random() 返回值為double的正值,[0.0,1.0)
1.2 System
-
System類(lèi)的常用方法
方法名 說(shuō)明 public static void exit(int status) 終止當(dāng)前運(yùn)行的 Java 虛擬機(jī),非零表示異常終止 public static long currentTimeMillis() 返回當(dāng)前時(shí)間(以毫秒為單位) -
示例代碼
- 需求:在控制臺(tái)輸出1-10000,計(jì)算這段代碼執(zhí)行了多少毫秒
public class SystemDemo { public static void main(String[] args) { // 獲取開(kāi)始的時(shí)間節(jié)點(diǎn) long start = System.currentTimeMillis(); for (int i = 1; i <= 10000; i++) { System.out.println(i); } // 獲取代碼運(yùn)行結(jié)束后的時(shí)間節(jié)點(diǎn) long end = System.currentTimeMillis(); System.out.println("共耗時(shí):" + (end - start) + "毫秒"); } }
1.3 Object
-
Object類(lèi)概述
- Object 是類(lèi)層次結(jié)構(gòu)的根,每個(gè)類(lèi)都可以將 Object 作為超類(lèi)。所有類(lèi)都直接或者間接的繼承自該類(lèi),換句話說(shuō),該類(lèi)所具備的方法,所有類(lèi)都會(huì)有一份.
-
查看方法源碼的方式
- 選中方法,按下Ctrl + B
1.3.1 toString方法
-
重寫(xiě)toString方法的方式
- Alt + Insert 選擇toString
- 在類(lèi)的空白區(qū)域,右鍵 -> Generate -> 選擇toString
-
toString方法的作用:
- 以良好的格式,更方便的展示對(duì)象中的屬性值
-
示例代碼:
class Student extends Object { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class ObjectDemo { public static void main(String[] args) { Student s = new Student(); s.setName("張三"); s.setAge(30); System.out.println(s); System.out.println(s.toString()); } } -
運(yùn)行結(jié)果:
Student{name='張三', age=30} Student{name='張三', age=30}
1.3.2 equals方法
-
equals方法的作用
- 用于對(duì)象之間的比較,返回true和false的結(jié)果
- 舉例:s1.equals(s2); s1和s2是兩個(gè)對(duì)象
-
重寫(xiě)equals方法的場(chǎng)景
- 不希望比較對(duì)象的地址值,想要結(jié)合對(duì)象屬性進(jìn)行比較的時(shí)候。
-
重寫(xiě)equals方法的方式
- alt + insert 選擇equals() and hashCode(),IntelliJ Default,一路next,finish即可
- 在類(lèi)的空白區(qū)域,右鍵 -> Generate -> 選擇equals() and hashCode(),后面的同上。
-
示例代碼:
class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { //this -- s1 //o -- s2 if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; //student -- s2 if (age != student.age) return false; return name != null ? name.equals(student.name) : student.name == null; } } public class ObjectDemo { public static void main(String[] args) { Student s1 = new Student(); s1.setName("林青霞"); s1.setAge(30); Student s2 = new Student(); s2.setName("林青霞"); s2.setAge(30); //需求:比較兩個(gè)對(duì)象的內(nèi)容是否相同 System.out.println(s1.equals(s2)); } } -
面試題
// 看程序,分析結(jié)果 String s = “abc”; StringBuilder sb = new StringBuilder(“abc”); s.equals(sb); sb.equals(s); public class InterviewTest { public static void main(String[] args) { String s1 = "abc"; StringBuilder sb = new StringBuilder("abc"); //1.此時(shí)調(diào)用的是String類(lèi)中的equals方法. //保證參數(shù)也是字符串,否則不會(huì)比較屬性值而直接返回false //System.out.println(s1.equals(sb)); // false //StringBuilder類(lèi)中是沒(méi)有重寫(xiě)equals方法,用的就是Object類(lèi)中的. System.out.println(sb.equals(s1)); // false } }
1.3.3 Objectsg工具類(lèi)
-
常用方法
方法名 說(shuō)明 public static String toString(對(duì)象) 返回參數(shù)中對(duì)象的字符串表示形式。 public static String toString(對(duì)象, 默認(rèn)字符串) 返回對(duì)象的字符串表示形式。 public static Boolean isNull(對(duì)象) 判斷對(duì)象是否為空 public static Boolean nonNull(對(duì)象) 判斷對(duì)象是否不為空 -
示例代碼
學(xué)生類(lèi)
class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }測(cè)試類(lèi)
public class MyObjectsDemo { public static void main(String[] args) { // public static String toString(對(duì)象): 返回參數(shù)中對(duì)象的字符串表示形式。 // Student s = new Student("小羅同學(xué)",50); // String result = Objects.toString(s); // System.out.println(result); // System.out.println(s); // public static String toString(對(duì)象, 默認(rèn)字符串): 返回對(duì)象的字符串表示形式。如果對(duì)象為空,那么返回第二個(gè)參數(shù). //Student s = new Student("小花同學(xué)",23); // Student s = null; // String result = Objects.toString(s, "隨便寫(xiě)一個(gè)"); // System.out.println(result); // public static Boolean isNull(對(duì)象): 判斷對(duì)象是否為空 //Student s = null; // Student s = new Student(); // boolean result = Objects.isNull(s); // System.out.println(result); // public static Boolean nonNull(對(duì)象): 判斷對(duì)象是否不為空 //Student s = new Student(); Student s = null; boolean result = Objects.nonNull(s); System.out.println(result); } }
1.4 BigDecimal
-
作用
可以用來(lái)進(jìn)行精確計(jì)算
-
構(gòu)造方法
方法名 說(shuō)明 BigDecimal(double val) 參數(shù)為double BigDecimal(String val) 參數(shù)為String -
常用方法
方法名 說(shuō)明 public BigDecimal add(另一個(gè)BigDecimal對(duì)象) 加法 public BigDecimal subtract (另一個(gè)BigDecimal對(duì)象) 減法 public BigDecimal multiply (另一個(gè)BigDecimal對(duì)象) 乘法 public BigDecimal divide (另一個(gè)BigDecimal對(duì)象) 除法 public BigDecimal divide (另一個(gè)BigDecimal對(duì)象,精確幾位,舍入模式) 除法 -
總結(jié)
- BigDecimal是用來(lái)進(jìn)行精確計(jì)算的
- 創(chuàng)建BigDecimal的對(duì)象,構(gòu)造方法使用參數(shù)類(lèi)型為字符串的。
- 四則運(yùn)算中的除法,如果除不盡請(qǐng)使用divide的三個(gè)參數(shù)的方法。
代碼示例:
BigDecimal divide = bd1.divide(參與運(yùn)算的對(duì)象,小數(shù)點(diǎn)后精確到多少位,舍入模式); 參數(shù)1 ,表示參與運(yùn)算的BigDecimal 對(duì)象。 參數(shù)2 ,表示小數(shù)點(diǎn)后面精確到多少位 參數(shù)3 ,舍入模式 BigDecimal.ROUND_UP 進(jìn)一法 BigDecimal.ROUND_FLOOR 去尾法 BigDecimal.ROUND_HALF_UP 四舍五入
2.包裝類(lèi)
2.1 基本類(lèi)型包裝類(lèi)
-
基本類(lèi)型包裝類(lèi)的作用
將基本數(shù)據(jù)類(lèi)型封裝成對(duì)象的好處在于可以在對(duì)象中定義更多的功能方法操作該數(shù)據(jù)
常用的操作之一:用于基本數(shù)據(jù)類(lèi)型與字符串之間的轉(zhuǎn)換
-
基本類(lèi)型對(duì)應(yīng)的包裝類(lèi)
基本數(shù)據(jù)類(lèi)型 包裝類(lèi) byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean
2.2 Integer類(lèi)
-
Integer類(lèi)概述
包裝一個(gè)對(duì)象中的原始類(lèi)型 int 的值
-
Integer類(lèi)構(gòu)造方法
方法名 說(shuō)明 public Integer(int value) 根據(jù) int 值創(chuàng)建 Integer 對(duì)象(過(guò)時(shí)) public Integer(String s) 根據(jù) String 值創(chuàng)建 Integer 對(duì)象(過(guò)時(shí)) public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 實(shí)例 public static Integer valueOf(String s) 返回一個(gè)保存指定值的 Integer 對(duì)象 String -
示例代碼
public class IntegerDemo { public static void main(String[] args) { //public Integer(int value):根據(jù) int 值創(chuàng)建 Integer 對(duì)象(過(guò)時(shí)) Integer i1 = new Integer(100); System.out.println(i1); //public Integer(String s):根據(jù) String 值創(chuàng)建 Integer 對(duì)象(過(guò)時(shí)) Integer i2 = new Integer("100"); // Integer i2 = new Integer("abc"); //NumberFormatException System.out.println(i2); System.out.println("--------"); //public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 實(shí)例 Integer i3 = Integer.valueOf(100); System.out.println(i3); //public static Integer valueOf(String s):返回一個(gè)保存指定值的Integer對(duì)象 String Integer i4 = Integer.valueOf("100"); System.out.println(i4); } }
2.3 自動(dòng)拆箱和自動(dòng)裝箱
-
自動(dòng)裝箱
? 把基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換為對(duì)應(yīng)的包裝類(lèi)類(lèi)型
-
自動(dòng)拆箱
? 把包裝類(lèi)類(lèi)型轉(zhuǎn)換為對(duì)應(yīng)的基本數(shù)據(jù)類(lèi)型
-
示例代碼
Integer i = 100; // 自動(dòng)裝箱 i += 200; // i = i + 200; i + 200 自動(dòng)拆箱;i = i + 200; 是自動(dòng)裝箱
2.4 int和String類(lèi)型的相互轉(zhuǎn)換
-
int轉(zhuǎn)換為String
-
轉(zhuǎn)換方式
- 方式一:直接在數(shù)字后加一個(gè)空字符串
- 方式二:通過(guò)String類(lèi)靜態(tài)方法valueOf()
-
示例代碼
public class IntegerDemo { public static void main(String[] args) { //int --- String int number = 100; //方式1 String s1 = number + ""; System.out.println(s1); //方式2 //public static String valueOf(int i) String s2 = String.valueOf(number); System.out.println(s2); System.out.println("--------"); } }
-
-
String轉(zhuǎn)換為int
-
轉(zhuǎn)換方式
- 方式一:先將字符串?dāng)?shù)字轉(zhuǎn)成Integer,再調(diào)用valueOf()方法
- 方式二:通過(guò)Integer靜態(tài)方法parseInt()進(jìn)行轉(zhuǎn)換
-
示例代碼
public class IntegerDemo { public static void main(String[] args) { //String --- int String s = "100"; //方式1:String --- Integer --- int Integer i = Integer.valueOf(s); //public int intValue() int x = i.intValue(); System.out.println(x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println(y); } }
-
2.5 字符串?dāng)?shù)據(jù)排序案例
-
案例需求
? 有一個(gè)字符串:“91 27 46 38 50”,請(qǐng)寫(xiě)程序?qū)崿F(xiàn)最終輸出結(jié)果是:27 38 46 50 91
-
代碼實(shí)現(xiàn)
public class IntegerTest { public static void main(String[] args) { //定義一個(gè)字符串 String s = "91 27 46 38 50"; //把字符串中的數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)到一個(gè)int類(lèi)型的數(shù)組中 String[] strArray = s.split(" "); // for(int i=0; i<strArray.length; i++) { // System.out.println(strArray[i]); // } //定義一個(gè)int數(shù)組,把 String[] 數(shù)組中的每一個(gè)元素存儲(chǔ)到 int 數(shù)組中 int[] arr = new int[strArray.length]; for(int i=0; i<arr.length; i++) { arr[i] = Integer.parseInt(strArray[i]); } //對(duì) int 數(shù)組進(jìn)行排序 Arrays.sort(arr); for(int i=0; i<arr.length; i++){ System.out.print(arr[i] + " "); } }