学习Java必备的基础知识打卡12.23,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

Posted java厂长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Java必备的基础知识打卡12.23,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#相关的知识,希望对你有一定的参考价值。

Day29-Java之字符编码、内存流基本操作

@[toc]

关于作者

• 作者介绍

常用字符编码

在计算机的世界之中,所有的显示文字都是按照其指定的数字编码进行保存的,如果没有正确的解码,那么就坑你产生乱码,如果要想清楚解决乱码问题,就要了解经常见到一些常见的编码:

GBK/GBK2312:表示国标中文编码,其中GBK是包含简体中文和繁体中文,而GB2312只有简体;

ISO 8859-1:是一种国际通用编码,可以表示任何文字,但是对于中国文字需要进行转码;

UNICODE:使用十六进制完成的编码,可以准确的表示出任何的语言文字;

UTF-8:部分编码使用UNICODE,而一些编码继续使用像ISO 8859-1,类型的编码,适合于网络传输,在以后的所有的项目开发之中,都必须采用此编码。可是考虑到日后学习的方便,几乎都会使用命令行进行操作,所以命令行只支持GBK编码,UTF不支持,一旦程序设置了UTF编码,那么通过命令行查看就是乱码。

在开发之中经常会遇见乱码的问题,所谓的乱码的核心在于编码和解码不统一。如果要想正确的避免项目之中出现的乱码,那么首先就应该知道环境之中所支持的编码是什么。

乱码产生分析

package com.day15.demo;

public class ListDemo 
    public static void main(String[] args) 
        System.getProperties().list(System.out);
    

这个时候显示出来的信息是很多的,这里面有专门的编码选项“file.encoding=GBK”,也就是说如果没有任何的意外,所有的文字编码都是GBK。

package com.day15.demo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class ListDemo 
    public static void main(String[] args) throws Exception
        OutputStream out = new FileOutputStream(new File("f:" + File.separator + "test" + File.separator + "hello.txt"),true);
        out.write("世界和平".getBytes());
        out.close();
    

内存流基本操作

在讲解之前首先来思考一个问题:就是如果现在某个操作必须发生IO,但有不希望有一些临时文件产生的话,那么现在肯定无法使用之前的文件操作流,所以为了解决这样的问题,提供了内存操作流,即:以内存进行操作的终端,以发生IO操作关系。

对于内存操作流也分为两组:

字节内存操作流:内存输入流(ByteArrayInputStream)内存输出流(ByteArrayOutputStream)

字符内存操作流:内存输入流(CharArrayReader)内存输出流(CharArrayWriter)

ByteArrayInputStream ByteArrayOutputStream
java.lang.Object<br/> java.io.InputStream<br/> java.io.ByteArrayInputStream java.lang.Object<br/> java.io.OutputStream<br/> java.io.ByteArrayOutputStream
public ByteArrayInputStream(byte[] buf) public ByteArrayOutputStream()

package com.day15.demo;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;

public class MemoryDemo 
    public static void main(String[] args) throws Exception
        String str = "Hello,World!";
        InputStream in = new ByteArrayInputStream(str.getBytes());
        OutputStream out = new ByteOutputStream();
        int temp = 0;
        while((temp = in.read())!=-1)
            out.write(Character.toUpperCase(temp));
        
        in.close();
        out.close();
        System.out.println(out.toString());
    

此过程我们发现没有文件的产生,而此过程只不过是产生了临时文件。

以上是关于学习Java必备的基础知识打卡12.23,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章

学习Java必备的基础知识打卡12.27,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

学习Java必备的基础知识打卡12.16,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

学习Java必备的基础知识打卡12.19,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

学习Java必备的基础知识打卡12.22,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

学习Java必备的基础知识打卡12.7,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#

学习Java必备的基础知识打卡12.29,要想学好必须扎实基本功(⭐建议收藏)#yyds干货盘点#