当前位置:首页 » 编程语言 » javabytetoshort

javabytetoshort

发布时间: 2022-04-25 02:01:44

java变量类型有哪些各自特点

朋友你这样的问题还是多看看书比较好啊 系统看看 给你推荐一本《JAVA核心》

下面是我以前整理的文章 你看看 也许能够帮助你

Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。对于这些变量类型之间的相互转换在我们编程中经常要用到,以下是具体的说明。
一、 整型、实型、字符型变量中的相互转换
在Java中整型、实型、字符型被视为同一类数据,这些类型由低级到高级分别为(byte,short,char)——int——long——float——double,低级变量可以直接转换为高级变量,例如,下面的语句可以在Java中直接通过:
byte b;
int i=b;
而将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
int i;
byte b=(byte)i;
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此我们并不推荐使用这种转换。

二、Java的包装类
在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。

三、简单类型变量和包装类之间的相互转换
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

四、String类和其它数据类型的相互转换
对于上面的这些包装类,除了Character以外,都有可以直接使用字符串参数的构造函数,这也就使得我们将String类转换为这些数据类型变得相当之简单,即:
Boolean(String s)、Integer(String s)、Long(String s)、Float(String s)、Double(String s)
而将String类转换为Date类也可以使用这样的构造函数:Date(String s)
现在我们还剩下一个字符型变量,事实上String类可以理解为一个char型数组,因此我们可以在String类中找到这样的方法来实现这种转换:charAt(int index)可以得到String类中某一位置上的字符,toCharArray()更可以将整个String类转换成一个char的数组。
对于所有的包装类都存在一个名为toString()的方法可以将其转换成对应的String类,而对于整型类和长整型类,还可以使用toBinaryString(int i)、toHexString(int i)、toOctalString(int i)分别以二进制、十六进制和八进制的形式进行到String类的转换。

五、将字符型直接做为数值转换为其它数据类型
将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,‘1’就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用Character的getNumericValue(char ch)方法。

六、Date类与其它数据类型的相互转换
整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:
Date(int year, int month, int date):以int型表示年、月、日
Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分
Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒
在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。
而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
在Java的数据类型转换中,你还有一些其它方法可用,但是,上面所介绍的这些方法对于你的实际编程已经足够了,不是吗?

以前我也遇到过编码问题,解决方法是在输入后放一层过滤器转码,输出时在放一个另一个过滤器,这样,每当有其他移植时,直接改变过滤器的代码就OK了。

过滤器代码如下

public static String SyConvertCode(String tempSql){
if (tempSql==null)
tempSql="";
else
tempSql = tempSql.trim();
String returnString = tempSql;
try{
// byte[] ascii=returnString.getBytes("GBK");
// returnString =new String(ascii,"ISO-8859-1");
byte[] ascii=returnString.getBytes("ISO-8859-1");
returnString =new String(ascii,"GBK");

}catch(Exception e){
e.printStackTrace();
}
return returnString;
}

❷ 一道java简单的题目

Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果 .如果把两个byte类型值相加,最后会得到一个int类型的结果。如果需要得到byte类型结果,必须将这个int类型的结果显式转换为byte类型。

所以,你输出时,得到会是十进制。如果要byte ,再强转。想要八进制,它的执行过程也是,bye---int--然后利用Integer.toOctalString() 来转的。

从byte型到int型无须转换。深究这些内容无意义。把一些整形中的进制转换高清楚就好了。

❸ Java 对一个长512字节的字节数组byte[],写入8个int,4个short,3个long

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.text.ParseException;

public class Test {
public static void main(String[] args) throws ParseException, IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream(512);
DataOutputStream dos = new DataOutputStream(bos);
//写入8个int
for(int i = 0; i < 8; i++){
dos.writeInt(i);
}
//写入4个short
for (short i = 0; i < 4;i++){
dos.writeShort(i);
}
//写入3个long
for(long i = 0 ; i < 3; i++){
dos.writeLong(i);
}
//定义一个定长的数组
byte[] result = new byte[512];
ByteArrayInputStream bas = new ByteArrayInputStream(bos.toByteArray());
//将输出流中的内容写到定长数组中
bas.read(result);
dos.close();
bas.close();
//回显
ByteArrayInputStream bas2 = new ByteArrayInputStream(result);
DataInputStream dis = new DataInputStream(bas2);
//从结果中读取8个整型
for(int i = 0; i < 8; i++){
System.out.print(dis.readInt() + " ");
}
System.out.println();
//从结果中读取4个short
for (short i = 0; i < 4;i++){
System.out.print(dis.readShort() + " ");
}
System.out.println();
//读出3个long
for(long i = 0 ; i < 3; i++){
System.out.print(dis.readLong() + " ");
}
dis.close();
}
}
通过
byte[] result = new byte[512];
ByteArrayInputStream bas = new ByteArrayInputStream(bos.toByteArray());
//将输出流中的内容写到定长数组中
bas.read(result);
实现往固定长度的数组中读入,来固定长度。
而便捷的写入是通过把ByteArrayOutputStream上面装饰成DataOutputStream来实现的

❹ 在Java中能接收byte数据的类型有什么

没有直接接收的类型,可把byte写入到ByteArrayOutputStream保存,该类有一个toByteArray()方法,可以获取已经写进去的byte

❺ java的+号和数据转换问题

关于第一问题的回答:

首先,java中基本数据类型:

1 从小类型到大类型. 自动转换

bytea=1;intb=a;

2 从大类型到小类型, 强制转换. (因为可能有精度丢失等问题, 强制转换自己可以先思考先能不能转换)

inta=1;byteb=(byte)a;
intx=158;bytey=(byte)x;
//byte的范围是-128~127x超过范围了,强制转换得到一个-98
//所以强制转换前需要思考,会不会超过范围

