Scanner:
常用成员方法:
- hasnext():判断是否存在输入。(boolean)
- hasNextxxx():判断从指定的输入流中是否有下个指定 xxx 类型的数据。(要求输入一个相应的数据类型) (boolean)
- nextxxx():从指定的输入流中读取下个指定 xxx 类型的数据,读取时会忽略前面的空格字符,next():输入字符串
System (常用的类方法):
- static long currentTimeMillis():返回以毫秒为单位的当前时间(主要适用于计算某段代码的运行的时间)注:这个是距离1970年1月1日0时的时间。
-
static void exit(int code):退出虚拟机操作,0 正常退出,-1 异常退出。 (这个退出是退出整个程序,所以下边的打印语句是不会被执行的。注意与break的区别。)
-
static void arraycopy(Object src, in srcPos, Object dest, int descPos, int length): 将 src 数组对象中的 srcPos 位置开始,将数组元素拷贝到数组对象 dest 中,从数组对象的 descPos 开始拷贝,拷贝的元素的个数由 length 参数确定。length 参数不要超过从指定位置 srcPos 到数组对象 src 最后一个位置的长度,否则抛出数据越界异常。
Object:
- clone():返回object类.
Object 这个类提供的 clone 方法用于实现对象的复制,复制的对象需要两个准备工作:1、要 clone 的类实现标识接口 Cloneable,表示该对象可以支持复制操作。2、将从父类中继承的 clone 方法暴漏出来,因为 clone 方法在 Object 类中是 protected 修饰的。clone 方法的执行操作就是将 beauty对象中所有的成员变量值全部复制一遍,再放到 clone 对象中保存,对 于beauty 对象中的基本数据类型,复制的是具体的值,而对于引用类型来说仅仅是复制了地址值而已, 所以cat的地址是相同的。两个复制的beauty对象之间的地址是不同的。
import sun.font.FontRunIterator;
class cat implements Cloneable{
public void say01(){
System.out.println("chkbeb");
}
protected Object clone() throws CloneNotSupportedException{
return super.clone();
}
}
class beauty implements Cloneable{
private cat cat;
private String name;
protected Object clone() throws CloneNotSupportedException{
return super.clone();
}
public beauty(String name,cat cat){
this.cat = cat;
this.name = name;
}
public void say(){
System.out.println("kvbfbuib");
}
public cat getcat(){
return cat;
}
}
public class day01 {
public static void main(String[] args) throws CloneNotSupportedException {
cat cat = new cat();
beauty b = new beauty("张三",cat);
b.say();
beauty c = (beauty) b.clone();
System.out.println(b==c);//false
System.out.println(b.getcat()==c.getcat());//true
}
}
- getClass():返回运行时的类,返回值的类型时Class.
Random:
- int nextInt(int n):返回该类型(double等)的一个随机数。返回的范围是[0,n)范围内的随机数
- int nextInt():返回该类型的一个随机数。返回的范围是 int 范围内的随机数
Math:
- static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
- static int abs():返回该类型的绝对值
- static int round():返回最接近参数的
int值
。对于正数,从5开始往前加(四舍五入),对于负数,从6开始往前加
BigDecimal:(解决精确度的问题)
- BigDecimal 类提供了 add()、subtract()、multiply()、divide()、pow(int n)(幂运算)、等方法对精确浮点数进行常规算术运算
- 常见问题:
- 举例:
- roundingMode(进制模板):
String:
构造方法:
- public String() :初始化新创建的 String 对象,以使其表示空字符序列。
- public String(“xxx”) :初始化新创建的 String 对象,以使其表示”xxx”字符序列。
- public String(char[] value) :通过当前参数中的字符数组来构造新的 String。
- public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
- public String(byte[] bytes, Charset charset) :通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
注:方法都是存在方法区里面,方法里的常量在常量池里面。
字符串转换:
常用方法:
- public int length () :返回此字符串的长度。
- public String concat (String str) :将指定的字符串连接到该字符串的末尾。
- public char charAt (int index) :返回指定索引处的 char 值。
- public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。 (返回的是第一个字符的索引)
- public int lastIndexOf (String str) :返回指定子字符串最后一次出现在该字符串内的索引。
- public String substring (int beginIndex) :返回一个子字符串,从 beginIndex 开始截取字符串到字符串结尾。
- public String substring (int beginIndex, int endIndex) :返回一个子字符串,从 beginIndex 到 endIndex截取字符串。含 beginIndex,不含 endIndex。
- public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
- public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写
- public boolean contains(CharSequence s) :当且仅当此字符串包含指定的 char 值序列时,返回 true。
- public boolean endsWith(String suffix) : 测试此字符串是否以指定的后缀结束。
- public boolean startsWith(String prefix) : 测试此字符串是否以指定的前缀开始。
- public boolean startsWith(String prefix,int toffset) : 测试此字符串是否以指定的前缀开始。
- public char[] toCharArray () :将此字符串转换为新的字符数组。
- public byte[] getBytes () :使用平台的默认字符集将该 String 编码转换为新的字节数组。
- public String replace (CharSequence target, CharSequence replacement) :将与 target 匹配的字符串使用replacement 字符串替换。 (默认是全部代替)(这是不用正则表达式)
- public staitc String copyValueOf(char[] data) : 返回指定数组中表示该字符序列的 String。
- public staitc String copyValueOf(char[] data, int) : 返回指定数组中表示该字符序列的 String。
- publc String toLowerCase() : 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
- public String toUpperCase(): 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
- public String trim() : 返回字符串的副本,忽略前导空白和尾部空白。
-
public String[] split(String regex) :将此字符串按照给定的 regex(规则)拆分为字符串数组
-
共性:每个方法应该都会有从第几个开始查找的参数。
升序排列:
降序排列:
compareTo:返回的是int值,这个是左边的-右边的,对于字符串,依次比较其unicode编码
空字符串:
字符包装类:
StringBuffer和StringBuider:
作用:多用于对字符串的修改
构造方法(StringBuider为例,自动扩容):
- String Builder() : 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
- StringBuilder(String str) : 构造一个字符串生成器,它包含与指定的 str 相同的字符。该字符串生成器的初始容量为 16 加上字符串参数的长度。
- StringBuilder(int capacity) : 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定
常用成员方法(具有和String常用的方法外):
- public String toString():返回字符串(实现字符串与其的转换)。
- public StringBuilder append(xxx xx) : 将 xx 参数的字符串表示形式追加到序列。
- public StringBuilder delete(int start, int end) : 移除此序列的子字符串中的字符。
- public StringBilder deleteCharAt(int index) : 移除此序列指定位置上的 char。
- public StringBuilder insert(int offset, xxx xx) : 将 xx 参数的字符串表示形式插入此序列中。
- public StringBuilder replace(int start, int end, String str) : 使用给定 String 中的字符替换此序列的子字符串中的字符。
- public StringBuilder reverse() : 将此字符序列用其反转形式取代。
- public void setCharAt(int index, char ch) : 将给定索引处的字符设置为 ch。
- public void setLength(int newLength) : 设置字符序列的长度。 (截取字符串)
注:insert插入的时候,在其后面的所有值的所以都会加一;
import javafx.scene.chart.PieChart;
import java.util.Date;
import java.util.Random;
//在"eciwueckccbieuewiuk"字符串里面每个2个字符随机插入一个"1235565656"种的字符
public class string {
public static void main(String[] args) {
String s = "1235565656";
String c = "eciwueckccbieuewiuk";
Random random = new Random();
//转化成stringbuider
StringBuilder stringBuilder = new StringBuilder(c);
int index = 2;
while(index<stringBuilder.length()){
char randomchar = s.charAt(random.nextInt(s.length()));//[0,n);
stringBuilder.insert(index, randomchar);
index = index+3;
}
if(index == stringBuilder.length()){
stringBuilder.insert(index, s.charAt(random.nextInt(s.length())));
}
System.out.println(stringBuilder.toString());
}
}
Data:
构造方法:
- public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
- public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间, 即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
- 注意: 由于我们处于东八区,所以我们的基准时间为 1970 年 1 月 1 日 8 时 0 分 0 秒。
常用成员方法:
- getTime():返回long型的距离linux元年的毫秒数
- setTime(long):设置距离linux元年的毫秒数
Calendar:
获取对象:通过子类的获取:
格式化输出:
增补:
两者之间的转化:
SimpleDateFormat :(把日期格式化输出)
DecimalFormat:(数字格式化)
正则表达式:(本质是确定要一个什么样的字符串)
特殊字符 | 含义 |
() |
标记子表达式的开始和结束位置,如果要匹配(或者)使用\( 或者\)
|
* | 随便几次 |
+ | 至少一次 |
? | 要么一次,要么没有 |
. | 代表除换行符之外的任何符号 |
|(或) | 二选一 |
注意:上面这个表格里面的字符,在正则表达式里面是直接写上去的
预定义字符
| 解释 |
\d
|
0-9
|
\D |
非数字
|
\s
|
所有的空白字符,包括空格、制表符、回车符、换页符、换行符
|
\S
|
所有非空白字符
|
\w
|
所有的单词字符,包括 0~9 所有的数字、26 个英文字母和下画线
|
\W
|
所有的非单词字符
|
注意:上面这个表格上的所有在正则表达式里面是需要加"\"的;
方括号表达式
| 解释 |
[abc] |
表示 a、b、c 其中任意一个字符;[gz]标志 g、z 中的任意一个字符
|
表示范围:-
|
[a-f],表示 a 到 f 之间的任意字符,范围可以和枚举结合使用,如:[a-fx-z]匹配 a 到 f 或者 x 到 z的任意字符
|
表示否:^
|
[^a-f],表示非 a、b、c、d、e、f 的任意字符
|
表示与:&&
|
[a-z&&[d-f]],表示 a 到 z 与 df 的集合,d、e 或者 f
[a-z&&[^bc]],a-z 所有的字符除了 bc 之外。
[a-z&&[^d-h]],a-z 所有字符除去 d-h 之间的字符,即 a-c 和 i-z 之间的字符
|
表示“并”运算
|
[a-dm-p],即 a-d 所有的字符和 m-p 之间的所有字符
|