Java基础练习题 (1)

1.面向对象的三大思想特征是什么?

答案:封装、继承、多态

2.下列选项中,那个选项的值为 true

public class Square {
    long width;
    public Square(long l) {
        width = l;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Square a,b,c;
        a = new Square(42L);
        b = new Square(42L);
        c = b;
        long s = 42L;
    }
}
A: a == b;   B: s == a;   C: b == c;  D:a.equals(s);             

答案:C

分析:由代码可知,a、b、c、s四个变量的值如下:

a = 0x1 地址值为42L

b = 0x2 地址值为42L

c = 0x2 地址值为42L

(上述指向的地址为假设,实际并不一定指向此处)

s = 42L

A中 a 与 b 指向地址不同,错误

B中变量 s 是一个基本数据类型的变量 long,而变量 a 是一个对象引用类型的变量,基本数据类型和对象引用类型之间不能直接进行相等性比较,错误

C中 b 与 c 指向地址相同,正确

D中因为 a 是 Square 类型的对象,s 是 long 类型的基本数据类型,两者类型不同,无法进行比较

3.简述java中==和equals的区别

答案:== 运算符用于比较两个对象的引用是否相等,即他们是否指向同一个内存地址,而不是比较他们的值是否相等

equals方法用于比较两个对象的实际内容是否相等,而不是比较他们的引用

4.下列代码的输出是什么?

public class Cow {
      
       public static void main(String[] args) {
            int n = 3;
         
            System.out.println("Before change, n = " + n);
​
            n =  changeData(n);
​
            System.out.println("After changeData(n), n = " + n);
​
        }
​
      public static int  changeData(int nn) {
            nn = 10;
          return nn;
        }
}

答案:Before change, n = 3

           After changeData(n), n = 10

分析:n 首先在main方法中被定义并赋值为3,然后输出Before change, n = 3;之后调用changeData方法将 n 作为参数传递给了changeData方法,changeDate方法的返回值10被赋予了n,因此输出After changeData(n), n = 10

5.下列代码输出是什么?

class Person{
    private int id;
    private String name;
    public Person(int id,String name) {
        this.id = id;
        this.name = name;
    }
}
public class StudentClass {
    public static void main(String[] args) {
        Person a = new Person(23,"a");
        Person b = new Person(22,"b");
        swap(a, b);
        System.out.println(a == a);
        System.out.println(b == b);
    }
    private static void swap(Person a, Person b) {
        Person temp = a;
        a = b;
        b = temp;
    }
}

答案:true

           true

6.下列代码的输出什么?

public static void main(String[] args) {
        String astring = new String("123");
        String bstring = new String("123");
        System.out.println(astring==bstring);
        System.out.println(astring.equals(bstring));
}

答案:false

           true

分析:第一个输出语句使用了"=="运算符,它用于比较两个对象是否是同一个对象,而astring和bstring是两个不同的对象,因此输出false

第二个输出语句使用了equals()方法,该方法用于比较两个对象的值是否相等,而astring和bstring的值都是"123",因此输出true

7.下列代码的输出什么?

public class Cat {
    public static void main(String[] args) {
        byte a = -5;
        System.out.println((a<<2));
    }
}

答案:-20

分析:位运算符<<表示左移操作,将一个数的二进制表示向左移动指定的位数,并补0;a的二进制表示为11111011(补码表示),左移2位后,变为11101100(补码表示),将结果转换为十进制数输出即为-20

8.下列代码的输出什么?

public static void main(String[] args) {
        byte a = -5;  //1111 1011
            int c = (a >> 2);
        System.out.println((byte) (a >> 2));
}

答案:-2

分析:位运算符>>表示右移操作,将一个数的二进制表示向右移动指定的位数,并补1;做题方法同上一题

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值