常用类及方法解析

目录

API(Application Programma Interface)

object

基本类型包装类

自动装箱和自动拆箱

Arrays类

String类

StringBuffer

StringBuilder

Math类

Random类

Date类

Calendar类

simpleDateFormat类

BigInteger类

BigDecimal大浮点数


API(Application Programma Interface)

应用程序编程接口 学习怎么使用这些方法

object

最顶级的类

object类中定义的方法:

toString:原本是类名加十六位进制的哈希值(重写)

equals:

字符串的equals方法比较的是内容(因为string对象里有equals方法)

自我创建的对象 的equals方法直接比的是地址 要重写!!

基本类型包装类

基本类型:八种基本数据类型:int char short byte float double boolean long

包装类:使用关键字定义,不是面向对象的

所以都提供了一个类进行包装,这样就是 面向对象的

//所以呢我们的包装类 一般是静态加final修饰的 可通过类直接调用 但是 不能继承重写 您就只有使用的机会
//有两种构造方法 可以直接在创建Integer类的对象是直接通过构造器直接赋值  也可以传入数字的字符串它会直接变成int
//可通过To什么转为二进制十六进制等等
//自动装箱 和拆箱 可直接互相赋 将基本数据类型和包装类型 互相变
//但是 有一个装箱问题 可能是为了效率问题 当你装箱的值在-128到127之间 它自己本身会先查看这个数是否在这个区间 在的化就直接用 不用创建新的对象
//object类  也叫作基类 万类之父 类王 哈哈哈  所有的类都可以实现它的静态的方法 比如自带的toString(输出的是类和地址)和equals方法

自动装箱和自动拆箱

基本类型和基本类型包装类之间转换

自动装箱:把基本类型 转为 包装类型

Integer ba = a;

自动拆箱:把包装类型 转为 基本类型

int c = ba;

自动装箱的问题:

默认会调valueOf(int a)方法

在-128到+127中 直接返回的是创建好的数组的对象

不在此范围中才创建对象

所以建议用包装类的equals方法.

Arrays类

equals方法:比较两个数组内容是否相当

toString方法:输出数组

binarySearch方法:要求数组必须有序(区间包含开始 不包含结束位置)

sort:引用数据类型排序,先重写tostring 然后是我们的类接入comparab<>接口 实现接口的方法

copy方法:用来扩容数组,赋值加扩容

  int[] a = {7,2,3,4,5};
       int[] b = {1,2,3,4,5};
        System.out.println( Arrays.equals(a,b) );
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
       Student[] s =  new Student[3];
        Student hah = new Student(100, "hah");
        Student mem = new Student(102, "mem");
        Student lili = new Student(101, "lili");
        s[0] = hah;
        s[1] = mem;
        s[2] = lili;
        Arrays.sort(s);
        System.out.println(Arrays.toString(s));
        String ss1 = "123";
        String ss2 = "12345";
                ss1 += "45";
        String[] string = new String[2];
               string[0]=ss1;
               string[1]=ss2;
        System.out.println(Arrays.toString(string));

String类

字符串:字符拼接

String s = "123";

在内存中创建了一个String对象,创建后就不可改变

s1已经创建了四个对象

String s1 = "123";

String s2 = "123";

String s3 = new String("123");

s1 常量池 先会去常量池去找有没有这个地方

没有的话 就在常量池里面创建新的对象

第二次s2就直接在常量池里找 所以两个引用地址一致

编码解码

将字符串转为字符数组 然后对字符数组排序

判断功能

equals:重写了object方法 比较的是内容

equalsIgnoreCase;忽略大小写

contains:字符串是否包含一个字串

isEmpty:是否为空(不能是Null)

startsWith:是否已什么开头

endWith:是否已什么结尾

compareTo:字符串比大小

获取功能

使用频率多

length:获取字符串长度

charAt(n):第n+1个位置的字符(第一次字符串出现的位置)

