叨叨两句

  1. 刷题的目的是为了发现已知知识的薄弱点,不是为了学新知识,学新知识应该系统的去刷书和视频

牛客网——java专项练习002

  1. 假设利用 return 语句从 try 语句块中退出。在方法返回前,finally子句的内容将被执行。如果 finally 子句中也有一个 return 语句,这个返回值将会覆盖原始的返回值。
public static void main(String[] args) {
        int k = f_test();
        System.out.println(k);
    }
     
    public static int f_test(){
        int a = 0;
        try{
            a = 1;
            return a;
        }
        finally{
            System.out.println("It is in final chunk.");
            a = 2;
            return a;
        }
    }
输出: 
It is in final chunk.
2

如果将 return a; 注释掉,将输出
It is in final chunk.
1        
  1. 在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。(错误)
方法调用时,会创建栈帧在栈中,调用完是程序自动出栈释放,而不是gc释放
  1. 以下方法,哪个不是对add方法的重载?
public class Test
{
    public void add( int x,int y,int z){}
}
正确答案: B   
A. public int add(int x,int y,float z){return 0;}
B. public int add(int x,int y,int z){return 0;}
C. public void add(int x,int y){}
D. 以上都不是

重载、重写区别

  1. 下列代码片段中,存在编译错误的语句是(1、3、4)
byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2);  /*语句1*/
b6=b4+b5;    /*语句2*/
b8=(b1+b4);  /*语句3*/
b7=(b2+b5);  /*语句4*/
System.out.println(b3+b6);

final知识点脑图

一、关于final的重要知识点;
1、final关键字可以用于成员变量、本地变量、方法以及类。
2、 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
3、 你不能够对final变量再次赋值。
4、 本地变量必须在声明时赋值。
5、 在匿名类中所有变量都必须是final变量。
6、 final方法不能被重写。
7、 final类不能被继承。
8、 没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。

二、数据类型转换
当使用 +、-、*、/、%、运算操作是,遵循如下规则:
只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型,如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型,如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型,否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。

语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句 4: (b2 + b5)  结果仍然转换为int , 所以语句4错误。
  1. Java 语言中,负责并发管理的机制是(D)
A. 垃圾回收
B. 虚拟机
C. 代码安全
D. 多线程
选项A,Java语言中,垃圾回收机制对系统中不使用的内存进行回收,从而使程序员从繁忙的内存管理中解放出来。
选项B,Java编写好的程序首先由编译器转换为标准字节代码,然后由虚拟机执行。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。
选项C,Java的代码安全检测体现在多个层次上,在编译层、解释层、平台层分别作不同的安全检查。
选项D,多线程是Java程序的并发机制,它能同步共享数、处理不同的事件。
  1. 下列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?
A. wait()方法属于Object类,sleep()属于Thread类
B. 调用wait()方法的时候,线程会放弃对象锁
C. 调用sleep()方法的过程中,线程不会释放对象锁
D. sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程

sleep与wait的区别

  1. public class contained in a Java program file must have the same name as the file, except for the extension ".java".(FALSE)
public class Test{
 
    public static class innerClass{
        public static void prin(){
            System.out.println("innerClass");
        }
    }
 
    public static void main(String[] args) {
        Test.innerClass.prin();
        System.out.println("HelloWorld");
    }
}

题目的意思是: 除去扩展名.java的部分,包含在java文件里的Java里的公共类必须与文件的名字相同。
但是公共的内部类是不需要和文件的名字相同的。
  1. 以下程序的输出结果为(编译错误)
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");
    }
}
子类构造方法在调用时必须先调用父类的,由于父类没有无参构造,必须在子类中显式调用,修改子类构造方法如下即可:
public Derived(String s){
        super("s");
        System.out.print("D");
    }

Wall_Breaker
2.1k 声望1.2k 粉丝

生死之间,就是我的跃迁之路,全程记录,欢迎见证