这篇文章用来整理用过的类。[本文长期更新]
文章目录
import java.util.Arrays;//数组
String [] b=Arrays.copyOf(a, a.length);//API:复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。对于在原数组和副本中都有效的所有索引,这两个数组将包含相同的值。对于在副本中有效而在原数组无效的所有索引,副本将包含 null。当且仅当指定长度大于原数组的长度时,这些索引存在。所得数组和原数组属于完全相同的类。
//返回:原数组的副本,截取或用 null 填充以获得指定的长度
import java.util.Random;//产生随机数的包
Random random=new Random();
int realNumber=random.nextInt(100)+1;//random.nextInt(100)是[0,100)中的一个随机数
一 、String类
charAt(int index)//返回指定索引处的char值
public int compareTo(String anotherString)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
public int compareToIgnoreCase(String str)按字典顺序比较两个字符串,不考虑大小写
public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
public int length()返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。
toString() 返回一个包含此序列中字符的字符串,该字符串与此序列的顺序相同。
indexOf(String str)// 返回指定子字符串在此字符串中第一次出现处的索引
public String trim() :得到一个s去掉前后空格后的字符串对象。
public String substring(int startpoint):获得一个当前字符串的子串 ,其相关方法:
substring(int start ,int end)
lastIndexOf(String str) : 返回指定子字符串在此字符串中最右边出现处的索引。
String trim() : 返回字符串的副本,忽略前导空白和尾部空白
字符串与字符数组:
◆ String 类的构造方法:String(char[])和String(char[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象
◆ String类提供了将字符串存放到数组中的方法:
public void getChars(int start,int end,char c[],int offset )
◆将字符串中的全部字符存放在一个字符数组中的方法:
public char[] toCharArray()
字符串与字节数组
◆ String(byte[])用指定的字节数组构造一个字符串对象。
String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。
◆public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。
◆ public byte[] getBytes(String charsetName) 使用参数指定字符编码,将当前字符串转化为一个字节数组。抛出UnsupportEncodingException,因此必须 使用try-catch语句
static String valueOf(boolean b)
返回 boolean 参数的字符串表示形式。
static String valueOf(char c)
返回 char 参数的字符串表示形式。
static String valueOf(char[] data)
返回 char 数组参数的字符串表示形式。
static String valueOf(char[] data, int offset, int count)
返回 char 数组参数的特定子数组的字符串表示形式。
static String valueOf(double d)
返回 double 参数的字符串表示形式。
static String valueOf(float f)
返回 float 参数的字符串表示形式。
static String valueOf(int i)
返回 int 参数的字符串表示形式。
static String valueOf(long l)
返回 long 参数的字符串表示形式。
static String valueOf(Object obj)
返回 Object 参数的字符串表示形式。
char[] toCharArray()
将此字符串转换为一个新的字符数组。
二、StringBuffer类
2.1 StringBuffer类有三个构造方法:
1.StringBuffer()使用这个构造方法构建的对象,则分配给该对象的实体的初始容量可以容纳16个字符,当该对象的实体存放的字符序列的长度大于16时,实体的容量自动的增加,以便存放增加的字符。
StringBuffer对象可以通过调用length()方法获取实体存放的序列的长度,通过capacity()获取当前实体的实际容量。
2.StringBuffer(int size)
3.StringBuffer(String s)
2.2StringBuffer类的常用方法 :
1.StringBuffer append(String s):将一个字符串对象追加到当前StringBuffer对象中
StringBuffer append(int n):将一个int型数据转化为字符串对象后再追加到当前StringBuffer对象中
StringBuffer append(Object o):将一个Object对象的字符串表示追加到当前StringBuffer对象中
类似的方法还有:
StringBuffer append(long n),StringBuffer append(boolean n),
StringBuffer append(float n),StringBuffer append(double n),
StringBuffer append(char n)
2.public chat charAt(int n ):得到参数n指定的置上的单个字符
public void setCharAt(int n ,char ch):将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换
3.StringBuffer insert(int index, String str) :将参数str指定的字符串插入到参数index指定的位置
4.public StringBuffer reverse() :将该对象实体中的字符翻转
5.StringBuffer delete(int startIndex, int endIndex) :从当前StringBuffer对象实体中的字符串中删除一个子字符串(要删除的字符串从startIndex到endIndex-1)
其相关方法: deleteCharAt(int index) 删除当前StringBuffer对象实体的字符串中index位置处的一个字符。
- StringBuffer **replace( int startIndex ,int endIndex, String str) 😗*将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换 (要替换的字符串从startIndex到endIndex-1)
7.public int indexOf(String str) int index=str.indexOf(“好”);//indexOf(“好”)api:返回指定子字符串第一次出现的字符串内的索引。
注:可以使用String类的构造方法String(StringBuffer bufferstring)创建一个字符串对象
三、 StringTokenizer类
和split()方法不同的是:StringTokenizer对象不使用正则表达式做分隔符。有时需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。
StringTokenizer类在java.util包中,有两个常用的构造方法:
◆StringTokenizer(String s):为字符串s构造一个分析器。使用默认的分隔标记,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符。
◆ StringTokenizer(String s, String delim):为字符串s构造一个分析器。参数dilim中的字符被作为分隔标记 。
例如:
StringTokenizer fenxi=new StringTokenizer(“you are welcome);
StringTokenizer fenxi=new StringTokenizer(“you,are;welcome”,”,;");
◆ StringTokenizer对象称作一个字符串分析器可以使用下列方法:
nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一 。
hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。
countTokens():得到分析器中计数变量的值。
分析模版
四、Arrays类:
String []a={“melon”,“apple”,“pear”,“banana”};
String [] b=Arrays.copyOf(a, a.length);//API:复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。对于在原数组和副本中都有效的所有索引,这两个数组将包含相同的值。对于在副本中有效而在原数组无效的所有索引,副本将包含 null。当且仅当指定长度大于原数组的长度时,这些索引存在。所得数组和原数组属于完全相同的类。
//返回:原数组的副本,截取或用 null 填充以获得指定的长度
**equals(double[] a, double[] a2)**如果两个指定的 double 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。此外,如果两个数组引用都为 null,则认为它们是相等的。如果以下条件成立,则认为两个 double 型数组 d1 和 d2 是相等的: new Double(d1).equals(new Double(d2))(与 == 操作符不同,此方法认为 NaN 等于它本身,而 0.0d 不等于 -0.0d。)
sort(char[] a) // 对指定的 char 型数组按数字升序进行排序。
toString(double[] a) //返回指定数组内容的字符串表示形式。
public boolean **contains(String s)😗*判断当前字符串对象是否含有参数指定的字符串s
五、Date类 :实例可用于处理和日期、时间相关的数据
Date类在java.util包中。
1.使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
例: Date nowTime=new Date();
2.使用Date类的无参数构造方法 Date(long time)
例:Date date1=new Date(1000),
date2=new Date(-1000);
日期格式化
使用java.text包中的DateFormat的子类SimpleDateFormat来实现日期的格式化。
SimpleDateFormat有一个常用构造方法:
public SimpleDateFormat(String pattern);
该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:
public String format(Date date)方法格式化时间对象date。
java.lang包中的Integer类调用其类方法:
public static int parseInt(String s)
可以将由“数字”字符组成的字符串,如"12356",转化为int型数据,例如:
int x;
String s = “123456”;
x = Integer.parseInt(s);
类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。
◆可以使用String 类的类方法public static String valueOf(byte n)d等将形如123、1232.98等数值转化为字符串。
◆可以使用Long类中的类方法public static String toBinaryString(long i)等得到整数的各种进制的字符串表示。
六、 Calendar类
1 Calendar类在java.util包中。使用Calendar类的static方法 getInstance()可以初始化一个日历对象,如:
Calendar calendar= Calendar.getInstance();
2 calendar对象可以调用方法:
public final void set(int year,int month,int date)
public final void set(int year,int month,int date,int hour,int minute)
public final void set(int year,int month, int date, int hour, int minute,int second)
public final void setTime(Date date)使用给定的 Date 设置此 Calendar 的时间
将日历翻到任何一个时间
3 calendar对象常用方法
◆public int get(int field) :可以获取有关年份、月份、小时、星期等信息 ,参数field的有效值由Calendar的静态常量指定,例如:calendar.get(Calendar.MONTH);返回一个整数,如果该整数是0表示日历在1月,1表示日历在2月等。
例如:calendar.get(DAY_OF_WEEK);返回一个整数。如果该整数是1表示星期日,如果是2表示星期一,以此类推,如果是7表示星期六。
◆ public long getTimeInMillis() :可以将时间表示为毫秒。
七、 Math类
Math类在java.lang包中。Math类包含许多用来进行科学计算的类方法,这些方法可以直接通过类名调用。另外,Math类还有两个静态常量,它们分别是:
E 2.7182828284590452354和 PI 3.14159265358979323846。
Math.PI,Math.E
以下是Math类的常用类方法:
*public static long abs(double a) 返回a的绝对值。
*public static double max(double a,double b) 返回a、b的最大值。
*public static double min(double a,double b) 返回a、b的最小值。
*public static double random() 产生一个0到1之间的随机数(不包括0和1)。
*public static double pow(double a,double b) 返回a的b次幂。
*public static double sqrt(double a) 返回a的平方根。
*public static double log(double a) 返回a的对数。
*public static double sin(double a) 返回正弦值。
*public static double asin(double a) 返回反正弦值。
七、 BigInteger类
1 java.math包中的BigInteger类提供任意精度的整数运算。可以使用构造方法:
public BigInteger(String val)
构造一个十进制的BigInteger对象。
2 以下是BigInteger类的常用类方法:
*public BigInteger add(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的和。
*public BigInteger subtract(BigInteger val)返回当前大整数对象与参数指定的大整数对象的差。
- public BigInteger multiply(BigInteger val)返回当前大整数对象与参数指定的大整数对象的积。
*public BigInteger divide(BigInteger val)返回当前大整数对象与参数指定的大整数对象的商。
*public BigInteger remainder(BigInteger val)返回当前大整数对象与参数指定的大整数对象的余。
*public int compareTo(BigInteger val) 返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。
*public BigInteger abs() 返回当前大整数对象的绝对值。
*public BigInteger pow(int a) 返回当前大整数对象的a次幂。
*public String toString() 返回当前大整数对象十进制的字符串表示。
*public String toString(int p) 返回当前大整数对象p进制的字符串表示。
八、 DecimalFormat类
程序可能对数字型数据的输出格式有特殊的要求:即对输出的数字结果进行必要的格式化。
DecimalFormat类在java.text包中。
可以用DecimalFormat类对输出的数字结果进行必要的格式化 。
格式化数字
1 格式化整数位和小数位
DecimalFormat对象调用:public final String format(double number);
对参数指定的数字进行格式化,并将格式化结果以String对象返回。
例如:DecimalFormat format=new DecimalFormat(“00000.00”);
那么 String result=format.format(6789.8765);得到的result是:“06789.88”//小数点前面“0”的个数表示最少的整数位,后面“0”的个数表示格式化保留的最多小数位数
2 整数位的分组
当希望将数字的整数部分分组(用逗号分隔),可以在DecimalFormat对象中的
例如:将 “123456789.9876543” 的整数部分按4位分组的一个格式化模式是:
“#,##,###,##00.00”(看最后一个分隔符和整数结尾之间的间隔才是分组的大小,及前面的分组为4)
使用该模式格式化上述数字的结果是:1,2345,6789.99
3 格式化为百分数或千分数
在DecimalFormat对象中的数字格式化模式尾加“%”,可以将数字格式化为百分数、尾加“\u2030”将数字格式化为千分数。
4 格式化为科学计数
在DecimalFormat对象中的数字格式化模式尾加“E0”,可以将数字格式化为科学计数。
5 格式化为货币值
在DecimalFormat对象中的数字格式化模式尾加货币符号,例如“KaTeX parse error: Expected 'EOF', got '#' at position 65: …添加任意的普通字符串(不含有“#̲”、“,”、“.”、“0”),…我喜欢”;可以将数字12345678.987654格式为“你好12,345,678,9877$我喜欢”
将格式化字符串转化为数字
根据要转化的字符串创建一个DecimalFormat对象,并将适合该字符串的格式化模式传递给该对象,例如:
DecimalFormat df = new DecimalFormat("###,#00.000
"
)
;
那
么
,
d
f
调
用
p
a
r
s
e
(
S
t
r
i
n
g
s
)
方
法
将
返
回
一
个
N
u
m
b
e
r
对
象
,
例
如
:
N
u
m
b
e
r
n
u
m
=
d
f
.
p
a
r
s
e
(
"
3
,
521
,
563.345
"); 那么,df调用parse(String s)方法将返回一个Number对象, 例如:Number num = df.parse("3,521,563.345
");那么,df调用parse(Strings)方法将返回一个Number对象,例如:Numbernum=df.parse("3,521,563.345");
那么,Number对象调用方法可以返回该对象中含有的数字,
例如:double d=number.doubleValue();
d的值是3521563.345。
九、 Pattern与Match类
Java提供了专门用来进行模式匹配的Pattern类和Match类,这些类在java.util.regex包中。
9.8.1 模式对象
1 使用Pattern类创建一个对象,称作模式对象,模式对象是对正则表达式的封装。
2 Pattern类调用类方法compile(String regex)返回一个模式对象,其中的参数regex是一个正则表达参数regex式,称作模式对象使用的模式。(如果参数regex指定的正则表达式有错,complie方法将抛出异常:PatternSyntaxException)
例如 Pattern p = Pattern.compile(“hello\d”);
3 Pattern类也可以调用类方法compile(String regex, int flags)返回一个Pattern对象 。参数flags可以取下列有效值:Pattern.CASE_INSENSITIVE
Pattern.MULTILINE
Pattern.DOTALL
Pattern.UNICODE_CASE
Pattern.CANON_EQ例如:flags取值Pattern.CASE_INSENSITIVE,模式匹配时将忽略大小写
匹配对象
模式对象p调用matcher(CharSequence input)方法返回一Matcher对象m,称作匹配对象。(参数input是任何实现CharSequence 接口的类创建的对象,前面学习的String类和StringBuffer类都实现了CharSequence 接口)
一个Matcher对象m可以使用下列3种方法寻找input指定的字符序列中是否有和模式regex匹配的子序列(regex是创建模式对象p时使用的正则表达式)
下列几个方法是Matcher对象m常用的方法:
*public boolean find() :寻找input和regex匹配的下一子序列(当find方法返回为true时,m可以调用start()方法和end()方法得到该模式子序列在input中的开始位置和结束位置或调用group()可以返回find方法在本次找到的匹配模式的子字符串)
*public boolean matches():判断input是否完全和regex匹配
*public boolean lookingAt():判断从input的开始位置是否有和regex匹配的子序列(当lookingAt()方法返回为true时,m可以调用start()方法和end()方法得到该模式子序列在input中的开始位置和结束位置或调用group()可以返回find方法在本次找到的匹配模式的子字符串)
public boolean find(int start):判断input从参数start指定位置开始是否有和regex匹配的子序列
public String replaceAll(String replacement):Matcher对象m调用该方法可以返回一个字符串 (该字符串是通过把input中与模式regex匹配的子字符串全部替换为参数replacement指定的字符串得到的(注意:input本身没有发生变化))
public String replaceFirst(String replacement):Matcher对象m调用该方法可以返回一个字符串
十、 Scanner类
使用Scanner类从字符串中解析程序所需要的数据。
1.使用默认分隔标记解析字符串
创建Scanner对象,并将要解析的字符串传递给所构造的对象,例如 String NBA = “I Love This Game”;
如下构造一个Scanner对象:
Scanner scanner = new Scanner(NBA);
那么scanner将空格作为分隔标记、调用next()方法依次返回NBA中的单词,如果NBA最后一个单词已被next()方法返回,scanner调用hasNext()将返回false,否则返回true。
2.使用正则表达式作为分隔标记解析字符串
Scanner对象可以调用useDelimiter(正则表达式);
方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。