class Practice {
public static void aMethod (int val) { System.out.println("int"); }
public static void aMethod (short val) { System.out.println("short"); }
public static void aMethod (Object val) { System.out.println("object"); }
public static void aMethod (String val) { System.out.println("String"); }
byte b = 9;
Practice.aMethod(b); // first call My guess:don't know? it is short but why
Practice.aMethod(9); // second call My guess:int correct
Integer i = 9;
Practice.aMethod(i); // third call My guess: Object correct
Practice.aMethod("9"); // fourth call My guess: String correct
}
为什么用byte(b)作为参数调用的方法用short?
调用方法答案 0 :(得分:1)
Java会自动为您的类型选择最适用的方法。
在这种情况下,您提供byte
,这是可能的最小数据类型。所有数据类型的转换如下所示:
int
- 可以直接从byte
转换为int
short
- 可以直接从byte
转换为short
String
- 不可能,byte
不是String
(需要使用解析方法)Object
- 可能,从byte
转换为Byte
到Object
Java现在自动选择转换为最窄类型。
转换为Object
支持int
和short
,因为它引入了一个完整的对象,这是一个巨大的开销。
最后选择short
代替int
,因为它更小。 byte
适合short
,int
适合byte
。
-2^(7)
- 从2^(7)-1
到short
-2^(15)
- 从2^(16)-1
到int
-2^(31)
- 从2^(31)-1
到var data = GetJsonResultData(); //call to JsonResult method.
var datastr = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(data.Data); // convert json object to string.
var dataclass = Newtonsoft.Json.JsonConvert.DeserializeObject<List<modeldto>>(datastr ); // string json data to class list
(差异较大,但你不会在图片中看到任何内容)