Java基本数据类型转换那些事
来源:互联网 发布:天涯明月刀 知乎 编辑:程序博客网 时间:2024/05/22 16:38
1.promote和cast
promote:如果是负数,前面所有空位补1. 如果是正数,前面所有空位补0。
cast:截取低位的。
2.
int i = 0xffffffff; //正常编译运行System.out.println(i); //0xffffffff默认为int型,若达到int型最高位,直接把16进制当做二进制,最高位为符号位short s = 0xfffffff0;//可以正常编译运行,0xfffffff0默认为int型,虽然二进制占用32位,但是没有超出short表示范围。System.out.println(s); //int i = 1;//! short s = i;//但是这个编译会出错,因为i是变量,需要cast才行long l = 0xffffffffL; //字面值类型很重要,若不加L默认为int,则赋值给l的是-1。所以,如果想要表示的数超出了int型,则一定要加上LSystem.out.println(l);输出:-1 -16 4294967295
3.byte,char,short
这三种数据类型在进行任何数学运算或者位运算时,都会先被promote为int型再进行运算。
4 . a = a+1 和 a+=1
short a = 1;//!a=a+1; 编译不能通过,因为进行a+1运算时,a首先被提升为int型,然后加1运算,得到的结果也是int型。//所以需要强制转化才能赋给short型的a,应该这样写: a = (short)(a+1);a+=1; //可以正常编译运行。因为+=号会自动将结果强制转换为short型。
5.重载时数据类型的promote
(1)重载函数的参数只有一个时
public class Test{ public static void f(short s){ System.out.println("short"); } public static void f(long l){ System.out.println("long"); } public static void main(String[] args){ f(1); int a = 1; f(a); }}//output: long long
执行f(1)时,1是一个int型,传给f后先找是否有参数为int型的f函数,如果没有,则找比int的数据范围更大的数据类型,然后选择其中的最小的(这里比int数据范围更大的且最小的数据类型就是long)。
但是,需要注意一下char:
[1]char是无符号16位的,short是有符号16位。因此在main函数中向f传入char型,且找不到定义的参数为char型的函数f时,接下来会去找是否有int型参数的函数,而不是short。
[2]有符号型byte和short不会被提升为无符号型char型。也就是说,如果在main中向f传入的是byte或者short类型,那么不应该考虑定义的参数为char型的f。
(2)重载函数的参数有多个时
public class TestClass { public static void f(int i1, short s){ System.out.println("first"); } public static void f(int i2, int i3){ System.out.println("second"); } public static void main(String[] args){ short a = 1, b = 1; f(a,b); }}//output: first
首先,a和b都是short型,所以先找f(short,short),没有这种的f。
然后,找满足下列条件的f(如果找不到则编译错误):
[1]定义的f的两个参数类型的数据范围都大于等于short
[2]该f中定义的的两个参数类型的数据范围都小于等于其他f中的相应的参数类型的数据范围。(例子中第一个f的i1等于第二个f的i2的数据范围,且第一个f的s小于第二个f的i3的数据范围)
- Java基本数据类型转换那些事
- JAVA基本数据类型、数据类型转换
- Java基本数据类型转换
- java基本数据类型转换
- Java基本数据类型转换
- java 基本数据类型转换
- Java基本数据类型转换
- Java 基本数据类型转换
- JAVA基本数据类型转换
- java基本数据类型转换
- java基本数据类型转换
- java基本数据类型转换
- JAVA基本数据类型转换
- java基本数据类型转换
- java基本数据类型转换
- Java基本数据类型转换
- JAVA基本数据类型转换
- Java基本数据类型转换
- Tsung安装和使用ubuntu64.04
- show and tell 代码调试过程遇到的问题及解决
- 说说 JavaScript 对用户代理的检测技术(附完整源代码)
- 用CSS创建跨浏览器的range input
- 原生java http方式上传大文件(含 文件流分段上传问题、base64分段转码问题解决思路)(转)
- Java基本数据类型转换那些事
- 用java发送ajax请求实现刷票(干坏事^_^)
- Java线程:新特征-有返回值的线程
- apache中使用.htaccess文件缓存图片的配置方法
- java打印金字塔
- js 函数高级
- 解决通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)的错误
- 解决JS把数字型的字符串前面的0去掉问题
- leetcode(260)数组之Single Number III()同剑指offerT40