java字符流入门.docx

上传人:b****6 文档编号:4603756 上传时间:2022-12-07 格式:DOCX 页数:17 大小:141.80KB
下载 相关 举报
java字符流入门.docx_第1页
第1页 / 共17页
java字符流入门.docx_第2页
第2页 / 共17页
java字符流入门.docx_第3页
第3页 / 共17页
java字符流入门.docx_第4页
第4页 / 共17页
java字符流入门.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java字符流入门.docx

《java字符流入门.docx》由会员分享,可在线阅读,更多相关《java字符流入门.docx(17页珍藏版)》请在冰豆网上搜索。

java字符流入门.docx

java字符流入门

1:

字符流(掌握)

(1)字节流操作中文数据不是特别的方便,所以就出现了转换流。

转换流的作用就是把字节流转换字符流来使用。

(2)转换流其实是一个字符流

字符流=字节流+编码表

(3)编码表

A:

就是由字符和对应的数值组成的一张表

B:

常见的编码表

ASCII

ISO-8859-1

GB2312

GBK

GB18030

UTF-8

C:

字符串中的编码问题

编码

String--byte[]

解码

byte[]--String

(4)IO流中的编码问题

A:

OutputStreamWriter

OutputStreamWriter(OutputStreamos):

默认编码,GBK

OutputStreamWriter(OutputStreamos,StringcharsetName):

指定编码。

B:

InputStreamReader

InputStreamReader(InputStreamis):

默认编码,GBK

InputStreamReader(InputStreamis,StringcharsetName):

指定编码

C:

编码问题其实很简单

编码只要一致即可

(5)字符流

Reader

|--InputStreamReader

|--FileReader

|--BufferedReader

Writer

|--OutputStreamWriter

|--FileWriter

|--BufferedWriter

(6)复制文本文件(5种方式)

2:

IO流小结(掌握)

IO流

|--字节流

|--字节输入流

InputStream

intread():

一次读取一个字节

intread(byte[]bys):

一次读取一个字节数组

|--FileInputStream

|--BufferedInputStream

|--字节输出流

OutputStream

voidwrite(intby):

一次写一个字节

voidwrite(byte[]bys,intindex,intlen):

一次写一个字节数组的一部分

|--FileOutputStream

|--BufferedOutputStream

|--字符流

|--字符输入流

Reader

intread():

一次读取一个字符

intread(char[]chs):

一次读取一个字符数组

|--InputStreamReader

|--FileReader

|--BufferedReader

StringreadLine():

一次读取一个字符串

|--字符输出流

Writer

voidwrite(intch):

一次写一个字符

voidwrite(char[]chs,intindex,intlen):

一次写一个字符数组的一部分

|--OutputStreamWriter

|--FileWriter

|--BufferedWriter

voidnewLine():

写一个换行符

voidwrite(Stringline):

一次写一个字符串

3:

案例(理解练习一遍)

A:

复制文本文件5种方式(掌握)

B:

复制图片(二进制流数据)4种方式(掌握)

C:

把集合中的数据存储到文本文件

D:

把文本文件中的数据读取到集合并遍历集合

E:

复制单级文件夹

F:

复制单级文件夹中指定的文件并修改名称

回顾一下批量修改名称

G:

复制多级文件夹

H:

键盘录入学生信息按照总分从高到低存储到文本文件

I:

把某个文件中的字符串排序后输出到另一个文本文件中

J:

用Reader模拟BufferedReader的特有功能

K:

模拟LineNumberReader的特有功能

IO流小结

编码表概述

1数据类型

/*

数据类型:

Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。

数据类型分类:

A:

基本数据类型

B:

引用数据类型(类,接口,数值)

基本数据类型:

4类8种

A:

整数占用字节数

byte1

short2

int4

long8

B:

浮点数

float4

double8

C:

字符

char2

D:

布尔

boolean1

注意:

整数默认是int类型

浮点数默认是double类型。

长整型后缀用L或者l标记。

建议使用L。

单精度浮点数用F或者f标记。

建议使用F。

*/

