语法杂记
如果Java源文件中有public类,该源文件的主文件名必须和public类名相同。
如果Java源文件中没有public类,该源文件的主文件名可以是任意的。
4个整型(不支持小数): byte(1字节),、 short(2字节)、 int(4字节)、 long(8字节)
2个浮点型(支持小数): float(4字节)、 double(8字节)
1个字符型:char(2字节)
1个布尔型:boolean(1字节) 只能有两种取值:true、false
逻辑运算符(操作数要求只能是boolean值):&&、&(不会短路)、||、|(不会短路)、!、^(只有
当两个操作数不同时,才返回true)。
【自加的陷进】:int c=1;c=c++;//a).先拿出c来值为
1,b).c自加成2,c).把刚取出的1赋给c,c又变回1。
final(不能被继承),
abstract(不能创建实例,但增加了一个可以包含抽象方法的功能)。
类名必须是多个有意义的单词(首字母大写)连缀。注意修饰符之间,没有先后顺序。
调用初始化块:
A.访问了该类静态field或静态方法。
B.初始化了该类的子类–因为Java初始化一个类,永远先从最顶层父类开始初始化。
C.使用反射来Class.forName(类名字符串)
D.如果该类作为主类使用(有main方法,而且程序确实从main方法开始执行)
E.使用该类来创建对象。
装箱和拆箱:
自动装箱:基本类型的值,可以自动当成它的包装类实例使用。它可以自动当成对象使用,
也可以作为对象传入方法。自动拆箱:当有需要时,程序会自动把包装类的实例拆成基本类型的值.
private --当前类访问权限。没有访问修饰符 --包访问权限。protected --子类访问权
限。public --公共访问权限。访问权限由小到大:private–>没有(默认)访问修饰符–>protected–>public。
HTTP请求中,用CRLF进行换行(carriage return / LineFeed)
正则表达式
content: <div class="example_code"> 字符串中是否包含了 'runoob' 子字符串? true </div>
pattern: <div\s+(class="(\w+)")?.*?</div>
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
//------------------------------------判断文本是否匹配正则表达式--------------------------------------
String content="hello world";
String pattern=".*world.*";
boolean isMatch=content.matches(pattern);
System.out.println(isMatch);
//------------------------------------字符串匹配分组--------------------------------------
content="<div class=\"example_code\">字符串中是否包含了 'runoob' 子字符串? true </div> fuck";
pattern="<div\\s+(class=\"(?<className>\\w+)\")?.*?</div>";
Pattern r=Pattern.compile(pattern);
Matcher m=r.matcher(content);
if(m.find()){
for (int i = 0; i < m.groupCount(); i++) {
System.out.println("start: "+m.start(i)+" end: "+m.end(i)+" group: "+m.group(i));
}
}
//根据组名称匹配
m=r.matcher(content);
if(m.find())
System.out.println("start: "+m.start("className")+" end: "+m.end("className")+" group: "+m.group("className"));
}
}