首页 > 试题广场 >

已知如下类说明: public class Test{ pr

[单选题]

已知如下类说明:

public class Test{
    private float f=1.0f;
    int m=12;
    static int n=1;
    public static void main(String args[]){
        Test t=new Test();
    }
}
如下哪些使用是正确的()
  • t.f = 1.0
  • this.n
  • Test.m
  • Test.n
答案:D
A:编译不成功,因为float浮点类型默认是double类型 所以float f=1.0f;(必须加上f 强调定义的是float)此处是精度由高(double)向低(float)转型所以会报错   但是若是float f=1;这里是默认类型是Int 类型  精度由低(int)向高转型(float)不丢失精度不会报错。
B:this的使用时针对在方法内部使局部变量等值于实例变量而使用的一个关键字,此处的n是静态变量而非实例变量 所以this的调用会出错(试想一下,static本来是全类中可以使用的,是全局的,你非得this去调用,这不是区分局部变量和实例变量的分水线吗?但是此处是全局的,不需要区分)
C:m是实例变量,什么是实例变量:就是需要new 一个对象出来才能使用的,这里直接用类名就调用了,jvm怎么知道m是谁?
D:类变量可以通过类直接调用
编辑于 2017-08-21 13:54:08 回复(11)
发表于 2017-08-15 08:52:12 回复(4)

D

A.1.0默认为double类型,float f = 1.0编译出错,如果是float f= 1就可以通过

B.static中没有对象的说法,this不存在

C.m不是static的,需要依附于对象存在

发表于 2017-04-03 17:06:49 回复(0)
选D。
A:1.0默认是double型的,不能直接赋值给float,需要强制转换;
B:主方法是static的,不能使用this,this指本对象;
C:m是实例变量,不是类变量,不能用类名来直接访问;
D:用类名可以直接访问static修饰的类变量。
发表于 2017-03-24 18:42:07 回复(0)
此题不够严谨,实际上答案BD皆可以,静态成员通过类名和对象名皆可以获取,this为当前对象的引用,自然可以直接获取静态成员。另外private float f = 1.0 这行代码无法编译通过,因为1.0默认为double类型,赋值时需要强制转换或者改写为1.0F。
发表于 2018-03-15 13:17:03 回复(2)
静态方法中不能调用非静态属性,可以调用非静态方法(通过创建一个实例);方法中可以调用全局静态属性(全局静态变量),通过  实例.变量名  或是  类名.变量名  两种皆可。
发表于 2016-12-20 09:24:48 回复(2)
运行结果:


欢迎各位关注在下的微信公众号“张氏文画”,不光有新鲜的 LeetCode 题解,还有经典的文章及短视频和大家分享,一起嘿嘿嘿

编辑于 2020-03-26 16:07:15 回复(0)
A,1.0默认为double类型,float=1.0可以理解为高精度向低精度转换,会报错, 修改方法为①float=1.0f(强调为float类型)②float=1(低精度向高精度转换不报错) B,n是static修饰的静态变量,无需this调用,此处this是用来调用与局部变量同名的实例变量 C,m是实例变量,需要创建实例(对象)使用,jvm无法直接识别实例变量 D,m是类变量,类可以直接调用
发表于 2019-03-19 14:19:58 回复(0)
编译不通过
发表于 2017-02-09 11:05:37 回复(0)
这边考的是静态方法中,只能不能调用非静态属性。
只能选一个的话选择D。
但是这道题本身private float f  = 1.0;就是错误的,1.0默认是double类型,double赋给float类型需要强制转换。
发表于 2017-03-01 21:39:08 回复(1)
A. 是因为私有化属性,所以不能用实例化对象调用,private关键字修饰的只能在类内部调用
发表于 2021-03-09 14:31:51 回复(0)
C选项 t.m 就对了
发表于 2018-03-07 09:59:23 回复(0)
说的都什么玩意。人家明明加了f,非说人家没有f
发表于 2022-01-17 10:50:00 回复(1)
答案都不对
发表于 2021-12-03 17:17:55 回复(0)
这题出错了,应该选A,D
发表于 2021-12-01 08:55:01 回复(0)
静态成员变量可以通过类名直接调用
发表于 2021-09-26 23:33:40 回复(0)
static中不存在this
发表于 2021-08-26 12:51:33 回复(0)
差点就选了A:t.f=1.0,注意,当将小数赋给float类型时要加f,因为小数默认是double类型的,而double类型比float类型大,大转小报错(需强转)。
发表于 2021-05-06 10:47:13 回复(0)
this不能在静态方法中使用,也不能调用静态变量,因为this是对象范围的,静态是类的
发表于 2021-03-31 10:12:04 回复(0)
A:1.0默认是double型的,不能直接赋值给float,需要强制转换; B:主方法是static的,不能使用this,this指本对象; C:m是实例变量,不是类变量,不能用类名来直接访问; D:用类名可以直接访问static修饰的类变量。
发表于 2021-01-21 08:34:11 回复(0)