文章目录
- 基本类型包装类
- 装箱
- 拆箱
- 常见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
>>3String
字符串类
常见方法:
//构造方法
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)
















