J2SE学习笔记(四)

10、System类(java.lang.System)

都是static field或方法,不能被实例化

static PrintStream err “标准”错误输出流。

static InputStream err “标准”输入流。

static PrintStream err “标准”输出流。


static void exit(int status)

static void gc() 

static String getenv(String name) 

 static void load(String filename)

static long currentTimeMillis()

 

11、Runtime类(java.lang.Runtime)

public static Runtime getRuntime()方法返回Runtime实例对象

Runtime rt=Runtime.getRuntime();

int availableProcessors()  

Process exec()

long freeMemory()

void gc()

void load(String filename)

void loadLibrary(String libname)

long maxMemory()

long totalMemory()


12、Objects类(java.util.Objects  1.7+)

jdk1.7+提供了Objects工具类,包含了一些工具方法来操作对象,这些方法大多对“空指针”是安全的。


13、文本处理类(String、StringBuffer、StringBuilder)

java.lang.String 字符串常量:

char charAt(int index) 返回索引处的 char 值

int codePointAt(int index) 返回指定索引处的字符的unicode值

int compareTo(String anotherString)  字符串比较

int indexOf(int ch, int fromIndex)  从formIndex开始查找此字符串中第一次出现指定字符处的索引

int length() 字符串长度

String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串

char[] toCharArray() 将此字符串转换为一个新的字符数组

String toUpperCase() 转换成大写

String toLowerCase() 转换成小写

String trim() 删除首尾的空白

 

java.lang.StringBuffer 字符串变量(线程安全)

java.lang.StringBuilder 字符串变量(非线程安全 , 1.5+)


String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

性能上,一般情况下:StringBuilder > StringBuffer > String

StringBuffer append() / StringBuilder append()

StringBuffer insert() / StringBuilder insert()


14、java正则表达式

特殊字符:

$ 匹配一行的结尾

^ 匹配一行的开头

() 标记子表达式的开始位置和结束位置(分组捕获)

[] 用于确定中括号表达式的开始位置和结束位置

{} 用于标记前面的子表达式的出现频度

* 指定前面的子表达式出现0次或多次

+ 指定前面的子表达式出现1次或多次

? 指定前面的子表达式出现0次或一次

. 匹配除了\n之外的任何单字符

\ 转义字符

| 指定两项之间的任意一项


预定义字符:

. 匹配除了\n之外的任何单字符

\d 0~9

\D 非数字

\s 所有空白字符(空格、制表符、回车、换行……)

\S 所有非空白字符

\w 所有单词字符(包括26个英文字母、0-9和_)

\W 所有非单词字符


方括号表达式:

表示枚举 [abc]

表示范围 [a-z]

表示求否 [^a-f]

表示求与 [a-f]&&[0-9]

表示求并 由于默认就是"并",||可以不写


圆括号(小括号)表示分组


边界匹配符:

^ 行开头

$ 行结尾

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 前一个匹配的结尾

\Z 输入的结尾(仅用于输入最后的结束符)

\z 输入的结尾


相关类:

(a)、java.lang.String

boolean str.matches(regex) 等同于 Pattern.matches(regex,str)

String replaceAll(String regex, String replacement) 使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串

public String replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串

String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串


(b)、java.util.regex.Pattern 模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。

Pattern compile(String regex) 将一个正则表达式字符串编译成Pattern对象

boolean matches(String regex, CharSequence input) 编译给定正则表达式并尝试将给定输入与其匹配。

Matcher matcher(CharSequence input)  创建匹配给定输入与此模式的匹配器,返回一个Matcher对象


(c)、java.util.regex.Matcher 匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。

Matcher reset() 重置匹配器,从开头开始重新匹配

int start() 返回上次匹配的起始点索引

int end() 返回上次匹配的结束点索引+1

String group() 返回上次匹配的子序列

boolean matches() 尝试与整个字符串匹配,返回布尔值

boolean find() 查找是否存在与Pattern匹配的子串,返回布尔值

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args){
        String regexString="[0-9]{3}";
        Matcher m=Pattern.compile(regexString).matcher("1234567890");
        while(m.find()){
            System.out.println(m.group()+"--"+m.start()+","+m.end());
        }
    }
}
/*
    123--0,3
    456--3,6
    789--6,9
*/


15、java.util.Random

构造函数:

Random() 创建一个新的随机数生成器。

Random(long seed)使用单个 long 种子创建一个新的随机数生成器。

int nextInt(int n)返回一个 0~n之间的随机数,可以包括0但不包括n

在1.7+提供TheadLocalRandom代替random可以减少多线程资源竞争,从而获得更好的性能

public class ThreadLocalRandom extends Random


16、日期与时间类

(a)、java.util.Date类(大部分构造器、方法已经Deprecated)

还剩下两个未过时的构造函数:

Date()

Date(long date) 当前毫秒数可以用System.currentTimeMillis()得到


暂未过时的方法:

long getTime()

void setTime(long time)

boolean after(Date when) 

boolean before(Date when) 

(b)、java.util.Calendar类(用于替代Date类中的大部分方法)

时间获取:

Calendar类的构造方法为protected,要利用Calendar.getInstance()获得对象

获取对象后利用int get(int field)来得到想要的字段,其中月份从0开始,要+1


时间加减:

void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量,超出会"进位"更改更大的字段

void roll(int field, boolean up) 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段


(c)、java.util.TimeZone类

TimeZone类是抽象类,用getDefault()或者getTimeZone(String ID)获取对象

getID() 获取时区ID

getDisplayName() 获取时区友好显示名称

17、java.util.Locale类

Locale local=Locale.PRC; //根据语言或国别来设置语言环境

Locale local=Locale.getDefault(); //或者用getDefault()获取用户系统默认本地环境


18、格式化类:

public abstract class Format

抽象类Format有下面三个子类,

java.text.MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置

java.text.DateFormat 时间格式化(style,Locale)

java.text.NumberFormat 货币/数值格式化(Locale)


另外,java提供通过日期模式转换为字符串的简单日期格式化类

        java.text.SimpleDateFormat

import java.util.Date;
import java.text.SimpleDateFormat;

public class Main {
    public static void main(String[] args){		
	SimpleDateFormat df=new SimpleDateFormat("yyyy--MM--dd");
	System.out.println(df.format(new Date()));
    }
}

你可能感兴趣的:(java,J2SE,学习笔记)