【Java中的常用类】(待完善)
1、常用类(Object、String、servlet、异常类、Number、Double、Math)
1. object的常用方法:clone()、equale(Object obj)、finalize()、getClass()、hashCode()、 toString()、
notify()、notifyAll()、wait()、wait(long time)、wait(long time,int count)
getClass属于 Object类,默认功能是 返回当前运行类的名字。
2. String : 用char[]数组实现,结尾不用”\0”。
String str = “he”+new String(); 运行期间生成的--->指向堆内存???
new String(“22”) 实际上创建了2个String对象,字符串常量池--存在方法区和堆中
String s=”a”+”b”+”c”; 编译期完成。
String类是final类,成员方法默认为final方法,底层是char()数组来保存,没有“/0”
对String对象的任何改变都不会影响到原对象。
当代码中出现字面量形式创建字符串对象时,JVM首先会对字面量进行检查,如果常量池存在相同内容引用,则将引用返回,否则新的字符串对象被创建,然后将对象放到字符串常量池,并返回此引用。
方法:
(1) String.toUpperCase();==>转换为大写,有返回值
(2) string.replace(‘f’,’F’); ==>用F替代f,无返回值(参数为char和charSequence)
(3) string.replaceAll(‘regex’,’’);==>all 匹配的是正则表达式(.匹配各个字符)
(4) string.equals()==>String 重写了Object类的方法
3. Servlet 相关:
GenericServlet 抽象类给出了设计servlet的一些骨架,定义了servlet的生命周期,还有一些得到名字、配置、初始化参数的方法,设计与应用层无关。
service 方法是在servlet生命周期中的服务器,默认在HttpServlet类中实现,根据Http请求方法,将请求分发到doGet、doPost等方法实现。
javax.servlet.GenericServlet接口实现了javax.servlet.Servlet接口,且javax.servlet.http.HttpServlet是javax.servlet.GenericServlet子类。
Servlet的生命周期:
**************************************************************
***********
****此处贴图 Servlet的生命周期图
servlet处于服务器进程中,通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其一般不会销毁,而CGI对每个请求都产生新的线程,服务完成后就销毁,效率低,且不可移植。
4. 异常:try-catch-finally try/catch 抛出异常会增加更大的开销。
如果try的return有执行语句,例如:return i--; i--会执行,而return不会执行,进入finally。(finally一定会执行,除非try/catch中有 system.exit(0))退出。
finally中的语句不能影响try/catch中已经确定的i值,(可以说try/catch可以传递值到finally中,finally就像一个方法,i值就像一个参数,并不能把值传递回去)。最后从try中返回出i在try中的值。
结论:return 并不是函数的最终出口,也就是说遇到return要考虑是否还有finally要执行。如果存在funally代码块,会在return之前执行finally中的代码。
①. try、catch、finally都有return语句,返回finally的值。(try会执行return之后的语句,例如:i--);
②. 仅try、catch中有return语句。没有异常,执行完finally,返回i在try块中的值。
③. try中抛出异常,try、catch、finally中都有return,返回finally中的值。
④. try中抛出异常,try、catch中都有return,返回catch中的值。
⑤. try、catch中都出现异常,在finally中有返回,返回finally中的值。
finally语句中一般放置 释放资源、关闭数据库、关闭文件等操作语句。
finally 会在 throw 或 return 之前执行, finally中不建议放return语句,return语句可以放在try和catch里面和函数的最后。
当一个方法在运行时出现未catch的异常,则这个方法终止,但整个程序不终止。程序遇到throw 异常,会终止此方法的执行,回转到main方法或者上层方法中,
异常分类:
所有的异常都继承自java.lang.Exception类。
检查性异常:不处理编译出错,===》非运行时异常 一般dao中throws抛,service中catch
非检查性异常:如果有抛出直接抛到控制台,==》RuntimeException 运行时异常Java编译器不会检查。
异常分类图
异常指程序运行时(非编译)所发生的错误,jvm将错误以异常形式抛出。
error类主要是运行时,逻辑错误导致的,jvm停止,
exception表示可恢复异常,包括检查性异常和运行性异常
检查性异常多包括IO异常、SQl异常,多发生在编译期,通过try/catch捕捉。
运行性异常一般都上抛,直到遇到处理代码,多线程用run()抛出,单线程用main()抛出。
5. Number类可以被继承,Integer和Float都是其子类。
6. Double和Math类都被final修饰,不可继承。
ClassLoader可以被继承,用户可以自定义类加载器。
7. Math类的方法:
Math.cos为计算弧度的余弦值,Math.toRadians 方法将角度转换为弧度。
floor 地板,指向下取整,返回不大于它的最大整数。
ceil 天花板,值向上取整,返回不小于它的最小整数。
round 四舍五入,往大数方向入,往小数方向舍。
java.lang 包是java语言的核心包,lang是language的缩写,包括:基本的类型、包装类型等,Integer、String等,由解释器引入。