黑马程序员技术交流社区
标题:
强制转型,挺疑惑
[打印本页]
作者:
仰天长啸
时间:
2015-3-7 16:35
标题:
强制转型,挺疑惑
我想问下 我在IO流中用数组读取数据时 因为读取的不都是二进制嘛 需要转化为String类型我们才能看懂,那为什么不直接在要转化的代码前面加String就是这样的个是 String (要转化的代码) ,我看实际使用中是加了new String (要转化的代码) ,难道就是因为我们用了String类??还是什么呀??
这是我刚敲的代码,不加new 会报错
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
//一次读取一个数组
public class fourday009 {
public static void main(String[] args) throws IOException {
File file=new File("F:\\HollleWorld");//创建HelloWorld对象
FileInputStream fis=new FileInputStream(file);//创建流对象
byte [] bys=new byte [1024];
int a=0;
while((a=fis.read(bys))!=-1){
System.out.print( new String(bys,0,a));
}
}
}
作者:
路文龙
时间:
2015-3-7 16:45
System.out.print(String(bys,0,a));
楼主是这个意思么?
这个语法上就有问题啊,既不是强制类型转换(String)bys,也不是调用静态方法,而且构造函数不允许用static修饰符修饰,不可能是静态方法。
作者:
仰天长啸
时间:
2015-3-7 16:48
这里有几个小错误HelloWorld.Java 还一个是关闭流对象
作者:
仰天长啸
时间:
2015-3-7 16:54
我表达没不清晰,现在我再发一次代码 疑问已经在代码上体现
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
//一次读取一个数组
public class fourday009 {
public static void main(String[] args) throws IOException {
File file=new File("F:\\HelloWorld.java");
FileInputStream fis=new FileInputStream(file);//创建流对象
byte [] bys=new byte [1024];
int a=0;
while((a=fis.read(bys))!=-1){
System.out.print( new String(bys,0,a));//这里不是new 里一次 其实我感觉是不用new的就报错了
//这里不大明白
}
fis.close();
}
}
结果是:
class HelloWorld{
public static void main (String [] args){
System.out.println("我爱JAVA");
}
}
作者:
hss01248
时间:
2015-3-7 20:42
强制转型分为基本数据类型之间和引用数据类型之间(一般为继承关系的类、接口实例之间)两种情况。
String是引用数据类型的一种,与基本数据类型之间的转换不能简单前面加类型名称,要通过方法来进行与基本数据类型之间的转换。
比如这里的与字节数组的互相转换:
1.string 转 byte[]:getBytes()方法
byte[] midbytes=isoString.getBytes("UTF8"); //为UTF8编码
2.byte[]转String:使用String的构造方法。
String isoString = new String(bytes,0,len,"ISO-8859-1");
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2