问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简述java类型转换机制。

发布网友 发布时间:2023-09-20 07:58

我来回答

2个回答

热心网友 时间:2023-09-20 10:53

string和int之间的转换?

字符串转换成数据

Java代码

String MyNumber ="1234";

int MyInt = Integer.parseInt(MyNumber);

String MyNumber ="1234";

int MyInt = Integer.parseInt(MyNumber);

字符串转换成byte, short, int, float, double, long等数据类型,可以分别参考Byte, Short, Integer, Float, Double, Long类的parseXXX 方法。

Java代码

a1=Integer.parseInt(s1);

s1=Integer.toString(a1);

a1=Integer.parseInt(s1);

s1=Integer.toString(a1);

数据转换成字符串

Java代码

int MyInt = 1234;

String MyString = "" + MyInt;

int MyInt = 1234;

String MyString = "" + MyInt;

其它数据类型可以利用同样的方法转换成字符串。

十进制到其他进制的转换

十进制整数转换成二进制整数,返回结果是一个字符串:

Integer.toBinaryString(int i);

Integer和Long提供了toBinaryString, toHexString和toOctalString方法,可以方便的将数据转换成二进制、十六进制和八进制字符串。功能更加强大的是其 toString(int/long i, int radix)方法,可以将一个十进制数转换成任意进制的字符串形式。

byte, short, float和double等数据类型,可以利用Integer或者是Long的toBinaryString, toHexString, to OctalString和toString方法转换成其他进制的字符串形式。

其它进制到十进制的转换

五进制字符串14414转换成十进制整数,结果是1234:

