关于java基本数据类型的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java基本数据类型的问题相关的知识,希望对你有一定的参考价值。

public class Yikes
public static void go(Long n)
System.out.println("Long ");

public static void go(Short n)
System.out.println("Short ");

public static void go(int n)
System.out.println("int ");

public static void main(String[] args)
short y = 6;
long z = 7;
go(y);
go(z);



输出结果是: int和long。

y不算short类型的基本数据吗?
z是有int型数据自动向上转换而成的long型数据,
但是short y=6,这个我就看不懂了。。如果6是java默认的int型数据
那么不是应该报错吗?

这个是可以做类型转换的方向,同时在JAVA中short会自动转换成int,如果你要Short的结果,你需要做强制转换,加上(Short)即可,


1. public class MainClass    

2.  public static void main(String[] args)    

3.     short A = 5;   

4.     short B = 10;   

5.     short C = 0;   

6.  

7.     C = (short) (A + B);   

8.      

9.     System.out.println(C);   

10.     

11.  

代码在上面,我们看看要注意的地方是什么。大家注意第7行,看到(short)。这里对它做下解释,(DataType)的意思是强制类型转换,在Java里short间的计算的结果会被转换为integer,因此要赋值给short型的变量numC的时候需要强制转换为对应的short类型,否则Java编译器会报错。


参考:http://77857.blog.51cto.com/67857/176778

参考技术A

数据类型级别是从上往下级别一级一级提高的

低级别自动往上转换  高级别向下的时候强制转换 比如 short s = (short) 5;

参考技术B

java的short有一个很奇怪的特性

short a = 1;
short b = 2;
short c = a+b;

如果你在编译器里面输入这段代码的话会发现编译器报错,显示a+b是int型,需要变成c=(short)(a+b)

所以这里虽然y是short型的,但是编译器把它转成了int型

本回答被提问者采纳
参考技术C short y=6;这个有编译优化,编译器会自动转成short追问

那y是short类型不是就调用 System.out.println("Short ");这个输出结果吗。。。。
可是正确答案的输出结果是 System.out.println("int");啊

追答

这种入门问题解释起来很困难,初学者多看看书吧,敬献此书,望用心!!


参考技术D 如果数字没有超过short的限制范围的话那么JVM会自动识别类型,能转的自动帮你转。如果超过了限制范围才会报错。追问

可是给的正确答案是把y看成int类型的参数,
传递给go(int y)方法的啊

关于Java中的数据类型

Java中的数据类型主要分为基本数据类型和引用数据类型两个大类,其中:

一、基本数据类型分为:1.整数类型:分为四种——byte(位)

                       ——short(短整数)

                       ——int(整数)

                       ——long(长整数)

              2.浮点类型:分为两种——float(单精度)

                       ——double(双精度)

              3.字符型(char)

              4.布尔型(boolean)

按作用范围大小可排列为:long(8字节,-9223372036854775808-9223372036854775807)——int(4字节,-2147483648-2147483647)——short(2字节,-32768-32767)——byte(1字节,-128-127)

默认值:整型默认值为0,浮点型默认值为0.0,布尔型默认值为false

自动类型转换:从作用范围小的类型转换成作用范围大的类型时不需要显式转换,java会自动进行转换

强制类型转换:也称为显式转换,例如将作用范围大的类型赋值给作用范围小的变量时要求必须使用显式转换,否则无法通过编译

二、引用数据类型分为:1.数组

              2.类

              3.接口

默认值:引用数据类型默认值为null

以上是关于关于java基本数据类型的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Java数据类型的位

Carson带你学Java:关于数据类型的所有知识点都在这里了

Carson带你学Java:关于数据类型的所有知识点都在这里了

Carson带你学Java:关于数据类型的所有知识点都在这里了

Carson带你学Java:关于数据类型的所有知识点都在这里了

Java数据类型