classDataTypeDemo{

publicstaticvoidmain(String[]args){

//定义变量的格式:

//数据类型变量名=初始化值;

//定义一个字节变量

byteb=10;

System.out.println(10);

System.out.println(b);

//定义一个短整型变量

shorts=100;

System.out.println(s);

//定义一个整型变量

inti=1000;

System.out.println(i);

//超过了int的范围

//intj=1000000000000;

longj=1000000000000L;

//longj=100L;

System.out.println(j);

//定义浮点数据变量

floatf=12.345F;

System.out.println(f);

doubled=12.345;

System.out.println(d);

//定义字符变量

charch='a';

System.out.println(ch);

//定义布尔变量

booleanflag=true;

System.out.println(flag);

}

}

2使用变量注意问题

/*

使用变量的时候要注意的问题:

A:

作用域

变量定义在哪个大括号内,它就在这个大括号内有效。

并且,在同一个大括号内不能同时定义同名的变量。

B:

初始化值

没有初始化值的变量不能直接使用。

你只要在使用前给值就行,不一定非要在定义的时候立即给值。

推荐在定义的时候给值。

定义变量的格式:

a:

数据类型变量名=初始化值;

b:

数据类型变量名;

变量名=初始化值;

C:

在一行上建议只定义一个变量

可以定义多个,但是不建议

*/

classDataTypeDemo2{

publicstaticvoidmain(String[]args){

//定义变量

intx=100;

//错误,不能有同名的

//intx=200;

//定义变量必须给值

//inty;

//System.out.println(y);

intz;

z=100;

System.out.println(z);

//在一行上定义多个变量

//inta=10;intb=20;intc=30;

//上面的写法可以,但是不建议。

inta=10;

intb=20;

intc=30;

//intd,e;

//d=40;

//e=50;

//intf,intg;//错误

//inth;inti;//正确

}

}

3+是一个运算符

/*

+是一个运算符(我们等会讲解)。

做加法运算的。

一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。

注意:

boolean类型不能转换为其他的数据类型

默认转换(从小到大的转换)

A:

byte,short,char—int—long—float—double

B:

byte,short,char相互之间不转换,他们参与运算首先转换为int类型

*/

classDataTypeDemo3{

publicstaticvoidmain(String[]args){

//直接输出的方式做加法

//System.out.println(3+4);

//两个int类型做加法

intx=3;

inty=4;

intz=x+y;

System.out.println(z);

//定义一个byte类型,一个int类型,做加法

bytea=3;

intb=4;

System.out.println(a+b);

//可能损失精度

//bytec=a+b;

intc=a+b;

System.out.println(c);

}

}

4强制转换

/*

强制转换:

从大的数据类型到小的数据类型。

格式:

目标数据类型变量=(目标数据类型)(被转换的数据);

注意:

不要随意的去使用强制转换,因为它隐含了精度损失问题。

*/

classDataTypeDemo4{

publicstaticvoidmain(String[]args){

bytea=3;

intb=4;

//这个肯定没有问题

//intc=a+b;

//bytec=7;

//这个是有问题的

//bytec=a+b;

//用强制类型转换改进

bytec=(byte)(a+b);

System.out.println(c);

}

}

/*

思考题1:

请问下面这个有没有问题

doubled=12.345;

floatf=d;

思考题2:

看看下面两个定义有没有区别呢?

floatf1=(float)12.345;

floatf2=12.345f;

f1其实是通过一个double类型转换过来的。

而f2本身就是一个float类型。

*/

classDataTypeDemo5{

publicstaticvoidmain(String[]args){

//把double赋值给float,加了强制类型转换

doubled=12.345;

floatf=(float)d;

//看看下面两个定义有没有区别呢?

floatf1=(float)12.345;

floatf2=12.345F;

}

}

5字符面试题

/*

面试题:

byteb1=3,b2=4,b;

b=b1+b2;

b=3+4;

哪句是编译失败的呢?

为什么呢?

b=b1+b2;是有问题的。

因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。

常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。

*/

classDataTypeDemo6{

publicstaticvoidmain(String[]args){

//定义了三个byte类型的变量,b1,b2,b3

//b1的值是3,b2的值是4,b没有值

byteb1=3,b2=4,b;

//b=b1+b2;//这个是类型提升,所有有问题

b=3+4;//常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。

}

}

