文档管理中心

零基础学JAVA小知识点总结(三)

关联阅读:


零基础学JAVA小知识点总结(一)


零基础学JAVA小知识点总结(二)


刷OJ会遇到很多关于输入输出的问题,有的时候不是你的方法有问题,而就是输入的问题,往往很令人气恼,因此打算总结一下JAVA中关于输入和输出的问题。下次,在气恼暴躁的时候,不妨试一试其他方法。


一、JAVA中输入数据的方法


方法一:从控制台接收一个字符,然后将其打印出来


import java.io.*;

public static void main(String [] args) throws IOException{

        System.out.print('Enter a Char:');

        char i = (char) System.in.read();

        System.out.println('your char is :'+i);

}


虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。

方法二:从控制台接收一个字符串,然后将其打印出来。这种方法我们需要用到BufferedReader类和InputStreamReader类


import java.io.*;

public static void main(String [] args) throws IOException{

          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

          String str = null;

          System.out.println('Enter your value:');

          str = br.readLine();

          System.out.println('your value is :'+str);

}



方法三:这种方法我认为是最简单,最强大的,就是用Scanner类


import java.util.Scanner;

public static void main(String [] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println('请输入你的姓名:');

        String name = sc.nextLine();

        System.out.println('请输入你的年龄:');

        int age = sc.nextInt();

        System.out.println('请输入你的工资:');

        float salary = sc.nextFloat();

        System.out.println('你的信息如下:');

        System.out.println('姓名:'+name+''+'年龄:'+age+''+'工资:'+salary);

}


注意:


(1)Scanner方法虽然和强大,但是通过做题发现,使用Scanner进行输入的时候,会跳不出while循环,导致程序一致在while中,不能进行之后的运算,导致代码出错。此时,不妨换用方法二中提到的BufferedReader类和InputStreamReader类。


(2)我们可以通过JAVA中Scanner类的next()和nextLine()方法获取输入的字符串,但是在获取字符串之前要使用hsaNext()和hasNextLine()方法做一下检验,判断是否还有数据输入。hasNext与hasNextLine的区别:hasNext是由在识别到费空格的时候才能判断是否还有next,而hasNextLine只是识别到空格就能判断是都有next。也就是说,如果第一个输入就是空格的话,hasNext方法输出结果会出错,无法是被第一个空格。原因在于:next()对输入有效字符之前遇到的空白,会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。nextLine可以获得空白,以Enter为结束符,nextLine返回的是输入回车之前的所有字符。


二、JAVA中的InputStream和OutputStream


InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。这里,我们首先要分清楚两个概念:

InputStream(输入流):输入流是用来读入数据的。- - - > > >读入

OutputStream(输出流):输出流是用来写出数据的。- - - > > >写出


三、JAVA中的文件File


要学习File类必须弄清楚目录和文件的概念:

1、文件:表示txt文件、word文件、rar文件等文件。

2、目录:就是文件夹的意思。


构造方法:

File(String parent, String child)根据parent和child拼成的路径生成一个File对象,该File对象的getParentFile()找到该对象的目录,如果目录不存在则该对象的createNewFile()方法将返回false即不能生成文件,所以生成文件以前必须先用getParentFile().mkdirs()确保生成目录


注:如果使用.mkdirs()之前没有先getParentFile(),那么如果File中包含文件名则会把文件名也生成一个文件夹)。


java.io包下,File类是唯一与文件本身操作:如删除文件、创建文件、取得文件信息有关的程序类。


四、JAVA中FileInputStream与FileOutputStream基本使用详解


文件输入流——FileInputScream:


FileInputStream 从文件系统中的某个文件中获得输入字节。


构造方法:

(1)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。

public FileInputStream(File file);

(2)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

public FileInputStream(String name);


常用方法:


从输入流中读取一个字节大小的数据

(1)//从此输入流中读取一个数据字节。

public int read();


从输入流一次读取一个字节数组

(1)//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

public int read(byte[] b);

(2)//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。

public int read(byte[] b,int off,int len);


文件输出流——FileOutputScream:


文件输出流是用于将数据写入到文件中。

构造方法

(1)//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

public FileOutputStream(File file);

(2)//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

public FileOutputStream(File file,boolean append);

(3)//创建一个向具有指定名称的文件中写入数据的输出文件流。

public FileOutputStream(String name);

(4)//创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

public FileOutputStream(String name,boolean append);


常用的方法


向文件中写入一个字节大小的数据

(1)//向文件中写入一个字节大小的数据

public void write(int b);


向文件中一次性写入一个字节数组的数据

(1)//将 b.length 个字节从指定 byte 数组写入此文件输出流中。

public void write(byte[] b);

(2)//指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

public void write(byte[] b,int off,int len);


具体地从网络或本地读取图片数据的命令可以参看:


【参考文章】

原文链接:

原文链接:

原文链接:


——————————————————


BY:HW-TS

点赞
收藏
1
回复
4
分享
举报
浏览1143 编辑于2019-10-12 03:27未知归属地
全部评论
最多点赞
最新发布
最早发布

这么厉害,小白的我瑟瑟发抖


3楼回复于2019-10-13 11:58 未知归属地

顶顶顶顶

2楼回复于2019-10-12 07:15 未知归属地

总结的非常详细,(一)(二)(三)都不错

1楼回复于2019-10-12 05:54 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。