为什么int.ToString() 方法不属于装箱

本文通过一个C#编程示例介绍了值类型如何重写ToString方法,并展示了值类型的克隆操作及多态行为的缺失。示例中定义了一个名为A的值类型,并演示了如何使用ICloneable接口进行克隆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举个例子。 
 
  static void main() 
  { 
    A a; 
    a.x = 100; 
    Console.WriteLine(a.ToString()); 
    Console.WriteLine(a.GetType()); 
    A a2 = (A)a.Clone(); 
    ICloneable c = a2; 
    Ojbect o = c.Clone(); 
  } 
  a.ToString()。编译器发现A重写了ToString方法,会直接调用ToString的指令。因为A是值类型,编译器不会出现多态行为。因此,直接调用,不装箱。(注:ToString是A的基类System.ValueType的方法) 
一 选择题(每个2分,注:部分题多选) 1. 0.6332的数据类型是( ) A float B double C Float D Double 2. 下面哪个不是Thread类的方法( ) A start() B run() C exit() D getPriority() 3. Java接口的修饰符可以为( ) A private B protected C final D abstract 4. 下面哪个流类属于面向字符的输入流( ) A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader 5. ArrayList list = new ArrayList(20);中的list扩充几次( ) A 0 B 1 C 2 D 3 6. 下面的方法,当输入为2的时候返回值是多少?( ) public static int getValue(int i) { int result = 0; switch (i) { case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; } return result; } A0 B2 C4 D10 7 若需要定义一个类,下列哪些修饰符是允许被使用的?( ) A、static B、package C、private 、D public instanceof运算符能够用来判断一个对象是否为( ) A、一个类的实例 B、一个实现指定接口的类的实例 C、全部正确 D、一个子类的实例 9 .Class clazz = Class.forName(“test.Demo4”); for (Method method : clazz.getDeclaredMethods()) { System.out.println(method.toString()); } 其中“clazz.getDeclaredMethods”的作用是: ( ) A、取得类的公有方法对象 B、取得类的所有公有方法名称 C、取得类的所有方法对象 D、以上选项都不正确 10. 指出下列程序运行的结果 ( ) public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String args[]) { Example ex = new Example(); ex.change(ex.str, ex.ch); System.out.print(ex.str + " and "); System.out.print(ex.ch); } public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } AI写代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 } A、 good and abc B、 good and gbc C、 test ok and abc D、 test ok and gbc 11. 下列说法正确的有( ) A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 12. 下面程序的运行结果:( ) public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } }; t.run(); System.out.print("ping"); } static void pong() { System.out.print("pong"); } AI写代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A pingpong B pongping C pingpong和pongping都有可能 D 都不输出 13. 下列说法正确的是( ) A LinkedList继承自List B AbstractSet继承自Set C HashSet继承自AbstractSet D WeakMap继承自HashMap 14. 下面哪些是对称加密算法( ) A 、DES B AES C DSA D RSA 下列属于关系型数据库的是( ) A. Oracle B MySql C IMS D MongoDB 下面代码的运行结果为:( ) import java.io.*; import java.util.*; public class foo{ public static void main (String[] args){ String s; System.out.println(“s=” + s); } } A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null” C 由于String s没有初始化,代码不能编译通过 D 代码得到编译,但捕获到 NullPointException异常 17.下面程序输出的结果是( ) public class Demo { static { int num = 5; } static int num = 8; public static void main(String args[]){ int num = 10; System.out.println(test(num)); } public static int test(int b){ try { b += 10; return b; } catch(RuntimeException e1) { } catch(Exception e2) { } finally { b += 10; return b; } } } A:10 B:20 C:30 D:40 18.下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child(“mike”)的时候都有哪些构造方法被顺序调用?请选择输出结果 ( ) class People { String name; public People() { System.out.print(1); } public People(String name) { System.out.print(2); this.name = name; } } class Child extends People { People father; public Child(String name) { System.out.print(3); this.name = name; father = new People(name + “:F”); } public Child() { System.out.print(4); } } A312 B 32 C 432 D 132 19.下列哪项不是int类型的字面量?(  ) A \u03A6 B 077 C OxABBC D 20 20.下列哪项不是有效的标识符?(  ) A userName B 2test C $change D _password 二 填空题(每空一分) 1. System.out.println(1+2+3+”world ”+1+2+3);的输出结果应该是( ) 2. System.out.println(10%3);的输出结果应该是( ) System.out.println(10%-3);的输出结果应该是( ) System.out.println(-10%3);的输出结果应该是( ) System.out.println(-10%-3);的输出结果应该是( ) 3. 下面程序的运行结果是( ) String str1 = “hello”; String str2 = “he” + new String(“llo”); System.out.println(str1 == str2); 4. GC线程是否为守护线程?___ 5. StringBuilder的默认初始化长度为____ 6. Arraylist 的默认初始化长度为___ 7. java源文件编译之后的格式是___. 8. java中所有异常的父类是__.所有错误和异常的父类是_. 9. java线程中普通优先级的线程,其优先级默认值为_. 10. Java完全支持面向对象的三种基本特征:__ 三 简答题 1. 存在使i + 1 < i的数吗,如果存在说明情况,如果不存在说明理由.(4分) 2、阐述final、finally、finalize的用途和区别。 (6分) 3、Java支持的数据类型有哪些?每种数据类型的字节长度是多少?什么是自动拆装箱?(6分) 4. 下面程序能正常运行吗? 能的话输出什么?不能的话原因是什么? (6分) public class NULL { public static void haha(){ System.out.println("haha"); } public static void main(String[] args) { ((NULL)null).haha(); } AI写代码 1 2 3 4 5 6 } 5 、哪些情况下可以终止一个正在运行的线程的方式?(6分) 6. 下面程序的运行结果是什么? (6分) class HelloA { public HelloA() { System.out.println(“HelloA”); } { System.out.println(“I’m A class”); } static { System.out.println("static A"); } AI写代码 1 } public class HelloB extends HelloA { public HelloB() { System.out.println(“HelloB”); } { System.out.println(“I’m B class”); } static { System.out.println(“static B”); } public static void main(String[] args) {      new HelloB();    } } 给我这些答案
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值