其次: 结合题目思考 .java基本数据类型的运算

Java中,对于short, byte, char 比int小的变量类型来说,运算结果会自动转换为int类型。使用 int 类型作为运算类型

byte a = 1; byte b =2;

所以如果a+b.那么结果是什么类型. int类型

如果赋值给byte c = a+b; //运行时就会报错:Type mismatch: cannot convert from int to byte

解决办法如下:

第一种:

bytec=(byte)a+b;//确定不超过byte范围时.强制转换

第二种

intc=a+b;//int或者long.其实写成longc,就是把int类型的结果,又自动转换成了long

第三种

拓展,其实用final修饰后的变量,可以直接进行运算,不用转换类型

finalbytem=1,n=2;
byteresult=m+n;//就不会出错,当然还是要注意是否超过byte范围.

java面对final修饰的基本数据类型的变量m和n,其实当成了直接赋值.就好比

byte result = 1+2;

关于第二个问题的回答:

System.out.println("结果为: "+result); 这里的+号是连接符,把字符串和其他数据连接在一起.

+号运算符.根据情况不同.要么进行计算,要么有字符串作为其中的一个操作数时,就进行字符串的连接.

System.out.println("2"+"+"+"3"+"="+(2+3));
//括号里的优先计算先计算2+3=5,然后把整个字符串.串联起来
//输出2+3=5

❻ java 中关于byte数组的赋初值问题

byte short int long
这几种类型都是java中的整数类型

你肯定对int比较了解,byte和int的区别是int是32位,byte是8位,表示的数字范围为:-128到+127
所以
第一个byte中元素都没超过范围,都以数字显示。第二个byte数组中的元素都是char类型,char类型是占16位的,一般转换为byte是由大到小,需要强制转换,但这些char并没有超出byte的范围,所以不用
在打印时会将char元素转换成对应的ascii码,具体你可以去查
toString的确是输出字母,但'a'是字符,不是字符串,两个完全不同的概念

字符串+primitive类型就是转换为字符型的最简单方法,例:
4+"" 将数字4转换为字符串4 现在的4不再是数字,而是字符串,懂?

❼ java问题byte a=1,b=1;byte c=a+b;为什么错

你所问的这个问题叫“自动类型提升”

在java中,对char, byte和short类型的字符串进行数学算法操作,比如+,-,>>位移操作,都会引发
自动类型提升,结果将是int类型,a+b的结果是int, 要将int的值赋给byte就必须进行类型强制转换。

以下这句,是从think in java 3rd中摘出来的,希望对你有帮助。
In char, byte, and short, you can see the effect of promotion with the arithmetic operators. Each arithmetic operation on any of those types proces an int result, which must be explicitly cast back to the original type (a narrowing conversion that might lose information) to assign back to that type.

最后 关于类型的自动提升,java定义若干适用于表达式的类型提升规则:

第一,所有的byte型、short型和char型的值将被提升到int型;
第二,如果一个操作数是long型,计算结果就是long型;
第三,如果一个操作数是float型,计算结果就是float型;
第四,如果一个操作数是double型,计算结果就是double型。

❽ Java 十进制转二进制!要求如下: Byte Short Int Long 跟据不同的bits数转二进制!如:50转"00110010"

int i=50;
System.out.println(Integer.toBinaryString(i));

❾ java中长整型定义

java整型有四种分贝是:byte(1字节)、short(2字节)、int(4字节)、long(8字节)

0x100080000000超出范围,其实不是long不能保存这么大,而是这个数是个int型数。它超出的其实是int的范围(The literal 0x100080000000 of type int is out of range),在整数赋值时。

可以将赋值语言修改如下,指定它的类型为long型就可以了:

long y=0x100080000000l;//

(9)javabytetoshort扩展阅读

java整形与长整型之间的转换可以借助Long类或字串

1、借助Long类:

int new_a = new Long(a).intValue();

2、借助字串:

int new_a = Integer.parseInt(String.valueOf(y));

java整形、长整型、浮点型 边界值:

int型边界最大值:Integer.MAX_VALUE

int型边界最小值:Integer.MIN_VALUE

long型边界最大值:Long.MAX_VALUE

long型边界最小值:Long.MIN_VALUE

float型边界最大值:Float.MAX_VALUE

float型边界最小值:Float.MIN_VALUE


❿ 在java中 如何将得到的String转换为Short型 急。。

可以用基本数据类型的对象包装器来转换。

这在lang包中,系统自动加载。

publicclassZh{

publicstaticvoidmain(String[]args){
//建立String
Stringb="4";
//用基本数据类型的对象包装器将String转换为short
Shorta=newShort(b);
//输出a
System.out.println(a);

}

}

这样就成功的将String转换为short,希望能帮到你。

热点内容
爱肤密码多少钱 发布:2025-07-16 09:52:51 浏览:616
如何访问电脑工作组 发布:2025-07-16 09:39:24 浏览:183
动态优先权算法 发布:2025-07-16 09:39:02 浏览:201
火车wifi密码是多少啊 发布:2025-07-16 09:35:46 浏览:756
sql的视图是从中导出的 发布:2025-07-16 09:31:34 浏览:784
安卓如何打开shell窗口 发布:2025-07-16 09:28:09 浏览:313
华为荣耀备忘录文件夹 发布:2025-07-16 09:23:23 浏览:972
基于特征匹配算法 发布:2025-07-16 09:18:23 浏览:46
梦香神奇宝贝服务器的ip 发布:2025-07-16 09:14:07 浏览:212
电子密码手套箱是什么 发布:2025-07-16 09:13:27 浏览:799