indexOf(字符,):找你需要的字符位置,可查找出现的第n个位置

substring:截取字符串(开始位置,结束位置(不包含结尾))

转换功能

toLowerCase();转大写

toSuperCase();转小写

concat:连接字符串

split;按制定的规则拆分为数组 返回的是String类型的数组 所以要用String数组来接受

   //String类
        //首先来看看这两个区别 String = "123";
       // String s1 = new String("123");
        //第二个肯定创建了对象 这是不用说的 第一个是现在常量池里找 没有的话在创建 如果这是在创建第一个再一次 那么常量池就有了 所以不用创建了 直接指向就行了
        //底层还时用char或者byte的数组穿起来的
        String s11 = new String("adfasfdas");
        System.out.println(s11.isEmpty());
        System.out.println(s11.contains("m"));
        System.out.println(s11.length());
        System.out.println(s11.indexOf("a",6));
        //substring就是截取字符串 可选开始 和 结束
        System.out.println(s11.substring(1,3));
        System.out.println(s11.charAt(5));
        byte[] aa1 =  s11.getBytes();
        System.out.println(aa1.toString());

         String ab = s11.replace("a","1");
        System.out.println(ab);

正则表达式

regex

正则>规则>模式(去匹配某个字符串是否满足某个功能)

可以使用特定的字符来制定规则 用规则匹配字符串

学习那些常用的字符

StringBuffer

这是类 buffer(缓冲)缓冲区

线程安全 也是字符串 可变

String对象的值不可改变,会产生问题,会创建很多的字符串对象,造成浪费

如果某些场景下 大量的拼接字符串 可使用StringBuffer()默认底层数组的容量是16

可改容量,没有被final修饰 可以改变

添加方法:append()

StringBuffer 和String两者可以互相转

substring(截取) 会产生一个新对象

StringBuilder

多线程 不安全

都是可变的字符串

底层是一样的 都是数组

buffer的添加方法多了一个关键字 synchronized(同步锁) 是线程安全

区别:

buffer是多线程安全的 builder是多线程不安全的

相同点 都是可变的字符串对象

底层都有一个char数组

创建之初会有指定的数组

数组如果空间不够 会新创建一个数组

String:最大区别是不可变

Math类

数学运算方法

静态的

native:修饰的方法是本地方法 是系统的方法 直接调用 没有方法体

round四舍五入

 //math类
        System.out.println(Math.abs(-1000));
        System.out.println(Math.sqrt(9));//输出的还是double类型
         System.out.println((int)Math.random());

Random类

random.nextInt(n)指定区间,不包括n

nextint 可加 数 来控制 起始位置

  //random类
        Random random = new Random();
        System.out.println(random.nextInt(200));
         char[] aaa =  s11.toCharArray();

Date类

代表当前系统的时间();表示一个日期对象

date.getYear()(从1900年开始)

.getMonth()(月份也要加一)

.getMinutes()

.get现在版本中已经不建议使用了

.getTime()(long类型 返回的是 1970.1.1 到现在的时间 毫秒差)(用于程序用了多久的时间)

Calendar类

日历

提供更多的方法

(抽象类不能创建对象)

可以用多态表示它

Calendar calendar

GregorianCalendar 格里高利 公历

(唯一实例子类)

calendar.get(calendar.YEAR)

calendar.get(calendar.MONTH) 月份要加1

DAY-of-YEAR(今天是今年的第几天)

WEEK-of-YEAR(今天是今年的第几周)

simpleDateFormat类

***我觉得这个重要

简单的日期格式化

simpleDateFormat("")

format()

把字符串转为date对象

simpleDateFormat.parse() 传进来个字符串 返回个date对

BigInteger类

大整数类

比long也大的多

是个类 用add() 等方法加减乘除

BigDecimal大浮点数

因为浮点数不精确..无限接近的近似值

所以加减要十分小心!!

用add() 等方法加减乘除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值