黑马程序员技术交流社区

标题: 强制转型,挺疑惑 [打印本页]

作者: 仰天长啸    时间: 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