第五章 常用类

第五章 常用类

Java API概述

API:应用程序编程接口

API是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供

给开发人员进行使用帮助说明.

基本数据类型包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面

向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设

计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和

基本数据类型对应的类统称为包装类.

包装类(如:Integer,Double等)这些类封装了一个相应的基本数据

类型数值,并为其提供了一系列操作方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q2Vbp26s-1657607281393)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1657605792438.png)]

对于包装类来说,这些类的用途主要包含两种:

1)作为和基本数据类型对应的类类型存在。

2)包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操

作方法。

包装类常用属性方法 (以下方法以java.lang.Integer为例 )

public static final int MAX_VALUE 最大的int型数(231-1public static final int MIN_VALUE 最小的int型数(-231) 
构造方法 
Integer(int a); 
Integer(String a); 
比较方法 
static int compareTo(Integer a);
boolean equals(Object); 
int max(int a,int b); 
int min(int a,int b);
转换方法 
static toBinaryString(int i); 
static String toHexString(int i); 
static String toOctalString(int i); 
int intValue(); 
static int parseInt(String s); 
String toString(); 
static Integer valueOf(int i); 
static Integer valueOf(String s);

装箱和拆箱

装箱:自动将基本数据类型转换为包装器类型 ,装箱的时候自动调用的是Integer的valueOf(int)方法

拆箱:自动将包装器类型转换为基本数据类型 ,拆箱的时候自动调用的是Integer的intValue方法

在这里插入图片描述

Object

Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为 超类(父类)。所有对象(包括数组)都实现这个类的方法。 如果在类的声明中未使用extends关键字指明其基类,则默认基类为 Object类

public class Person { ... } 
等价于:
public class Person extends Object { ... }

toString方法

Object类中定义有public String toString()方法,其返回值是 String 类型,描述当前对象的有关信息。

在进行String与其它类型数据的连接操作时

例如: 
System.out.println(“info”+person)

将自动调用该对象类的 toString()方法 ,可以根据需要在用户自定义类型中重写toString()方法。

equals方法

Object类中定义有:

public boolean equals(Object obj)方法

提供定义对象是否“相等”的逻辑。

Object 的 equals 方法 定义为:x.equals ( y ) ,当 x 和 y是同一 个对象的引用时返回 true 否则返回 false。

JDK提供的一些类,如String,Date等,重写了Object的equals方 法,调用这些类的equals方法, x.equals (y) ,当x和y所引用的对象 是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。

Arrays类

用于操作数组工具类,里面定义了常见操作数组的静态方法。

equals 方法

比较两个非同一数组是否相等,而数组本身的equals判断另一个数 组是否它本身。

声明:public static boolean equals(type[]a,type[]a2)

参数的类型可以是原生数据类型和引用类型的任意一种类型。

返回:如果两个相等,则返回true,否则返回false

sort -排序

作用于数组的所有元素

public static void sort(type[] a)

作用于数组指定范围内的元素

public static void sort(type[] a, int fromIndex(包括), int toIndex(不包括))

将指定的类型(除boolean以外的任意原生数据类型)数组所有元素(或指定范 围内的元素)按数字升序进行排序。

object型数组,根据元素的自然顺序,对指定对象数组进行升序排序。 (fromIndex==toIndex,则排序范围为空)

自定义对象排序

自定义类实现Comparable接口

重写compareTo方法

binarySearch -使用二分搜索算法搜索指定数组

声明:

public static int binarySearch(type[] a, type key) 

public static int binarySearch(long[] a,int fromIndex,int 

toIndex,long key) 

描述: 使用二分搜索算法搜索指定的type型数组,以获得指定的值。

参数:

a - 要搜索的数组。

key - 要搜索的值。

fromIndex - 要排序的第一个元素的索引(包括)。

toIndex - 要排序的最后一个元素的索引(不包括)。

type -byte、double、float、object、long、int、short、char

如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)

toString() 方法

声明:public static String toString(type[] a)

描述:返回指定数组内容的字符串表示形式。

基本数组,字符串表示形式由数组的元素列表组成,括在[],相邻元素

用“, ”(逗号加空格)分隔。

String类/StringBuffer类/StringBuilder类

String

String类概述 :字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字 符串都是String类的实例.

