遇到的专有名词:
1.delimiting : 分隔符
2.invocation : 代表一个远程调用
3.Invoking : 代表 使用 某种方法
4.pattern:模式
5.specifying:指定
6.
遇到的方法统计:
1.java.util.Scanner方法
useDelimiter(new Scanner(System.in).useDelimiter())
nextInt()/nextLine()/nextbyte()/nextdouble()......
用于 new Scanner(System.in).nextInt()
表示键入的参数类型,int型、字符串型、byte型、double型。。。。。
Scanner scan = new Scanner(System.in).useDelimiter("\\D"); System.out.println("请输入三个整数"); int a = scan.nextInt(); int b = scan.nextInt(); int c = scan.nextInt();如果用nextInt(),则需要 new 3次Scanner对象。
2.Arrays类
toString:
Arrays.toString() ------返回指定数组内容的字符串表示形式。
有时发现输出的数组是一个哈希码值的时候,就可以用这个方法将数组输出
sort:
Arrays.sort( int[] a) -------对指定的 int 型数组按数字升序进行排序。
Arrays.sort(int[] a ,int fromindex , int toindex)------对指定 int 型数组的指定范围按数字升序进行排序
binarySearch:
static int binarySearch(byte[] a, byte key)--------使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key)------使用二分搜索法来搜索指定的 byte 型数组的范围,以获得指定的值。
CopyOf:
static byte[] copyOf(byte[] original, int newLength)------复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
static byte[] copyOfRange(byte[] original, int from, int to)-------将指定数组的指定范围复制到一个新数组。
equals: 比较两个数组长度和内容是否一致。
fill:
static void fill(byte[] a, byte val)------将指定的 byte 值分配给指定 byte 节型数组的每个元素。
hashcode:
返回数组的哈希值。
3.Object 类
public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;
即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
参数:
obj - 要与之比较的引用对象。
返回:
如果此对象与 obj 参数相同,则返回 true;否则返回 false。
protected void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
public final Class<?> getClass()
返回此 Object 的运行时类。
返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。
例如,以下代码片段中不需要强制转换:
Number n = 0;
Class<? extends Number> c = n.getClass();
返回:
表示此对象运行时类的 Class 对象。
public int hashCode()
返回该对象的哈希码值。
支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
void notify()
唤醒在此对象监视器上等待的单个线程。
void notifyAll()
唤醒在此对象监视器上等待的所有线程。
public String toString()
返回该对象的字符串表示。
通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。
结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由:
类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。
换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
4. java.lang.Charactor 类
Character
类在对象中包装一个基本类型 char
的值。Character
类型的对象包含类型为 char
的单个字段。
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
public char charValue()
返回此 Character 对象的值。
返回:
此对象表示的基本 char 值。
public int compareTo(Character anotherCharacter)
根据数字比较两个 Character 对象。
指定者:
接口 Comparable<Character> 中的 compareTo
参数:
anotherCharacter - 要比较的 Character。
返回:
如果该 Character 等于此 Character,则返回 0;
如果该 Character 的数值小于参数 Character,则返回小于 0 的值;
如果该 Character 的数值大于参数 Character,则返回大于 0 的值(有符号比较)。
注意,这是一次严格的数字比较;它并不依赖于区域。
public boolean equals(Object obj)
将此对象与指定对象比较。
当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。
覆盖:
类 Object 中的 equals
参数:
obj - 比较的对象。
返回:
如果对象相同,则返回 true;否则返回 false。
public static boolean isDigit(char ch)
确定指定字符是否为数字。
如果通过 Character.getType(ch) 提供的字符的常规类别类型为 DECIMAL_DIGIT_NUMBER,则字符为数字。
包含数字的 Unicode 字符范围:
'\u0030' 到 '\u0039',ISO-LATIN-1 数字('0' 到 '9')
'\u0660' 到 '\u0669',Arabic-Indic 数字
'\u06F0' 到 '\u06F9',扩展了的 Arabic-Indic 数字
'\u0966' 到 '\u096F',梵文数字
'\uFF10' 到 '\uFF19',全形数字
其他许多字符范围也包含数字。
参数:
ch - 要测试的字符。
返回:
如果字符为数字,则返回 true;否则返回 false。
public static boolean isLetter(char ch)
确定指定字符是否为字母。
如果通过 Character.getType(ch) 为字符提供的常规类别的类型为以下类型中的任意一种,
则认为该字符为字母:
UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER
并非所有的字母都有大小写。许多字符都是字母,但它们既不是大写的,也不是小写的,并且也不是首字母大写的。
参数:
ch - 要测试的字符。
返回:
如果字符为字母,则返回 true;否则返回 false。
public static boolean isLetterOrDigit(char ch)
确定指定字符是否为字母或数字。
public static boolean isLowerCase(char ch)确定指定字符是否为小写字母。
如果通过 Character.getType(ch) 提供的字符的常规类别类型为 LOWERCASE_LETTER,则字符为小写字母。
以下是小写字母的示例:
a b c d e f g h i j k l m n o p q r s t u v w x y z
'\u00DF' '\u00E0' '\u00E1' '\u00E2' '\u00E3' '\u00E4' '\u00E5' '\u00E6'
'\u00E7' '\u00E8' '\u00E9' '\u00EA' '\u00EB' '\u00EC' '\u00ED' '\u00EE'
'\u00EF' '\u00F0' '\u00F1' '\u00F2' '\u00F3' '\u00F4' '\u00F5' '\u00F6'
'\u00F8' '\u00F9' '\u00FA' '\u00FB' '\u00FC' '\u00FD' '\u00FE' '\u00FF'
其他许多 Unicode 字符也是小写的。
public static boolean isWhitespace(char ch)
确定指定字符依据 Java 标准是否为空白字符。
当且仅当字符满足以下标准时,该字符才是一个 Java 空白字符:
它是 Unicode 空格字符(SPACE_SEPARATOR、LINE_SEPARATOR 或 PARAGRAPH_SEPARATOR),但不是非中断空格('\u00A0'、'\u2007'、'\u202F')
它是 '\u0009',HORIZONTAL TABULATION
它是 '\u000A',LINE FEED
它是 '\u000B',VERTICAL TABULATION
它是 '\u000C',FORM FEED
它是 '\u000D',CARRIAGE RETURN
它是 '\u001C',FILE SEPARATOR
它是 '\u001D',GROUP SEPARATOR
它是 '\u001E',RECORD SEPARATOR
它是 '\u001F',UNIT SEPARATOR
5.String 类
深入解析String类
JDK解释:
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。
字符串缓冲区支持可变的字符串。
因为 String 对象是不可变的,所以可以共享。
例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
下面给出了一些如何使用字符串的更多示例:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。大小写映射基于 Character 类指定的 Unicode 标准版。
Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
String中的部分构造方法:
String()
初始化一个新创建的 String 对象,使其表示一个空字符序列。
String(byte[] bytes)
通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
将byte[] 替换成 char[] ,也是一部分构造方法
几个重要方法:
1. char charAt(int index)
返回指定索引处的 char 值。
eg.
char[] chars = {'a',97 ,'c','d','e','f'}; String s = new String(chars,0,chars.length); System.out.print(s.charAt(0)); System.out.print(s.charAt(1)); 输出结果:aa
String a = "a bcdef"; System.out.print(a.charAt(1)); System.out.print(a.charAt(0)); 输出结果: a即此方法是将字符串转换成字符数组,按位序排列(index: 0 ~ String.length-1)
2. String concat(String str)
将指定字符串连接到此字符串的结尾。
char[] chars = {'a',97 ,'c','d','e','f'}; String s = new String(chars,0,chars.length); String a = "a bcdef"; String ss = a.concat(s); System.out.println(ss.equals(a + s)); 输出结果: a bcdefaacdef true
3.static String copyValueOf(char[] data, int offset , int count)
返回指定数组中表示该字符序列的 String。
eg.
char[] chars = {'a',97 ,'c','d','e','f'}; String a = "a bcdef"; String ss = a.copyValueOf(chars , 1 , 3); System.out.println(ss); 输出结果:acd
4.boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。是则返回true
boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
5.boolean equals(Object anObject)
将此字符串与指定的对象比较。
6.byte[] getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
eg.
String a = "a bcdef"; byte[] bytes = a.getBytes(); System.out.println(Arrays.toString(bytes)); 输出结果:[97, 32, 98, 99, 100, 101, 102]
由此可以看出,getBytes()方法可以将 字符串 变成 单个的字符的 ASCII码值
那如何将byte[]数组变回原来的值呢?通过 String 的 构造方法
String a = "a bcdef"; byte[] bytes = a.getBytes(); System.out.println(Arrays.toString(bytes)); System.out.println(new String(bytes,0,bytes.length)); 输出结果: [97, 32, 98, 99, 100, 101, 102] a bcdef
7.int hashCode()
返回此字符串的哈希码。
8.int indexOf(int ch, int fromIndex) —— 用于搜索,返回位序 0~length-1。
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
返回的是匹配到的第一个位置的位序
eg.
String a = "abcdef";
System.out.println(a.indexOf("de"));输出结果:4
9. boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
toffset - 字符串中子区域的起始偏移量。
other - 字符串参数。
ooffset - 字符串参数中子区域的起始偏移量。
len - 要比较的字符数。
eg.
String a = "abcdef";
System.out.println(a.regionMatches(1,"abcre",1,2));输出结果:true(因为比较的是 bc )
10. String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String a = "abcdefbac";
System.out.println(a.replace("a","s"));
System.out.println(a.replace("ab","ss")); 输出结果:sbcdefbsc sscdefbac
11. String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
eg.
String a = "abcdefbac";
System.out.println(Arrays.toString(a.split("a"))); 输出结果:[, bcdefb, c]说明拆分会将 拆分的字符 删去。
12. String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
eg.
String a = "abcdefbac"; System.out.println(a.substring(3,6)); 输出结果:def
13. char[] toCharArray()
将此字符串转换为一个新的字符数组。
String a = "abcdefbac"; char[] chars1 = a.toCharArray();
14.static String valueOf(boolean b) —— 将各种类型的值变成字符串类型,也是valueOf的通常用法
返回 boolean 参数的字符串表示形式。
static String valueOf(char c)
返回 char 参数的字符串表示形式。
static String valueOf(char[] data, int offset, int count)
返回 char 数组参数的特定子数组的字符串表示形式。
static String valueOf(double d)
返回 double 参数的字符串表示形式。
。。。
char[] chars = {'a',97 ,'c','d','e','f'}; String kkk = a.valueOf(chars); System.out.println(kkk); System.out.println(a.valueOf('a')); System.out.println(a.valueOf(1)); System.out.println(a.valueOf(1.0f)); System.out.println(Arrays.toString(a.valueOf(true).getBytes()));输出结果:
aacdef
a
1
1.0
[116, 114, 117, 101]
最后一个true输出的是't','r','u','e'的各自的ASCII码值,表明确实是将 各种类型的值 变成了 String类型
6.InetAddress 类
此类表示互联网协议 (IP) 地址。 是 Object 的子类 。
主要方法有各种get:
byte[] getAddress()
返回此 InetAddress 对象的原始 IP 地址。
static InetAddress[] getAllByName(String host)
在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
等等,主要获取的是主机名、IP的各种返回形式。
7. Socket 类
构造方法:
Socket()
通过系统默认类型的 SocketImpl 创建未连接套接字
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(String host, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程主机上的指定远程端口。
方法:
InetAddress getInetAddress()
返回套接字连接的地址。
InputStream getInputStream()
返回此套接字的输入流。
InetAddress getLocalAddress()
获取套接字绑定的本地地址。
int getLocalPort()
返回此套接字绑定到的本地端口。
void shutdownOutput()
禁用此套接字的输出流。
8. InputStream/OutputStream
9.Reader/Writer
10.TimerTask 类 (计时器)
boolean cancel()
取消此计时器任务。
abstract void run()
此计时器任务要执行的操作。
long scheduledExecutionTime()
返回此任务最近实际 执行的已安排 执行时间。
与Timer总是成对出现
//定时器对象 Timer timer = new Timer(); MyTimerTask myTimerTask = new MyTimerTask();
// schedule(TimerTask task, long delay) // 所有的定时任务都运行在,Timer定义的一个线程 // timer.schedule(myTimerTask, 3000);
timer.schedule(myTimerTask,1000, 3000);
11.接口 Callable<V>
V call()
返回计算结果,如果无法计算结果,则抛出一个异常。
12.接口 Future<V>
Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。