java小知识点总结

1.finally语句块是在try块和catch块中的return语句执行完后,返回调用者之前执行的。
2.日期和文本的转换

  • 使用 format() 方法将日期转换为指定格式的文本
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date = new Date();
        String s = sdf.format(date);
        System.out.println(s);
2016年04月09日 14:21:45
  • 使用 parse() 方法将文本转换为日期
        String now ="2016年04月09日 14:20:42";
        try {
            Date d = sdf.parse(now);
            System.out.println(d);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Sat Apr 09 14:20:42 CST 2016

3.方法调用时,如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升。char型略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升志int。
如果传入的实际参数较大,就得通过类型转换来执行窄化转换。

4.a.对象可能不被垃圾回收。
b.垃圾回收并不等于“析构”。
c.垃圾回收只与内存有关。

5.无法阻止自动初始化的进行,它将在构造器被调用之前发生。

6.无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,它只能作用于域。

7.枚举类型的实例是常量,按照命名规则它们都用大写字母表示,如果在一个名字中有多个单词,用下划线将它们隔开。

8.访问权限
作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

9.Java会自动在导出类的构造器中插入对基类构造器的调用。
如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,就必须用关键字super显示地编写调用基类构造器的语句。

10.使用代理时可以拥有更多的控制力,我们可以选择只提供在成员对象中的方法的某个子集。

11.如果Java的基类拥有某个已经被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本。

12.(1).对于基本数据类型,final使数值恒定不变;对于对象引用,final使引用恒定不变,一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
(2).一个既是static又是final的域只占据一段不能改变的存储空间。
(3).static强调只有一份,final则说明是一个常量。
(4).Java允许在参数列表中以声明的方式将参数指明为final,这意味着你无法在方法中更改参数引用指向的对象。
(5).类中所有的private方法都隐式地指定为是final的。

13.“覆盖”只有在某方法是基类的接口的一部分时才会出现。即,必须能将一个对象向上转型为它的基本类型并调用相同的方法。如果某方法为private,它就不是基类的接口的一部分。它仅是一些隐藏于类中的程序代码,只不过具有相同的名称而已。但如果在导出类中以相同的名称生成一个public、protected或包访问权限方法的话,该方法就不会产生在基类中出现的“仅具有相同名称”的情况。此时你并没有覆盖该方法,仅是生成了一个新的方法。

14.将一个方法调用同一个方法主体关联起来被称作绑定。
后期绑定(动态绑定或运行时绑定),在运行时根据对象的类型进行绑定。
如果一种语言想实现后期绑定,就必须具有某种机制,以便在运行时能判断对象的类型,从而调用恰当的方法。也就是说,编译器一直不知道对象的类型,但是方法调用机制能找到正确的方法体,并加以调用。
Java中除了static方法和final方法之外,其他所有的方法都是后期绑定。

15.private方法被自动认为是final方法,而且对导出类是屏蔽的。
只有非private方法才可以被覆盖,但是还需要密切注意覆盖private方法的现象,这时虽然编译器不会报错,但是也不会按照我们所期望的来执行。

16.只有普通的方法调用可以是多态的。
如果某个方法是静态的,它的行为就不具有多态性。

17.协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型。

18.在Java语言中,所有转型都会得到检查,所以即使我们只是进行一次普通的加括弧形式的类型转换,在进入运行期时仍然会对其进行检查,以便保证它的确是我们希望的那种类型。如果不是,就好返回一个ClassCastException(类转型异常).这种在运行期间对类型进行检查的行为称作“运行时类型识别“(RTTI).

19.包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,改类必须被限定为抽象的。

20.接口也可以包含域,但是这些域隐式地是static和final的。
可以选择在在接口中显式地将方法声明为public的,但即使你不这么做,它们也是public的。

21.解决tomcat超链接中文乱码的方法:在server.xml文件中加上URIEncoding=”UTF-8”

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" 
    redirectPort="8443" URIEncoding="UTF-8" />

你可能感兴趣的:(java)