java基础备忘__14.5.18
来源:互联网 发布:网络卫星电视 编辑:程序博客网 时间:2024/05/24 01:37
1、
局部变量前不能放置任何访问修饰符 (private,public,和protected)。final 可以用来修饰局部变量 。局部变量——方法体中定义的变量。
2、
abstract method前不可加final和private。
3、
public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++; } } class Other { public int i; }如果在addOne方法内改变o的指向,如o = new Other();就出错,但是成员变量i没被final修饰,可以被改变。
4、
成员变量有默认值,如int i;默认值为0。但是当成员变量被final修饰,就没有默认值,需要改成final int i = 0;
5、
静态方法不能直接访问非静态方法。在静态方法中,可以通过s.addOne();形式调用,s为类实例,addOne()为非静态方法。
6、
interface A{ int x = 0; } class B{ int x =1; } class C extends B implements A { public void pX(){ System.out.println(x); } public static void main(String[] args) { new C().pX(); } }x调用不明确,JVM编译出错,调用父类x可用super.x,可通过A.x确定x,因为接口变量默认为public static final。
7、
interface Playable { void play(); } interface Bounceable { void play(); } interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPang"); } class Ball implements Rollable { private String name; public String getName() { return name; } public Ball(String name) { this.name =name; } public void play() { ball = newBall("Football"); System.out.println(ball.getName()); } }接口中 Ball ball = new Ball("PingPang");默认为public static final Ball ball = new Ball("PingPang");
不可以改变ball指向,所以ball = new Ball("Football")出错。
8.final, finally, finalize 的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成 final类型,例如,一段代码……
finally是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可
以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被
调用
9.error 和 exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指
望程序能处理这样的情况。 exception表示一种设计或实现问题。也就是说,它表示如果程
序运行正常,从不会发生的情况。
10.多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承 Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉
InterruptedException(中断异常)异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒
某一个等待状态的线程,而是由 JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是
让它们竞争。
11.当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可
进入此对象的其它方法?
分几种情况:
1. 其他方法前是否加了synchronized关键字,如果没加,则能。
2. 如果这个方法内部调用了 wait,则可以进入其他synchronized方法。
3. 如果其他个方法都加了 synchronized关键字,并且内部没有调用wait,则不能。
12.线程的基本概念、线程的基本状态以及状态之间的关系
状态:就绪,运行, synchronize 阻塞, wait和sleep挂起,结束。 wait必须在 synchronized
内部调用。
调用线程的 start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状
态,遇到 synchronized语句时,由运行状态转为阻塞,当synchronized获得锁后,由阻塞
转为运行,在这种情况可以调用 wait方法转为挂起状态,当线程关联的代码执行完后,线
程变为结束状态。
- java基础备忘__14.5.18
- java基础备忘
- java高级基础备忘
- java高级基础备忘
- Java基础(备忘)
- Java基础备忘
- 【JAVA】JAVA基础知识点备忘
- Java 基础(备忘2)
- 黑马程序员 java基础备忘
- Java知识点复习1基础备忘
- java基础学习笔记 -- OOP知识点备忘
- 【备忘】传智播客-Java基础班 视频教程 下载
- 基础备忘
- java基础视频需要记忆的部分备忘 - 多线程
- java基础视频需要记忆的部分备忘 - String类
- java基础视频需要记忆的部分备忘 - IO1
- java基础视频需要记忆的部分备忘 - IO2
- java基础视频需要记忆的部分备忘 - GUI
- 编程初级题目
- 栈的重要应用之中缀转后缀表达式算法
- 科普之医院等级
- 程序员为什么要加班
- 闰年的3种编程方式
- java基础备忘__14.5.18
- nginx日志格式说明
- zTree实现获取一级节点数据
- 字符集
- OCP 1Z0 051 49
- 看书小记7(《C专家编程》)
- Linux网络协议栈之数据包处理过程(非技术人员勿看)
- J2EE环境安装配置
- 策略模式小试