System.out.println(Integer.valueOf("14414", 5);

Integer和Long提供的valueOf(String source, int radix)方法,可以

将任意进制的字符串转换成十进制数据。

把String类型转换成16进制的整数

Java代码

public static void main(String args[]){

String x = "0x300C8";

int y = Integer.decode(x).intvalue();

System.out.println(y);

}

public static void main(String args[]){

String x = "0x300C8";

int y = Integer.decode(x).intvalue();

System.out.println(y);

}

int、char、double与byte相互转换的程序

整数到字节数组的转换

Java代码

public static byte[] intToByte(int number) {

int temp = number;

byte[] b=new byte[4];

for (int i=b.length-1;i>-1;i--){

b[i] = new Integer(temp&0xff).byteValue(); //将最高位保存在最低位

temp = temp >> 8; //向右移8位

}

return b;

}

public static byte[] intToByte(int number) {

int temp = number;

byte[] b=new byte[4];

for (int i=b.length-1;i>-1;i--){

b[i] = new Integer(temp&0xff).byteValue(); //将最高位保存在最低位

temp = temp >> 8; //向右移8位

}

return b;

}

字节数组到整数的转换

Java代码

public static int byteToInt(byte[] b) {

int s = 0;

for (int i = 0; i < 3; i++) {

if (b[i] >= 0)

s = s + b[i];

else

s = s + 256 + b[i];

s = s * 256;

}

if (b[3] >= 0) //最后一个之所以不乘,是因为可能会溢出

s = s + b[3];

else

s = s + 256 + b[3];

return s;

}

public static int byteToInt(byte[] b) {

int s = 0;

for (int i = 0; i < 3; i++) {

if (b[i] >= 0)

s = s + b[i];

else

s = s + 256 + b[i];

s = s * 256;

}

if (b[3] >= 0) //最后一个之所以不乘,是因为可能会溢出

s = s + b[3];

else

s = s + 256 + b[3];

return s;

}

短整数与字节数组之间的相互转换

short与int之间的区别在于short是两个字节的,而int是四个字节的。因此,只需要将5 与6 中的范例程序小做改动,即可实现短整数与字节数组之间的相互转换。

字符到字节转换

Java代码

public static byte[] charToByte(char ch){

int temp=(int)ch;

byte[] b=new byte[2];

for (int i=b.length-1;i>-1;i--){

b[i] = new Integer(temp&0xff).bytevalue(); //将最高位保存在最低位

temp = temp >> 8; //向右移8位

}
Java中的强制类型转换,如果这2种类型是兼容的,那么Java 将自动地进行转换。例如,把int 类型的值赋给long 类型的变量,总是可行的。然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。幸好,获得不兼容的类型之间的转换仍然是可能的。要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换。让我们看看自动类型转换和强制类型转换。
一.Java 的自动转换
如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换(automatic type conversion):
1.这2种类型是兼容的。
2.目的类型数的范围比来源类型的大。
当以上2个条件都满足时,拓宽转换(widening conversion )发生。例如,int 型的范围比所有byte 型的合法范围大,因此不要求显式强制类型转换语句。
对于拓宽转换,数字类型,包括整数(integer )和浮点(floating-point )类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean )是不兼容的。字符类型(char )和布尔类型(bollean )也是互相不兼容的。
二. 不兼容类型的强制转换
尽管自动类型转换是很有帮助的,但并不能满足所有的编程需要。例如,如果你需要将int 型的值赋给一个byte 型的变量,你将怎么办?这种转换不会自动进行,因为byte 型的变化范围比int 型的要小。这种转换有时称为“缩小转换”(),因为你肯定要将源数据类型的值变小才能适合目标数据类型。
为了完成两种不兼容类型之间的转换,你就必须进行强制类型转换。所谓强制类型转换只不过是一种显式的类型变换。它的通用格式如下:
(target-type)value
其中,目标类型(target-type )指定了要将指定值转换成的类型。例如,下面的程序段将int 型强制转换成byte 型。如果整数的值超出了byte 型的取值范围,它的值将会因为对byte 型值域取模(整数除以byte 得到的余数)而减少。
int a;
byte b;
// ...
b = (byte) a;
当把浮点值赋给整数类型时一种不同的类型转换发生了:截断(truncation )。你知道整数没有小数部分。这样,当把浮点值赋给整数类型时,它的小数部分会被舍去。例如,如果将值1.23赋给一个整数,其结果值只是1,0.23 被丢弃了。当然,如果浮点值太大而不能适合目标整数类型,那么它的值将会因为对目标类型值域取模而减少。
下面的程序说明了强制类型转换:
// Demonstrate casts.
class Conversion {
public static void main(String args[]) {
byte b;
int i = 257;
double d = 323.142;
System.out.println("\nConversion of int to byte.");
b = (byte) i;
System.out.println("i and b " + i + " " + b);
System.out.println("\nConversion of double to int.");
i = (int) d;
System.out.println("d and i " + d + " " + i);
System.out.println("\nConversion of double to byte.");
b = (byte) d;
System.out.println("d and b " + d + " " + b);
}
}
该程序的输出如下:
Conversion of int to byte.
i and b 257 1
Conversion of double to int.
d and i 323.142 323
Conversion of double to byte.
d and b 323.142 67
让我们看看每一个类型转换。当值257被强制转换为byte 变量时,其结果是257除以256 (256是byte 类型的变化范围)的余数1。当把变量d转换为int 型,它的小数部分被舍弃了。当把变量d转换为byte 型,它的小数部分被舍弃了,而且它的值减少为256 的模,即67。

热心网友 时间:2023-09-20 10:54

Java中整型、实型、字符型数据可以混合运算。
运算过程中,不同类型的数据会自动转换为同一类型。
自动类型转换原则:
从低数据类型向高数据类型转换 即:
byte→ short,char,int,long,float,double
short→ char,int,long,float,double
char → int,long,float,double
long → float,double
float → double
注意:布尔型与其它基本类型之间不能转换
强制类型转换
形式为:
(类型名)表达式
例如:
int a;
long b;
a=(int)b;
long l=156;
byte b;
b=(byte)l;
注意:1. 使用强制类型转换可能会导致数值溢出或精度的下降,应尽量避免。
2. 布尔型与其它基本类型之间不能转换
例:DataCon.java
public class DataCon{
public static void main(String args[])
{
int nOp1=2;
float fOp2=2.25f;
float fResult=nOp1*fOp2;
System.out.println("Result: "+fResult);
int nResult=(int)(nOp1*fOp2);
System.out.println("Result: "+nResult);

}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
租临时演员在婚礼中的效果 eva破买觉醒版的还是普通版的 TAT EVA初号机模型 公司以员工绩效罚款违法吗 张衡怎么造句 地动仪怎么造句 一般情况下,企业对程序员素质要求中不包括( )。 做一个程序员应该具备哪些素质? 自己家里是什么意思? 你家里都是什么意思啊 java.lang.NumberFormatException: For input string: &quot;0:0:0:0:0... 五一从塘沽到威海自驾车旅游,有便捷的路线吗? 开车从威海到塘沽怎样走? 自架游塘沽到山东崴需要多少公里 thunk you () telling me () your story. your story is()of mistake. the teacher said you have your story l have myway lwantyoualwayshavemeinyourstory是什么意思 孩子回老家上初中,东北和深圳的教材不同,嗨课堂能补吗? 黑龙江考生 北师大多少分录取 从北京航空航天大学到北京师范大学怎么走 从北航北门到北师大东南门做什么车? 北京航空航天大学与北师大近吗? 福州软件职业技术学院电话 【英语】一小段英译中 qq飞车训练场怎么进 上海三菱LEHY-2的变频器模块为什么爆裂? 变频器炸模块 找一首叫“阿里嘎多”的日文歌 大循环与小循环有何区别? 句容旅行社哪个比较好 三星note10+不能使用二卡流量 夏天出汗严重 豆瓣酱烧黄鱼的家常做法大全怎么做好吃视 车门上的5个实用功能是什么 电脑上传文件时,机箱亮红灯,有很轻的嚓嚓嚓响声 ...一台惠普1020打印机一开机就滴答滴答的且绿灯一直闪 ...不小心挂到P档,当时听到嚓嚓声音,请问对车有什么损坏? ...是三更半夜找我,11点,12点.晕,有时11点还打电话来,自私。 晚上十一点,一个男人打我老婆电话,一次关了,二次关三次又打来了,她们... 【化学】缩写符号】Ac是醋酸的缩写符号,有木有其他的缩写符号??_百度知... 如何关联两个 微信怎么关联另一个? 非谓语动词短语的用法是什么?最好能有例句,谢谢 微信怎么关联其他? 微信怎么关联另一个 怎么把关联到另一个上面 一个如何关联两个? 微信怎么关联另一个 温州下半年自考安排在什么时候?