java笔记-做题点I

做java专项练习时候错了超多题,模糊的点记在这里。
这里有super和this、System.out、访问权限、标识符命名规则、Ant和Maven、几个类的继承性、sleep()和wait()方法等。


1.super关键字在子类内部使用,代表父类对象。子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置。
访问父类的属性:super.属性名;
访问父类的方法:super.方法名()。

2.关于System.out.println():

System是java.lang包下的一个类,out为System的final静态成员(PrintStream类型),println()是PrintStream类的实例方法。

3.关于访问权限:

public:可以被所有其他类所访问(同类、同包、不同包的子类、不同包的非子类);
protected:自身、子类及同一个包中类可以访问(同类、同包、不同包的子类);
default:同一包中的类可以访问(同类、同包);
private:只能被自己访问和修改(同类);
public>protcted>default>priavte。

对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。
对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

4.关于this和super关键字:

this和super只能放在第一行;
this()和super()不可以同时出现在一个构造函数中;
this和super都无法出现在static 修饰的方法中;
super从子类中调用父类的构造方法,this()在同一类内调用其它方法。

5.使用MVC即分层模式设计的web,可以清晰的发现问题,增强可维护性,面向接口的编程使程序的可扩展性增强,通过MVC统一的处理请求,可以减少代码的重复

6.标示符规则:

数字+字符+$+下划线;
不能以数字开头;
不能是关键字。

7.java中引入包的主要原因是跨平台特性的需求,但包不能实现跨平台功能,实现跨平台的是JVM。

8.Ant和Maven:

Ant和Maven都是基于Java的构建(build)工具。Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。
Ant特点:
没有一个约定的目录结构;必须明确让ant做什么,什么时候做,然后编译,打包;›没有生命周期,必须定义目标及其实现的任务序列;›没有集成依赖管理。
Maven特点:
›拥有约定,知道你的代码在哪里,放到哪里去;›拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程;›只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情;›拥有依赖管理,仓库管理。

9.关于java中的几个类可否被继承:

Thread可以被继承,用于创建新的线程;
Number类可以被继承,Integer,Float,Double等都继承自Number类;
Double类的声明为public final class Doubleextends Numberimplements Comparable<Double>,final声明的类不能被继承;
Math类的声明为public final class Mathextends Object,不能被继承;
ClassLoader可以被继承,用户可以自定义类加载器。

10.Thread.sleep() 和 Object.wait(),都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常(checked exception)。

wait()和sleep()都必须进行异常捕获,即try catch;
调用wait()或notify()方法必须采用当前锁调用,即必须采用synchronized中的对象。

wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。

11.在web开发中可以实现会话跟踪的技术:

session,cookie,地址重写(在URL中附加会话信息),隐藏域(表单隐藏域)。