java学习记录

1,接口(不实现任何方法)——》抽象类(实现部分公共方法)——》简单实现类——》具体实现类

2,抽象类不能被直接实例化,只能实现抽象方法,以匿名内部类的方式表现。

3,如果static是写在单例中,高并发访问是会出问题的,这时候就要设置线程等待了,static是在容器加载的时候就已经加载到内存中,所以static方法和变量不宜过度使用,有选择的使用,

4,&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不 执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有 被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。

       &还可以用作位运算符,0x31&0x0f=0x01

                ===> 0011 0001 & 0000 1111  = 0000 0001  即0x01

5,java中"=="和"equal"的区别。

  • str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错 
  •   "".equal可以回避空指针异常
  • ==比较的是地址,equals比较的是值
  1. equals 是比较的两个字符串是否一样 ,比如 “asd”.equals(“asd”)==true; 
  2. "==" 它比较的是两个“引用” ,比如: String a=new String ("a"); String b=new String ("a"); System.out.println(a==b)它就输出false了。

    因为不是一个引用(虽然都是a);

  3. String a=new String ("abc");至少创建一个对象a;a是肯定会被创建的。如果内存里没有"abc"字符串对象就创建一个,否则不创建。

6,final、finally、finalize的区别

final是一种声明属性,作用与类、方法和变量;final修饰的变量的值不能够再改变,final修饰的方面不能被覆盖,final修饰的类不能被继承。

finally是异常处理语句的一部分,表示总是执行。

finalize是object类的一个子方法,在垃圾回收器执行是调用回收对象的此方法,此方法可以被覆盖提供资源回收时的其他资源回收。如文件关闭等

7,int是java的基本数据类型,Integer是java为int提供的封装类,用于在各种类型间转化

8,sleep()和wait()的区别

  1,sleep是thread的方法,会释放对象锁,当指定的时间到了又会自动恢复运行状态。wait()是object的方法,不会释放锁,且只有调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

9,静态代码块,代码块,构造函数

    1,静态代码块:只会运行一次,无论new多少个对象,都只执行一次

    2,代码块:new每个对象,都会执行这个代码块

    3,构造函数:new每个不同的对象,针对性的执行。比如有参数,无参的,参数不同的。

10,java对象的创建过程

     1,创建虚拟机进程,然后虚拟器用类加载器Class Loader加载.class文件到方法区。

     2,类加载完成后,主线程运行static main()时在虚拟机栈中建栈帧,压栈;执行到new Object()时,在堆heap里创建对象

     3,执行类的构造函数初始化

     4,new运算符 返回堆中这个对象的引用。

11,throws和throw的区别

1、throws出现在方法函数头;而throw出现在函数体。

2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象

 

12,try {}里有一个 return ,紧跟着在这个try之后的finally{}会不会被执行?

——会,在return过程中执行。解释:在执行return语句时,要返回的结果已经准备好了,并会把结果放在另外一个局部变量中。此时,程序转到finnaly执行,执行后再把存在这个变量中的结果取出返回。所以如果finally中修改了返回结果,但实际上返回结果不会变。应该是使用栈保存的返回值。

 

13,堆:存放所有new出来的对象。栈:对象的引用。常量池:存放基本类型常量和字符串常量。

 

14,反射:

  1,反射机制指的是程序在运行时能够获取自身的信息,实现动态创建对象和编译,比较灵活。缺点是对性能有影响。

   2.class-->.java

   3,通过反射机制访问java对象的属性,方法。

 

依赖注入:在运行期,由外部容器spring动态地将依赖对象注入到组件中

控制反转:spring容器初始化,创建并管理bean对象,以及销毁它

 

 

posted @ 2016-09-28 16:18  HOOHyou  阅读(148)  评论(0编辑  收藏  举报