文章目录

  • 基本类型包装类
  • 装箱
  • 拆箱
  • 常见API
  • Object
  • equals()
  • toString
  • Arrays
  • sort()
  • binarySearch
  • String
  • 部分正则规则
  • 普通字符和10个元字符:
  • 预定义字符集(可以写在字符集[...]中)
  • StringBuffer 和 StringBuilder
  • Math
  • Random


基本类型包装类

在使用基本数据类型的时候,常常无法快速的解决一些问题,

所以,为了方便人们使用,产生了,基本类型包装类:

基本数据类型

包装类

byte

Byte

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

boolean

Boolean

使用包装类和使用对象一样, 可以调用一些方法, 提高了代码的可变性

装箱

装箱就是把基本类型的数据直接付给包装类

int a = 1;
Interger a1 = a;
//装箱

装箱时在底层自动调用 valueof ()方法

拆箱

对比装箱,反着来 :自动调用 isvalue ()方法

Interger a = 1;
int a1 = a;

常见API

api在现在指的是程序员对包装类使用时查看的文档

Object

是所有java类的祖先,在继承时,如果没有继承,则底层默认继承了 object类

equals()

比较两个对象是否是同一个对象的引用

比较两个对象是否相同
String a = new String("abc");
String b = new String("abc");
a.equals(b)   如果引用值相同,那返回true 否则返回false
>>>true
a == b
>>>false

在自己使用时,可以重写equals方法:

toString

转化为字符串输出

Arrays

操作数组的工具类:

常见方法,equals,sort,binarySearch,toString

sort()

排序,

Arrays.sort方法可以对指定数组进行排序 , 在java底层,sort使用的就是快速排序

1.可以使用 数组.sort(int[])调用a
    int [] a = {4,6,8,9,13,2,1,64,9,3};
	Arrays.sort(a);
	System.out.println(a);
	>>> [1, 2, 3, 4, 6, 8, 9, 9, 13, 64]

2.使用Arrays.sort(int[], int fromIndex(包括), int toIndex(不包括))
    int [] a = {4,6,8,9,13,2,1,64,9,3};
	Arrays.sort(a,5,8);
	System.out.println(a);
	>>>[4, 6, 8, 9, 13, 1, 2, 64, 9, 3]
        //只排序了索引5-8的长度,且 取不到8  左开右闭

binarySearch

查找,使用二分查找去查找值, 如果找到,则返回索引值的下标,找不到返回一个负数

public class SearchMY {
    public static void main(String[] args) {
        int[] arr1 = {12,2,6,56,5,1,3,4};
        Arrays.sort(arr1);
        System.out.println(Arrays.binarySearch(arr1,1));
        System.out.println(Arrays.binarySearch(arr1,2,4,1));
        System.out.println(Arrays.binarySearch(arr1,0,6,1));
        System.out.println(Arrays.binarySearch(arr1,0,0,1));
        System.out.println(Arrays.binarySearch(arr1,6,6,1));
        SearchMYSELF s1 = new SearchMYSELF();
        System.out.println(s1.searchmy(arr1,4));
    }
}
>>0
>>-3
>>0
>>-1
>>-7
>>3

String

字符串类

常见方法:

//构造方法
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)
String[] split("分割符");

有时需要用到正则表达式:

部分正则规则

普通字符和10个元字符:

元字符

用法

写法(以abc为例子)

以abc为例子(可以匹配的类型)

普通字符

匹配自身

abc

abc

.

