牛客刷Java记录第6天

第一题
一个文件中的字符要写到另一个文件中,首先需要( )。

A System.out.print (buffer[i]);
B FileOutputStream fout = new FileOutputStream(this.filename);
C FileInputStream fin = new FileInputStream(this.filename);
D System.in.read(buffer);

关键词:首先
文件A -> 内存 -> 文件B
先读后写,先读到内存后写入文件,先in后out

答案:C

第二题
static前加了private,那么就不可以用类名.变量名了,只能使用公共的get方法

典型案例:

package static_;

public class StaticA {
    public static void main(String[] args) {
        TestStaticA t1 = new TestStaticA();
        t1.setAge(1);
        TestStaticA t2 = new TestStaticA();
        t2.setAge(2);

        /**
         * 测试用对象名直接调用静态方法:
         * 下面代码运行结果是什么?
         */
//        t1.m(t2);
//        t1.m1();
//        t2.m1();

        /**
         * 测试用对象名直接调用静态属性:
         * 下面代码运行结果是什么?
         */
//        System.out.println(t1.age);
//        System.out.println(t1.a);
//        System.out.println(t1.name);

        /**
         * 测试用类名直接调用静态方法:
         * 下面代码运行结果是什么?
         */
//        TestStaticA.m1();
//        TestStaticA.testPrivateMethod();
//        TestStaticA.m(t1,t2);

        /**
         * 测试用类名直接调用静态属性:
         * 下面代码运行结果是什么?
         */
//        System.out.println(TestStaticA.age);
//        System.out.println(TestStaticA.a);
//        System.out.println(TestStaticA.name);
    }
}

class TestStaticA {
    static String name;
    private int age;
    private static int a;

    public static void m(TestStaticA t1, TestStaticA t2) {
        if (t1.getAge() == t2.getAge())
            System.out.println("年龄相同");
        else System.out.println("年龄不同");
    }

//  这样不可以。反正static就是不可以出现super,this
//  public static void m(TestStaticA t2){
//    if (this.getAge() == t2.getAge())
//      System.out.println("年龄相同");
//    else System.out.println("年龄不同");
//  }

    public static void m1() {
        System.out.println("hello");
    }

    private static void testPrivateMethod() {
        System.out.println("我是testPrivateMethod()");
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

第三题,单选题
可以把任何一种数据类型的变量赋给Object类型的变量。

A 对
B 错

解析:由debug可以看到,执行到赋值语句时,编译器在底层已经将基本数据类型自动装箱了。
以byte为例,源码:

public static Byte valueOf(byte b) {
        final int offset = 128;
        return ByteCache.cache[(int)b + offset];
    }

完整代码案例:

package common_class.object_class;

public class TestObj {
    public static void main(String[] args) {
        byte n1 = 0;
        short n2 = 0;
        int n3 = 0;
        long n4 = 0L;
        float n5 = 0.0f;
        double n6 = 0.0d;

        char n7 = '\u0000';
        boolean n8 = false;

        String n9 = "";

        Object o1 = n1;
        Object o2 = n2;
        Object o3 = n3;
        Object o4 = n4;
        Object o5 = n5;
        Object o6 = n6;
        Object o7 = n7;
        Object o8 = n8;
        Object o9 = n9;

        System.out.println(o1.getClass());
        System.out.println(o2.getClass());
        System.out.println(o3.getClass());
        System.out.println(o4.getClass());
        System.out.println(o5.getClass());
        System.out.println(o6.getClass());
        System.out.println(o7.getClass());
        System.out.println(o8.getClass());
        System.out.println(o9.getClass());

    }
}

运行结果:

class java.lang.Byte
class java.lang.Short
class java.lang.Integer
class java.lang.Long
class java.lang.Float
class java.lang.Double
class java.lang.Character
class java.lang.Boolean
class java.lang.String

答案:A

posted @ 2023-10-09 17:13  yx1024  阅读(5)  评论(0编辑  收藏  举报