Java学习汇总

学习Java已经有一段时间了,本次考核对之前学习的JavaSE进行了一次测验,在此我将之前学习中存在的问题做以下汇总:

1.关于JAVA中基本数据类型的所占字节、默认值及对应的包装类做总结

首先分为四类:整数型、浮点型、布尔型、字符型

基本数据类型字节数默认值包装类
   byte1字节0Byte
   short2字节0Short
   int 4字节0Integer
    long8字节0Long
   float4字节0.0Float
   double8字节0.0Double
   boolean1字节falseBoolean
   char2字节 '0'Character

2.关于接口:

  1)接口中的方法默认是抽象的(public abstract 默认不写)

  2)抽象方法必须在抽象类中, 而抽象类中的方法不一定都是抽象方法,也可以是静态方法

  3)接口中的属性都是静态变量(public static final 默认不写)

3.关于下面代码执行顺序正确的顺序应是:

静态代码块>构造代码块>构造函数

 4.遍历数组的两种方法是:普通for循环、for-each循环

for-each循环:

        String str[]=new String[]{"abcd","efg","hijk"};
        for(String item:str){
            System.out.println(item);
        }

5.运行结果为:4

public static int divide(){
        int i = 3;
        try {
            int a = 10/0;
            return i;
        } catch (Exception e) {
            i = 4;
            return i;
        }finally{
            i = 5;
        }
}

 当try-catch语句中有return时,return 语句会暂存变量值,然后执行 finally 代码块。

6.以下代码运行结果是:false、false、true

public class Test1 {
    public static void main(String[] args) {
        Integer a = new Integer(3);
        Integer b = 3;				   
        Integer f1 = 100, f2 = 100;
        int c = 3;
        System.out.println(a == b);		 
        System.out.println(a == c);	
        System.out.println(f1 == f2); 
    }
}

解析:

(1)不管是new创建的Integer对象,还是通过直接赋值Int值创建的Integer对象,它们与Int类型变量通过“==”进行比较时都会自动拆封装变成Int类型,所以Integer对象和Int变量比较的是内容大小。

例如:int a = 100;Integer b = 100;Integer c = new Integer(100);a == b == c为True。

(2)new创建的Integer对象和直接赋Int值创建的Integer对象相互比较

这两种Integer对象通过“==”比较的都是内存地址。

(3)赋Int值创建的Integer对象相互比较

当Int值在-128—127之间时,两个Integer变量引用的是IntegerCache中的同一个对象,比较的内存地址相同。

当Int值不在以上范围时,两个Integer对象都是通过new创建的,比较的内存地址不同。

7.

class A {
    static {
        System.out.print("1");
    }
    public A() {
        System.out.print("2");
    }
}
class B extends A{
    static {
        System.out.print("a");
    }
    public B() {
        System.out.print("b");
    }
}
class Test2 {
    public static void main(String[] args) {
        A ab = new B();
        ab = new B();
    }
}

以上代码运行结果是:1a2b2b 。

解析:创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

8.“==”和equals 最大的区别是

         1)“==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所         指向对象的地址值

         2)equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的         是对象的值

9.成员变量与局部变量的区别

 10.构造器不可被重写

因为重写的定义是对从父类继承的方法进行操作,而构造器无法被继承所以无法重写

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值