java刷题之查漏补缺(四)

来源:互联网 发布:java 使用一次失效 编辑:程序博客网 时间:2024/05/22 06:25
1.Java中的四类八种基本数据类型
第一类:整数类型  byte short int long
第二类:浮点型  float double
第三类:逻辑型    boolean(它只有两个值可取true false)
第四类:字符型  char


2.对于普通的类,可用的修饰符有 final 、 abstract 、 strictfp 、 public 和默认的包访问,不可以用 private 修饰。


3.接口与继承接口的方法都应该为public


4.abstract类的子类可以实现超类所以的抽象方法,也可以实现超类的部分抽象方法
如果超类还有抽象方法未被子类实现,那么该子类也是abstract的


5.以下程序运行的结果为:
public class Example extends Thread{
     @Override
     public void run(){
        try{
             Thread.sleep(1000);
             }catch (InterruptedException e){
             e.printStackTrace();
             }
             System.out.print("run");
     }
     public static void main(String[] args){
             Example example=new Example();
             example.run();
             System.out.print("main");
     }
}
正确答案:run main
这个类虽然继承了Thread类,但是并没有真正创建一个线程。
创建一个线程需要覆盖Thread类的run方法,然后调用Thread类的start()方法启动
这里直接调用run()方法并没有创建线程,跟普通方法调用一样,是顺序执行的


6.在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法。
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制: 
(1) 类方法中不能引用对象变量;
(2) 类方法中不能调用类的对象方法;
(3) 在类方法中不能使用super、this关键字。
(4)类方法不能被覆盖。 
如果违反这些限制,就会导致程序编译错误。
与类方法相比,对象方法几乎没有什么限制:
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。


7.SpringMVC的原理:SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。DispatcherServlet作为springMVC的前端控制器,负责接收用户的请求并根据用户的请求返回相应的视图给用户。


8.命令:
A.java用来运行一个.class文件
B.javadoc用来生成api文档
C.jar用来生成jar包
D.javac用来把.java文件编译为.class文件


9. 在jvm中是使用监视器锁来实现不同线程的异步执行,在语法的表现就是synchronized


10.jsp有9个内置对象:
pageContext javax.servlet.jsp.PageContext
request javax.servlet.http.HttpServletRequest 
response javax.servlet.http.HttpServletResponse 
session javax.servlet.http.HttpSession 
application javax.servlet.ServletContext 
config javax.serlvet.ServletConfig 
exception java.lang.Throwable
page java.lang.Object 
out javax.servlet.jsp.JspWriter


11.容器的左上角被确定为坐标的起点。


12.问:String s1="abc"; s2="abc"; s3= new String("abc");为啥s1和s2的地址值一样而s1和s3的就不一样呢?也就是,为什么 s1==s2但s1!=s3呢?
答:先是在内存里创建了一个abc字符串,然后s1指向abc,s2要指向abc,内存中已经有abc,所以s1和s2地址相同,s3指向的是新字符串abc的地址,所以s1与s3不同,s1==s2但s1!=s3,因为s1,s2,s3是引用,比较的是地址而不是内容,所以有这个结果,比较值是否相同应该用equal函数而不能直接用==


13.下列代码的输出结果是_____
boolean b=true?false:true==true?false:true;
System.out.println(b);
==  优先级高于 三目运算符,先判断   true == true,此时返回为  true,
这时表达式为   boolean b = true?false:true?false:true
此时三目运算符从右向左执行,true?false:true,返回false
这时表达式为  boolean b = true?false:false;
结果为:boolean b = false ;


14.spring没有提供AOP方式的日志系统
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
Spring通过对AOP的支持,借助log4j等Apache开源组件实现了日志系统。


15.两个最基本的java回收算法:复制算法和标记清理算法
复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出
标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
两个概念:新生代和年老代
新生代:初始对象,生命周期短的
永久代:长时间存在的对象
整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法
Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法
Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
Parallel Old(并行)收集器,针对老年代,标记整理
CMS收集器,基于标记清理
G1收集器:整体上是基于标记 整理 ,局部采用复制
综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。
原创粉丝点击