牛客刷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