Java教程

Java笔试题01

本文主要是介绍Java笔试题01,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

重写 - 运行时多态 keyword ==> 两同两小一大

重写,多态在运行期的表现形式。出现在子父类,实现类与接口中。判定重载有一个规律:“两同两小一大”
两同:方法名和形参列表一致;
两小:抛出的异常和返回值相容于被重写的方法。(一旦返回值是基本数据类型,那重写的方法返回值必须一致或者是Object)
一大:访问修饰符大于等于被重写方法。

异常语法

1. throw、throws
2. try-catch
3. try-finally
4. try-catch-finally
5. try-with-resource

异常处理结构中只有【try块】是必须的,jdk1.7中增加try-with-resource语法糖
扩充try块的功能允许在try(//添加资源代码){}在代码执行完毕后自动关闭代码,相当于隐藏finally块同时能够起到屏蔽异常的作用。

finally块用于回收无法被JVM处理的物理资源。
eg: 数据库连接、网络连接

常见关键字

* static: 用来创建类方法和类变量。
* final: 用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继 
               承类重新定义,修饰的变量为常量,是不可修改的。
* abstract: 用来创建抽象类和抽象方法。
* synchronized: 用于多线程的同步。用来给对象和方法或者代码块加锁,各线程互斥访问。
* volatile: 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。
            而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
* transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。

synchronized 和 volatile关键字

  • synchronized关键字: 用来给对象、方法或代码块加锁,当它对这些内容进行加锁时,一次只有一个线程可以执行这段代码。

  • volatile关键字 :修饰变量,会将变量和变量上的新操作通知到其他线程,volatile变量在编译器和运行时中会视为共享变量,变量上的操作不会和其他内存操作一起进入内存指令重排序。
    volatile不会对修饰的内容加锁,是相比于synchronized关键字更轻量级的同步机制。

前台线程和守护线程

  main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。                                                                                          
前台线程和后台线程的区别和联系:
1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。

4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
说明:   
应用程序的主线程以及使用Thread构造的线程都默认为前台线程                      
    使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。
一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,
或是定时对某些系统资源进行扫描的程序 

构造方法

1. 使用关键字new实例化一个新对象的时候默认调用的方法。
2. 构造方法完成的主要工作是新创建对象的数据成员赋予初始值。

使用构造方法注意以下几点: 

1. 构造方法不能被static、final修饰
2. 构造方法没有返回值也不能使用void
3. 构造方法名称和所属类名必须保持一致
4. 构造方法可以像其他普通方法一样可以被重载
5. 构造方法不能被继承,子类使用父类构造方法需要使用super关键字

static关键字

static修饰的类成员和this水火不容。

this关键字

this指当前对象只能在实际方法和构造函数中调用

super关键字 调用父类可以访问的方法和成员变量

子类调用父类有参构造方法必须显式初始化

class Base{
    public Base(String s){
        System.out.print("B");
    }
}
public class Derived extends Base{
    public Derived (String s) {
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

★★★在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。

子类不能继承父类中【private、static、final】修饰变量或方法

循环体内执行过程

内部类

内部类可以访问外部类的属性,而外部类不能访问内部类的属性

这篇关于Java笔试题01的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!