有两种创建形式:

第一种:

String s = “abc”;

先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找 有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中

的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.

第二种:

一概在堆中创建新对象,值存储在堆内存的对象中。

String s = new String(“abc”);

构造方法
public String()
public String(String str)
public String(byte[] bytes)
public String(char[] value)

判断功能

boolean equals(Object obj)

boolean equalsIgnoreCase(String str)

boolean contains(String str)

boolean isEmpty()

boolean startsWith(String prefix)

boolean endsWith(String suffix)

获取功能

int length()

char charAt(int index)

int indexOf(String str)

int indexOf(String str,int fromIndex)

String substring(int start)

String substring(int start,int end)

转换功能

byte[] getBytes()

char[] toCharArray()

static String valueOf(char[] chs)

String toLowerCase()

String toUpperCase()

String concat(String str)

Stirng[] split(分割符);

替换功能

String replace(char old,char new)

String replace(String old,String new)

replaceAll(String regex, String replacement)

replaceFirst(String regex, String replacement)

去除字符串两空格

String trim()

StringBuffer

StringBuffer类概述 :我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

线程安全的可变字符序列

StringBuffer和String的区别?

String:是字符常量,适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

构造方法

public StringBuffer()

public StringBuffer(String str)

添加功能

public StringBuffer append(String str)

public StringBuffer insert(int offset,String str)

删除功能

public StringBuffer deleteCharAt(int index)

public StringBuffer delete(int start,int end)

替换功能

public StringBuffer replace(int start,int end,String str)

反转功能

public StringBuffer reverse()

截取功能

public String substring(int start)

public String substring(int start,int end)

截取功能和前面几个功能的不同

返回值类型是String类型,本身没有发生改变

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程

安全的

Math类/Random类

Math类

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和

返回值类型一般为double型。

abs 绝对值

sqrt 平方根

pow(double a, double b) a的b次幂

max(double a, double b)

min(double a, double b)

random() 返回 0.0 到 1.0 的随机数

long round(double a) double型的数据a转换为long型(四舍五入)

Random类

Random类概述

此类用于产生随机数

构造方法

public Random()

成员方法

public int nextInt()

public int nextInt(int n)

Date类/Calendar类/SimpleDateFormat类

Date类

使用Date类代表当前系统时间

Date d = new Date();

Date d = new Date(long d);

Calendar类

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建

对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

Calendar c1 = Calendar.getInstance();

c1.get(Calendar. YEAR);

SimpleDateFormat类

SimpleDateFormat 日期格式化类

构造方法

SimpleDateFormat(格式); // yyyy-MM-dd

日期转字符串

Date now=new Date();

myFmt.format(now);

字符串转日期

myFmt.parse(“2018-02-10”);

字符串日期格式与 指定格式必须一致

例如:String s = “2018-03-15”;

new SimpleDateFormat(“yyyy-MM-dd”)

BigInteger/BigDecimal

BigInteger

在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的 局限性。

我们都知道 Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述

更大的整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了 BigInteger 类。

BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支 持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何 大小的整数值而不会丢失任何信息。

BigInteger类位于java.math包中

构造方法

BigInteger(String val) /BigInteger(byte[] val) …

基本运算方法

add(),subtract(),multiply(),divide()

BigDecimal

在计算机中不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去 一定的精确度。

根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可 能不精确。只能无限接近于那个值.

double a = 1.0-0.9;

double b = 0.8-0.7;

System.out.println(a==b); // 结果?

但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算 都必须十分精确,你想想,如果你的支付宝账户余额显示193.99999999999998,那是 一种怎么样的体验?

Java在java.math包中提供的API类BigDecimal

构造方法

BigDecimal(String val)

基本运算方法

(),subtract(),multiply(),divide()

BigDecimal

在计算机中不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去 一定的精确度。

根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可 能不精确。只能无限接近于那个值.

double a = 1.0-0.9;

double b = 0.8-0.7;

System.out.println(a==b); // 结果?

但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算 都必须十分精确,你想想,如果你的支付宝账户余额显示193.99999999999998,那是 一种怎么样的体验?

Java在java.math包中提供的API类BigDecimal

构造方法

BigDecimal(String val)

基本运算方法

add(),subtract(),multiply(),divide()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值