【JavaSE】常用类API

本文概述了Java系统中的常用类API,如Object的基础用法、equals比较函数的深入理解、Arrays类的操作、字符串处理(包括String和StringBuilder)、数学和随机数生成,以及正则表达式的应用。
摘要由CSDN通过智能技术生成

概述

        常用类 API

常用类:java系统中提供的一些使用频率较高的类,

API:应用程序编程接口

Java系统中所提供的一系列类和接口

Api文档:官方给广大java开发者学习者提供对类和接口功能的说明文档

 本章学习一些单个的,独立功能的类

Object

Java.lang.Object 是java类体系中的最顶级的,万类之祖   

java.lang.Object
toString()
当输出一个对象时,会默认调用类中的toString()方法,把对象以字符串形式输出
类中如果没有toString(),那么会调用父类(object)中的toString();
public String toString(){
Object类中的默认输出的名字和对象在内存中的地址(10进制 转为16进制)
  return getClass().getName()+"@"+Inter.toHexString(hashCode());
 

Equals()  用来比较字符串的内容

== 用于基本类型比较时,比较的值是否相等

== 用于引用类型比较时,比较的是两个引用的地址是否相同

以后如果比较两个对象中的地址是否相等时,直接使用==比较即可

  所以其他的类为了比较两个对象中包含的内容是否相等,

都对Object中的equals(),进行了重写,改为判断内容是否相等

 

Arrays类   操作数组工具类 

数组也是对象,也继承了Object类,数组名,equals()调用的是Object类中的equals()

Arrays.equals(a,b);// true 比较的是两个数组里面的内容是否相等

//二分查找算法,需要数组是有序的,

如果数组中不包含要找的key,返回负数,

找到了返回元素所在的索引位置

Arrays.binarraySearch(a,2);

//数组复制:

   Java中的数组在创建时,指定长度,一旦给定长度不能改变

   30---》扩容 40 new 40

将原数组中的内容复制到一个指定长度的新数组中

Int [] a = {1,2,3,4,5};

Int [] b =  Arrays.copyOf( a,  10);

Sout (Arrays.toString(b));

Sort -排序

Int [] a={1,3,4,86};

Arrays.sort(a);  对整个数组默认进行升序排序

对指定区间排序,包含开始位置,不包含结束

基本数据类型包装类

如何获得一个int类型的包装类型对象

Interger a = new Interger(10);

Interger b = new Interger(“10”);

Interger c = Interger.valueOf(10);

Interger d = Interger.valueOf(“10”);

装箱和拆箱

装箱:将基本类型可以自动转为包装类型

     

Int a = 10;

(Interger aa = a;)

Interger aa = Interger.valueOf(a);

Interger aa1 = new Interger(a);  自动装箱  直接把基本类型 赋值给包装类型

                            底层是默认调用valueOf(a);

Cache 缓存

当自动装箱时,默认调用Interger类中valueOf();

这个方法内部对-128--+127之间进行缓存(数组),在此区间的自动装箱

不会创建新的Interger对象,直接从数组中获取即可

超出此区间后,每次都会new 新的Interger对象

拆箱: 将包装类型转为基本类型,底层用到的是intValue()

Int bb = aa;

String 类

Java.lang.String 代表字符串

Java 中凡是“”括起来的 都是String类的实例(对象)

字符串的值不可改变的,一旦字符串对象被创建,值就不能被该改变了

底层存储字符串内容的数组,是被final修饰的,必须再对象创建之初由构造方法对其赋值

   每次+= + 其实都是创建了一个新的字符串对象

创建字符串对象:

方式1:

   String s1 = “abc”;

   String s2 = “abc”; 

//在第一次创建s1变量时,会在内存中有一个叫字符串常量池的空间检索,

有没有此内容的一个字符串对象,如果没有就会在字符串常量池中创建一个字符串对象

把这个对象的地址赋给了s1,

在第二次创建s2变量时,会去字符串常量池中查找,如果有直接将之前创建的字符串对象赋值给s2

一旦出现要创建的字符串对象一致,返回拿到的是同一个字符串对象的地址

方式2:

   String s1 = new String(“abc”);

//无论是否存在相同的字符串对象,都会创建一个新的字符串对象。

构造方法

Public String()

Public String (“abc”)

判断功能

获取功能

转换功能

String s3 = “abc”;

Byte [ ] bytes = s3.getBytes();//把字符串转为byte类型  转码

String s4 = new String(bytes);//解码

equalsIgnoreCase()忽略大小写

contains ()//判断是否包含子串

isEmpty()//判断是否是空串” ”

startsWith ()//判断是否是以指定的子串开头

endWith () 判断是否以指定的子串结尾

indexof()//返回指定字符首次出现的位置

lastIndexof()//从后往前查找   

substring()  //从指定的位置开始截取字符串,返回一个新的子字符串

substring(0,4);//从指定的位置开始到指定的位置结束(不包含结束),返回一个子串

String s = String.valueOf(a);//把其他类型转为字符串,建议使用的,避免出现空指针异常

Concat(”“) //上一个字符串并创建一个新的字符串对象返回

将指定字符串拼接到字符串末尾

Split(”“) 正则表达式

String[] strings = s4.split(“”);

//使用指定的字符将字符串分割为数组

String s =”abcdefg”;

System.out.println(s.replave(‘c’,’C’));

//replaceall()  使用正则表达式匹配需要替换的内容

Trim().length() ;//  链式调用(中间的空格去不掉,只能去掉前后的)

去掉中间的:

s.replace(target:” ”,replacement:””);

Math 类

Abs 绝对值

Sqrt 平方根

Pow(a,b) //a的b次幂

Math.flooe(9.9)//向下取整

Math.ceil(9.1)//向上取整

Round()//四舍五入

 Random();//返回一个大于等于0.0 小于1.0的随机数

Random类

Random random = new Random();

Sout(sandom.nextInt()); //在int 取值范围内随机返回一个参数

Sout(random.nextInt(bound:10)); //在指定的范围内返回一个随机数 大于等于零 小于给定的数

Byte[ ] bytes = new byte[5];

Random.nextbytes(bytes);

StringBuffer 类

 带缓冲区的字符串,字符串是可以改变的,

 即使值发生改变,始终都创建了一个对象

Char[ ] value ;   默认长度16    当装满16个元素时,数组扩容(数组长度*2+2)

  只需要改变数组的地址即可,不需要重新创建新的StringBuffer 对象

Capacity—容量

  StringBuffer s = new StringBuffer();

             s.appen(“abc”);

             s.appen(“efg”);  //默认向末尾添加

插入功能    

s.insert( 2, “xxx”);  //abxxxc  在2的位置插入元素

删除功能

s.deleteCharAt(2); //把该位置的元素删除

s.delete(0 , 3);  //删除指定区间的内容,包含开始位置  不包含结束

替换功能

s.replace( 0 , 2 ,”xxxx”);  用新内容替换指定区间的内容 包含开始位置 不包含结束位置

截取功能

s.substring(2);  //从第二个元素开始向后截取到结束,返回一个字符串副本 ,原字符串不变

StringBuilder类

也是一个字符串缓存区

与StringBuffer 所包含的方法一样,功能基本一致

区别:

StringBuffer 中的方法都被 synchronized 修饰,一次只允许一个请求进入操作,在多用户访问下是安全的

StringBuilder 中的方法都没有被synchronized 修饰,在多用户访问下是不安全的,只适用于单用户操作

 String : 值不可以改变,一旦改变了就会创建新的String 对象

 StringBuffer,StringBuilder 值是可以改变的,不会创建新的对象,变的只是底层的数组

 StringBuffer: 多线程是加锁的,是安全的

 StringBuilder : 没有加锁,多线程不安全,适合单线程场景

注意:
1、StringBuffer类中的  s.reverse()方法 反向:导致该字符序列被序列的相反代替。

2、IO包中的File类中的getName()方法

File file = new File(String str)  : 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

getName():返回由此抽象路径名表示的文件或目录的名称。

String 类中的substring(int beginIndex): 返回一个字符串,该字符串是此字符串的子字符串。

lastIndexOf(String str, int fromIndex):返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索。

Data类

Date date=new Date();   until包

 getYear();上面有一个删除线,表示此方法是弃用的方法,不建议用

但是也是可以调用的

测试程序运行的时间  程序运行前 new Date().getTime()

程序运行后 ~  后减前    (毫秒值)

Calendar 日历类 抽象类 不能用来new对象

用来定义日历功能的 具体的实现可以交给子类来实现

实现子类  : GregorianCalendar  格里高利(公历)是Calendar抽象类具体实现子类

simpleDateFormat  日期格式化类

new ~(pattern:“yyyy年MM月dd日 HH:mm:ss”)

S  毫秒

E 星期几

  将date类型 格式化为指定格式的字符串

String datestr = sdf.format(date);

把字符串日期 格式化为date类型

String str = “2002-3-2”;

SimpleDateFormat sdf1 = new SimpleDateFormat(“yyyy-MM-dd”);

Date d = sdf1.parse(str);

 

BigInteger

Integer int的包装类

BigInteger a = new BigInteger(“11111111111111111”);

BigInteger b = new BigIneger(“9999999999999999”);

BigInteger c = a.add(b);

Sout (a);

BigDecimal a = new BigDecimal(“0.1”);

BigDecimal b = new BigDecimal(“0.2”);

BidDecimal c = a.add(b);

Sout(c)://0.3

10

3

divide(b);

  除法运算时,默认遇到无限循环会报错,需要指定保留的小数位数,以及近似值的策略

 

String s = “abc”;   char [ ] c = [‘a’,’b’,’c’ ]

String s = “ab:cd:efg”;

String [ ] array = s.split(regex:”:”);

正则表达式   -规则

是一种模式匹配语法   

 可以使用一些符号,来定义一个规则,然后用规则与字符串进行匹配

验证输入的内容必须是一个手机号格式

第一位1

第二位 3 5 7 8 9

从第三位开始都是数字即可

charAt();

拿到字符串的每一位进行判断

正则表达式中符号

 \d  匹配的是0-9之间的数字

String p = “1234567890”;

Boolean b = p.matches(“\\d*);

Matches(“\\d{9}”)

Matches(“\\d{3,6}”);

Sout(b);

Boolean b = p.matches(“[a-z ]*”)  *//任意个

(“[A-z]*”)

(“\\w”); //对大小写字母,数字,下划线

//邮箱格式

Boolean b = p.matches(“\\w{6,10}@\\w{2,6}\\.(com|com.cn)”);

String s = “ab3cd5efg”;

s.replace(“c”,”C”);

replaceAll(_,_);前是正则表达式;

replaceFirst();  只匹配第一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值