编码表

将字符存储到计算机中----编码;反之,则为解码;

GBK编码:最常用的中文码表

GB18030--最新的中文码表

Unicode字符集:业界的一种标准,也称为统一码、万国码

UTF-8编码:可以用来表示Unicode标准中任意字符

编码规则:

128个US-ASCII字符,只需要一个字节编码

拉丁文等字符,需要两个字节编码

大部分常用字(含中文),使用三个字节编码

其他极少使用的Unicode辅助字符,使用四字节编码

字符串中的编码解码问题
//编码
byte[] getBytes();//默认字符集
byte[] getBytes(String charsetName);//指定字符集 //解码
String(byte[] bytes);//默认字符集
String(byte[] bytes,String charsetName);//指定字符集
相关应用:

编码和解码需要用同一个字符集

import java.util.*;
import java.io.*; public class Main {
public static void main(String[] args) throws IOException {
String s="中国";
byte[] by=s.getBytes("GBK");
System.out.println(Arrays.toString(by)); String ss=new String(by,"GBK");
System.out.println(ss);
}
}
字符流中的编码解码问题

字符流抽象基类:Reader、Writer

相关的两个类:InputStreamReader、OutputStreamWriter

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { //写入
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myByteStream\\osw.txt"),"UTF-8"); osw.write("中国"); osw.close(); //读出
InputStreamReader isr=new InputStreamReader(new FileInputStream("myByteStream\\osw.txt"),"UTF-8"); int ch;
while((ch=isr.read())!=-1){
System.out.println((char)ch);
} isr.close();
}
}
字符流写数据的5种方式
void write(int c);//写一个字符
void write(char[] cbuf);//写入一个字符数组
void write(char[] cbuf,int off,int len);//写入字符数组的一部分
void write(String str);//写一个字符串
void write(String str,int off,int len);//写一个字符串的一部分
相关应用:

//写入字符

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt")); osw.write(97); osw.flush();//刷新流 osw.write(98); osw.close();//释放资源时,先进行刷新操作 //释放资源后,不能再向里面写入数据
}
}

//写入字符数组

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt")); char[] arr={'a','b','c','d','e'};
osw.write(arr);
osw.close();
}
}

//写入一部分字符数组

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt")); char[] arr={'a','b','c','d','e'}; osw.write(arr,0,arr.length); osw.close();
}
}

//写入字符串

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt")); osw.write("asdfg"); osw.close();
}
}

//写入一部分字符串

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt")); osw.write("asdfg",0,"asdfg".length()); osw.close();
}
}
字符流读数据的2种方式
int read();//一次读一个字符数据
int read(char[] cbuf);//一次读一个字符数组数据

//一次读一个字符数据

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(new FileInputStream("myByteStream\\isr.txt")); int ch;
while((ch=isr.read())!=-1){
System.out.println((char)ch);
} isr.close();
}
}

//一次读一个字符数组数据

import java.io.*;

public class Main {
public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(new FileInputStream("myByteStream\\isr.txt")); char[] arr=new char[1024];
int len;
while ((len = isr.read(arr)) != -1) {
System.out.println(new String(arr,0,len));
} isr.close();
}
}
案例:复制Java文件
//基础版
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myByteStream\\Copy.java")); InputStreamReader isr=new InputStreamReader(new FileInputStream("myByteStream\\ConversionStreamDemo.java")); int ch;
while((ch=isr.read())!=-1){
osw.write(ch);
} char[] arr=new char[1024];
int len;
while((len=isr.read(arr))!=-1){
osw.write(new String(arr,0,len));
} osw.close();
isr.close();
}
}
//升级版
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
FileWriter fw=new FileWriter("myCharStream\\Copy.java"); FileReader fr=new FileReader("myCharStream\\ConversionStreamDemo.java"); int ch;
while((ch=fr.read())!=-1){
fw.write(ch);
} char[] arr=new char[1024];
int len;
while((len=fr.read(arr))!=-1){
fw.write(new String(arr,0,len));
} fw.close();
fr.close();
}
}

