1、main参数的args 数组接受外界的输入:例如:Java Test xue xi "Java spring";如果参数本身包含空格用""括起来。
2、String str = "java"+"struts"+"spring";会生成额外的javastruts和strutsspring额外的两个字符串变量;这个共在内存生成6个变量。
3、string so="hello"; 存储在常量池中;
4、Stringbuffer是线程安全的;StingBuilder是非线程安全的
5、StringBuffer.setLength(5);改变长度只保留前面的为5的部分。
9、当两个Random对象种子相同时,它们会产生相同的数值序列。
10、double和float类型进行计算时由于浮点数容易引起精度丢失,解决办法:采用BigDecimal的String的构造器f1=BigDecimal("0.1")和f2=BigDecimal.valueOf(0.01);加法f1.add(f2);用BigDecimal(0.1)还会引起精度丢失。
11、Calendar类月份最大值为11;add当被修改的字段超过它允许的范围时会发生进位,下一级字段也会变化会修正到变化的最小值;roll规则不会进行进位变化;set方法具有延迟修改性,直到下次调用get()、getTime()、getTimeInMillis()、add()、roll()时才会重新计算。
12、正则表达式:默认采用贪婪模式,会一直匹配下去;勉强模式用?后缀表示,它只会匹配最少的字符;占有模式用+后缀表示:例如匹配邮箱:“ \\w{3,20}@\\w+\\.(com|org|cn|net|gov)”
13、String[] mails={"kongyeeku163.com","kongyeeku@gmail.com","ligang@crazyit.org","wawa@abc.xx"};
Pattern mailPattern=Pattern.compile(“ \\w{3,20}@\\w+\\.(com|org|cn|net|gov)”); \\是不可变类,可供多个线程使用
Matcher matcher=null;
for(String mail:mails)
{ if(matcher==null)
{matcher =mailPattern.matcher(mail);// 产生Matcher对象
else
{matcher.reset(mail);}//将现有的Matcher对象应用于新的字符序列,不是新的产生 注意
if(matcher.matchs()){
System.out.println(mail+“是一个有效的邮件地址”);}
else{
System.out.println(mail+“不是一个有效的邮件地址”);}
}
14、java程序国际化主要通过如下的三个类完成,java。util.ResourBundle加载一个国家的语言资源包;java.util.Local用于封装一个特定国家的语言环境;java.text.MessageFormat格式化带占位的字符串;