6byte

/*

byteb=130;有没有问题?

如果我想让赋值正确,可以怎么做?

结果是多少呢?

练习:

byteb=(byte)300;

*/

classDataTypeDemo7{

publicstaticvoidmain(String[]args){

//因为byte的范围是:

-128到127。

//而130不在此范围内,所以报错。

//byteb=130;

//我们可以使用强制类型转换

byteb=(byte)130;

//结果是多少呢?

System.out.println(b);

}

}

/*

分析过程:

我们要想知道结果是什么,就应该知道是如何进行计算的。

而我们又知道计算机中数据的运算都是补码进行的。

而要得到补码,首先要计算出数据的二进制。

A:

获取130这个数据的二进制。

00000000000000000000000010000010

这是130的原码,也是反码,还是补码。

B:

做截取操作,截成byte类型的了。

10000010

这个结果是补码。

C:

已知补码求原码。

符号位数值位

补码:

10000010

反码:

10000001

原码:

11111110

*/

/*

看程序写结果

通过字符和一个整数相加,我们给出一张表:

ASCII码表。

通过看完这张表以后,我们要记住三个值:

'a'97

'A'65

'0'48

*/

classDataTypeDemo8{

publicstaticvoidmain(String[]args){

//直接输出一个字符

System.out.println('a');//a

//输出一个字符和一个整数做加法

System.out.println('a'+1);//98

}

}

/*

看程序写结果

字符串数据和其他数据做+,结果是字符串类型。

这里的+不是加法运算,而是字符串连接符。

*/

classDataTypeDemo9{

publicstaticvoidmain(String[]args){

System.out.println("hello"+'a'+1);//helloa1

System.out.println('a'+1+"hello");//98hello

System.out.println("5+5="+5+5);//5+5=55

System.out.println(5+5+"=5+5");//10=5+5

}

}

7HelloWorld输出在控制台

/*

需求:

我准备写一个java程序,把"HelloWorld"这句话输出在控制台

分析:

A:

要写一个Java程序,必须定义类

B:

把数据能够输出,说明我们的程序是可以独立运行的,而程序要独立运行,必须定义main方法

C:

把数据输出在控制台,必须使用输出语句

实现:

A:

java语言提供了一个关键字:

class用来定义类,后面跟的是类名

B:

main方法的格式是固定的:

publicstaticvoidmain(String[]args){

}

C:

输出语句的格式是固定的:

System.out.println("HelloWorld");

"HelloWorld"这个内容是可以改变的

*/

//这是我的HelloWorld案例

classHelloWorld{

/*

为了程序能够独立运行,定义main方法

main方法是程序的入口

被jvm自动调用

*/

publicstaticvoidmain(String[]args){

//为了把数据显示在控制台,我们就使用了输出语句

System.out.println("HelloWorld");

}

}

8关键字

/*

关键字:

被java语言赋予特定含义的单词。

特点:

组成关键字单词的字母全部小写。

注意:

A:

goto和const是保留字

B:

类似于Notepad++这样的高级记事本,针对关键字都有特殊的颜色标记。

*/

classKeyWordDemo{

publicstaticvoidmain(String[]args){

System.out.println("HelloWorld");

}

}

9注释

/*

注释:

用于解释说明程序的文字

Java中注释的分类及格式

单行注释:

//

多行注释:

/星星/

注意:

多行不可以嵌套使用,而单行是可以的

文档注释:

被javadoc工具解析生成一个说明书,面向对象部分讲解。

*/

//这是我的注释案例

classZhuShiDemo{

//main方法是主方法

//是程序的入口

//被jvm调用

publicstaticvoidmain(String[]args){

System.out.println("好好学习,天天向上");

}

}

/*

注释的作用:

A:

解释说明程序,提高程序的阅读性

B:

可以帮助我们调试程序。

后面我们会讲解更高级的调试。

*/

classZhuShiDemo2{

publicstaticvoidmain(String[]args){

System.out.println("林青霞");

System.out.println("王祖贤");

System.out.println("刘亦菲");

System.out.println("范冰冰");

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1