Java:编码的详解
import java.io.*;
class EncodeStream
{
public static void main(String[] args)throws IOException
{
//writeText();
readText();
}
public static void writeText()throws IOException
{
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("GBK.txt"));//默认是GBK编码
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("UTF-8.txt"),"utf-8");
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("Unicode.txt"),"Unicode");
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("ASCII.txt"),"ASCII");
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("ISO8859-1.txt"),"ISO8859-1");
osw.write("你好!");
osw.flush();
osw.close();
}
public static void readText()throws IOException
{
InputStreamReader isr = new InputStreamReader(new FileInputStream("GBK.txt"),"GBK");
char[] buf = new char[1024];
int len = 0;
while((len = isr.read(buf))!=-1)
{
String s = new String(buf,0,len);
System.out.println(s);
}
String str = isr.getEncoding();
System.out.println(str);
isr.close();
}
}
import java.util.*;
class EncodeDemo
{
public static void main(String[] args)throws Exception
{
String s = "你好";
//编码
byte[] b1 = s.getBytes("GBK");//[-60, -29, -70, -61]四个字节
//byte[] b1 = s.getBytes("UTF-8");//[-28, -67, -96, -27, -91, -67]六个字节
//byte[] b1 = s.getBytes("Unicode");//[-2, -1, 79, 96, 89, 125]
//byte[] b1 = s.getBytes("ISO8859-1");//[63, 63]两个字节
//System.out.println(Arrays.toString(b1)); //解码
String str1 = new String(b1,"ISO8859-1");//应该是GBK的编码,结果解成了ISO8859-1编码,此时会出现乱码,需要重新编码解码
System.out.println(str1);//发现乱码结果是???? //对乱码再一次编码
byte[] b2 = str1.getBytes("ISO8859-1");
System.out.println(Arrays.toString(b2));//[-60, -29, -70, -61] //再一次解码
String str2 = new String(b2);
System.out.println(str2);//你好
}
}
class EncodeDemo2
{
public static void main(String[] args)throws Exception
{
String s = "联通";//这两个字出现GDK编码和UTF-8编码重复的现象 byte[] by = s.getBytes("gbk"); for(byte b: by)
{
System.out.println(Integer.toBinaryString(b&255));
}
}
}
/*
11000001
10101010
11001101
10101000
以上复合UTF-8的编码
*/
import java.io.*;
import java.util.*;
class Student implements Comparable<Student>
{
private String name;
private int math;
private int English;
private int Chinese;
private int ScoreSum;
Student(String name,int math,int English,int Chinese)
{
this.name = name;
this.math = math;
this.English = English;
this.Chinese = Chinese;
ScoreSum = math+English+Chinese;
}
public String getname()
{
return name;
}
public int getScoreSum()
{
return ScoreSum;
}
public int hashCode()
{
return name.hashCode()+ScoreSum*78;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象!");
Student s = (Student)obj;
return this.name.equals(s.name) && this.ScoreSum==s.ScoreSum;
}
public int compareTo(Student s)
{
int num = new Integer(this.ScoreSum).compareTo(new Integer(s.ScoreSum));
return num==0? this.name.compareTo(s.name):num;
}
public String toString()
{
return "Student["+name+","+math+","+English+","+Chinese+"]";
}
}
class StudentInfoTool
{
public static Set<Student> getStudent()throws IOException
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
Set<Student> stus = new TreeSet<Student>(new Mycomparator());//也可以采用逆转比较器的方法 String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
String[] info = line.split(",");
Student stu = new Student(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[2]),Integer.parseInt(info[3]));
stus.add(stu);
}
bufr.close();
return stus;
}
public static void WriteInfo(Set<Student> stus)throws IOException
{
BufferedWriter bufw = new BufferedWriter(new FileWriter("stud.txt"));
//BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); for(Student stu:stus)
{
bufw.write(stu.toString()+"\t");
bufw.write(stu.getScoreSum()+"");
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}
class StudentFileTest
{
public static void main(String[] args)throws IOException
{
Set<Student> set = StudentInfoTool.getStudent();
StudentInfoTool.WriteInfo(set);
}
}
class Mycomparator implements Comparator<Student>
{
public int compare(Student s1,Student s2)
{
if(s1.getScoreSum()>s2.getScoreSum())
return -1;
if(s1.getScoreSum()<s2.getScoreSum())
return 1;
else
return 0;
}
}
/*
输入数据:
zhangsan,78,89,87
lisi,89,86,78
wangwu,78,56,68
zhaoliu,89,99,100
zhouqi,45,68,97 打印结果:
Student[zhaoliu,89,99,100] 288
Student[zhangsan,78,89,87] 254
Student[lisi,89,86,78] 253
Student[zhouqi,45,68,97] 210
Student[wangwu,78,56,68] 202
*/
Java:编码的详解的更多相关文章
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
- Java :内部类基础详解
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass { pr ...
- Java web Cookie详解(持久化+原理详解+共享问题+设置中文+发送多个Cookie)
Java web Cookie详解 啥是cookie? 查询有道词典得: web和饼干有啥关系? 这个谜底等等来为大家揭晓 会话技术 web中的会话技术类似于生活中两个人聊天,不过web中的会话指的是 ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- 最新java数组的详解
java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...
- 转:Java HashMap实现详解
Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1. HashMap概述: HashMap是基于哈希表的M ...
- 淘宝JAVA中间件Diamond详解(2)-原理介绍
淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...
- 【转】 java中HashMap详解
原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...
随机推荐
- 团队开发(NABC模型)
1.NEED(需求) 基于铁大目前打电话订水的现状,我们发现了一些问题,例如不能及时送到水,水源不足等问题.本来手机在我们生活中就是非常普及的,尤其是对我们大学生来说,我们似乎患上了“手机依赖症”,没 ...
- 阴影 box-shadow(二)
阴影 box-shadow(二) 1.阴影模糊半径与阴影扩展半径的区别 阴影模糊半径:此参数可选,其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊: 阴影扩展半径: ...
- 怎么用PHP发送HTTP请求(转载)
本文转自:http://blog.snsgou.com/blog/161.html file_get_contents版本: /** * 发送post请求 * @param string $url ...
- Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=14.0
参考地址一:点击这里 参考地址二:点击这里 解决方法: 使用office COM元件,电脑里必须要有相对应的版本,比如 Excel 14.0是对应Excel 2010 Excel 12.0是对应Exc ...
- 本人在安装ADT Bundle for windows的各种问题总结
本人在安装ADT Bundle for windows的各种问题总结 1.解决国内访问Google服务器的困难: 1.启动 Android SDK Manager : 2.打开主界面,依次选择「Too ...
- android sdk manager下载慢可以使用代理信息
mirrors.neusoft.edu.cn 80
- JAVA 显示图片的简单源码 分类: Java Game 2014-08-14 10:10 77人阅读 评论(0) 收藏
此代码的原理就是用JLabel来加载图片,再将JLabel放入JFrame中, package com.mywork; import javax.swing.ImageIcon; import jav ...
- SQL Server表分区案例
--学习创建表分区脚本/*SQL SERVER 2005中以上版本,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到多个的表里,大大提高了性能.下面举例子说明之*/ --------- ...
- A trip through the graphics pipeline 2011 Part 10(翻译)
之前的几篇翻译都烂尾了,这篇希望....能好些,恩,还有往昔呢. ------------------------------------------------------------- primi ...
- SQL注入测试用例
//看看是什么权限的and 1=(Select IS_MEMBER('db_owner'))And char(124)%2BCast(IS_MEMBER('db_owner') as varchar( ...