Java笔记第五弹的更多相关文章

  1. Effective java笔记(五),枚举和注解

    30.用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型.在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚 ...

  2. Java笔记(十五)……面向对象IV多态(polymorphism)

    概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...

  3. Java笔记(五)泛型

    泛型 一.基本概念和原理 泛型将接口的概念进一步延申,“泛型”的字面意思是广泛的类型. 类.接口和方法都可以应用于非常广泛的类型,代码与它们能够操作 的数据类型不再绑定到一起,同一套代码可以应用到多种 ...

  4. Java笔记(五)

    泛型:JDK1.5版本后出现的新特性.用于解决安全问题,是一个类型安全机制. 好处:将运行期间出现问题ClassCastException,转移到了编译时期.方便程序员解决问题,让运行时问题减少. 避 ...

  5. 菜鸡的Java笔记 第五 - java 程序逻辑控制

    程序主要分为三种逻辑:顺序,分支,循环. if 分支语句 if分支语句是最为基础的分支操作,但是其有三种使用形式: if语句 if.....else   语句 if....else...if...el ...

  6. this、访问修饰符——Java笔记(五)

    this         表示当前对象         谁调用方法谁就是当前对象 用static修饰的代码块里面不能使用this 方法里面有一个和字段同名的局部变量时,不能省略this   this还 ...

  7. Java虚拟机笔记(五):JVM中对象的分代

    为什么要分代 为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用, ...

  8. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  9. Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  10. java并发编程笔记(五)——线程安全策略

    java并发编程笔记(五)--线程安全策略 不可变得对象 不可变对象需要满足的条件 对象创建以后其状态就不能修改 对象所有的域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出 ...

随机推荐

  1. Java+selenium自动爬取网站内容并写入本地

    目的:本文主要描述如何使用Java+selenium爬取58同城招聘页,并记录指定职位的招聘公司名保存到本地 一.首先创建一个maven工程,配置依赖包 1 <dependencies> ...

  2. Python 用exec来获取字符串所对应的字典

    Python 用exec来获取字符串所对应的字典 Python exec 问题的提出 想要遍历两个结构相似的字典,但是不想采用字典内嵌套字典的方式,所以想要通过一个列表,该列表包含字典名称.也就是通过 ...

  3. SQL----EXISTS 关键字EXISTS基本意思

    1.EXISTS基本意思 英语解释就是存在,不过他的意思也差不多,相当于存在量词'З'.他不返回数据的,当后带带的查询为空值是,返回"FALSE",非空则返回"TRUE& ...

  4. 取消input框的默认样式

    input{ background:none; outline:none; border:none;(可设置需要的边框样式) } //边框正常显示下的样式 input:focus{ border:no ...

  5. Console对象的实例方法

    1.console.table 将数据以表格的形式显示. 这个方法需要一个必须参数 data,data 必须是一个数组或者是一个对象:还可以使用一个可选参数 columns. // Output an ...

  6. Java下 BigDecimal类型数值的计算(转)

    BigDecimal bignum1 = new BigDecimal("40"); BigDecimal bignum2 = new BigDecimal("7&quo ...

  7. Verilog教程

    1. 简介 当用 Verilog 设计完成数字模块后进行仿真时,需要在外部添加激励,激励文件叫 testbench. Verilog 的主要特性: 可采用 3 种不同的方式进行设计建模:行为级描述-- ...

  8. PTA1002 写出这个数 (20 分)

    1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...

  9. Verilog语法+:的说明

    "+:"."-:"语法看到这个语法的时候是在分析AXI lite 总线源码时碰见的,然后查阅了资料,做出如下解释. 1.用处这两个应该算是运算符,运用在多位的变 ...

  10. 如何卸载powermill?怎么把powermill彻底卸载删除干净重新安装的方法【转载】

    如何卸载powermill?怎么把powermill彻底卸载删除干净重新安装的方法.powermill显示已安装或者报错出现提示安装未完成某些产品无法安装的问题,怎么完全彻底删除清理干净powermi ...