Java 数字表示问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:17:43
最近开始学习java。
发现教程上说如果数字后面没有任何字母,就会被系统默认为double型数据。
我便开始想
float型浮点数后面跟一个f,表示为float型。
long型整数后面跟一个l,表示为long型
而int型,short型,byte型,正常情况下后面都不带字母。
那么是不是int、short、byte型数据都会被自动转换为double型?
如果是这样的话,那么怎样区分int、short、byte与double型数据呢?
谢谢大家了。本文Java小菜,请不吝赐教。
这句话的意思是不是说:浮点数中,后面没有任何字母就会被默认为双精度的类型?

假设是这样的话,按照你们的说法,定义一个数为float型时,要在后面加f。
如:
float a=1.234f;
这样a就是float型的。
但是根据教程的那句话,如果写成这样:
float a=1.234;
那么a就会被自动转换为double型吗?
主要是这点问题不明白,请各位帮忙解惑一下。
谢谢啦。

哦 根据5楼的说法 那么上述问题就没有问题了。

还有一个不明白的地方。
根据自动转换原则,下述变量a在再次被赋值前,将一直是自动转换后的数据类型吗?
int a=100;
float b=50.0f;
double c;
c=a/b;
System.out.println('c='+c);
那么这里运行完最后一句后,a和b是什么类型的呢?

哦 看了5楼的最新答案,可以这么讲吗?
a b被自动转换,仅限于当时所在的语句,离开那条语句仍然是原来定义的类型了。对吗?

你没有看清楚类型用在了什么地方。
变量有变量的类型,常量有常量的类型。
double d;声明的是一个double型变量。不论你给它赋什么值,只要合法,它总是double。
而1.23是double,1.23f是float。这是常量类型的约定。
常量浮点型不加f是double,加f是float。
常量整类型不加l是int,加l是long。常量类型再小的类型如果不溢出自动截短。

类型就是靠前面的签名来决定的,你写了double,那么就是double类型的,如果你写了float,就是float类型的,可以区分的。
你说的那个是字面量的情况,例如:
0.21,不加f为double,加上f为float

你可以用instanceof来帮助你判断对象类型。
如:
Object a = 123;
if(a instanceof Float){
System.out.println("Float");
}
else if(a instanceof Integer){
System.out.println("Integer");
}
else if(a instanceof Byte){
System.out.println("Byte");
}
输出Integer,表示整数,

float a=1.234;
语法上就是错的。1.234是个double类型的数,不能直接赋值给一个float型的变量

---------
a是int b是float
java的基本类型是在栈里存放的。

你在定义变量的时候必须得声明它的类型,如int i;那么i的类型就是int了。