匹配任意除换行符"\n"外的字符(在DOTALL模式中也能匹配换行符

a.c

abc

\

转义字符,使后一个字符改变原来的意思

a.c;a\c

a.c;a\c

*

匹配前一个字符0或多次

abc*

abccc

+

匹配前一个字符1次或无限次

abc+

abccc

?

匹配一个字符0次或1次

abc?

ab;abc

^

匹配字符串开头。在多行模式[]中匹配每一行的开头

^abc

abc

|

或。匹配|左右表达式任意一个,从左到右匹配,如果|没有包括在()中,则它的范围是整个正则表达式

abc|def

abc,def

{}

{m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次

ab{1,2}c

abbc

[]

字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。[^abc]表示取反,即非abc。所有特殊字符在字符集中都失去其原有的特殊含义。用\反斜杠转义恢复特殊字符的特殊含义。

a[bcd]e

abe,ace,ade

()

被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的左括号“(”,编号+1.分组表达式作为一个整体,可以后接数量词。表达式中的、

仅在该组中有效。

(abc){2},a(123|456)c,abcabc,a456c

预定义字符集(可以写在字符集[…]中)

预定义字符集

用法

写法(以abc为例子)

以abc为例子(可以匹配的类型)

\d

数字:[0-9]

a\dc

a1c

\D

非数字:[^\d]

a\Dc

abc

\s

匹配任何空白字符:[<空格>\t\r\n\f\v]

a\sc

a c

\S

非空白字符:[^\s]

a\Sc

abc

\w

匹配包括下划线在内的任何字字符:[A-Za-z0-9_]

a\wc

abc

\W

匹配非字母字符,即匹配特殊字符

a\Wc

a c

\A

仅匹配字符串开头,同^

\Aabc

abc

\Z

仅匹配字符串结尾,同$

abc\Z

abc

\b

匹配\w和\W之间,即匹配单词边界匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。

\babc,\ba,\b!bc

空格abc空格,a!bc

\B

匹配非单词边界

a\Bbc

abc

手机号:("[1][35789]\\d{9}");
邮箱:("\\w{6,14}@\\w{2,6}\\.com|com\\.cn");
qq号:("\\d{6,10}")

package com.cxy.javaapi.day3;

import java.util.Random;
import java.util.Scanner;

public class Zhengze {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int cout = 1;
        while (true){
            System.out.println("请输入您的手机号以获得验证码:)");
            String phoneNum = sc.next();
            System.out.println("请输入你的邮箱:");
            String emailstr = sc.next();
            boolean choose1 = phoneNum.matches("[1][35789]\\d{9}");
            boolean choose2 = emailstr.matches("\\w{6,14}@\\w{2,6}\\.com|com\\.cn");
            boolean choose3 = choose1&&choose2;
            Random r1 = new Random();
            if (choose3){
                int randomnum = r1.nextInt(10000);
                System.out.println("你的验证码为"+randomnum+"\n祝您生活愉快");
                break;
            }else if(cout<=3){
                System.out.println("输入不合法!\n手机号或邮箱不存在");
                cout++;
            }else{
                System.out.println("我*你****的,不会看提示的么?你**你*,***");
                System.out.println("别tm输了,**");
                break;
            }
        }

            String s = "1069664  381@  12";
            boolean choose2 = s.matches("\\w{6,14}@\\w{2,6}\\.com|com\\.cn");
            boolean choose4 = s.matches(".*?com.*?");
            System.out.println(choose4);
            if(choose2){
                System.out.println("yes");
            }else{
                System.out.println("no");
        }
    }
}

StringBuffer 和 StringBuilder

两个都是字符串类型的加强版,可以增删查改

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

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

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

append() -->追加

insert(0,item) --> 指定位置添加

deletecharAt()—>删除指定字符

delete(0,5) —>删除指定索引

replace() —>字符串替换

reverse() -->字符串逆序

String s1 = "misaki";
        String s2 = "misakimisaki";
        String Us1 = s1.toUpperCase();
        String Lus1 = Us1.toLowerCase();
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(Us1);
        System.out.println(Lus1);       
String s1 = "misaki";
        String s2 = "misakimisaki";
        System.out.println(s1.length());
        System.out.println(s1.charAt(5));
        System.out.println(s1.indexOf("c"));
        System.out.println(s1.indexOf(97,0));
        System.out.println(s2.indexOf(0,0));
        System.out.println(s1.indexOf("s"));
        String s3 = s2.substring(2);
        String s4 = s2.substring(6,s2.length());
        String[] s5 = s2.split("");
        System.out.println(s3+"\n"+s4);
        System.out.println(Arrays.toString(s5));
        String[] s6 = s2.split("m");
        System.out.println(Arrays.toString(s6));
String s1 = "misaki";
        String s2 = "misakimisaki";
        String s3=s1.replace("ki","ki10032");
        System.out.println(s1);
        System.out.println(s3);
        String s4 = s1.replaceAll(".","?");
        System.out.println(s4);
StringBuffer s1 = new StringBuffer("misaki");
        String [] a = {"hello","world","!"};
        System.out.println(s1);
        for (String item:a) {
            s1.append(item);
            s1.append(" ");
        }
        System.out.println(s1);
        s1.insert(6,"say ");
        s1.insert(6," ");
        System.out.println(s1);
        s1.replace(0,6,"masaji");
        System.out.println(s1);
        System.out.println(s1.reverse());
        s1.reverse();
        s1.delete(6,s1.length());
        System.out.println(s1);
        StringBuilder s2 = new StringBuilder("misaki");
        for (String item:a) {
            s2.append(" ");
            s2.append(item);
        }	
        System.out.println(s2);
	    System.out.println(s3.isEmpty());
        System.out.println(s3.startsWith("a"));
        System.out.println(s3.endsWith("a"));

Math

数学方法

主要方法举例:

max min pow random

Random

Random类概述

此类用于产生随机数

public Random()
public int nextInt()
public int nextInt(int n)