JAVA对象,实例,IO流

JAVA对象实例,集合,I/O流

Box mybox = new Box();

1.Box mybox;//声明mybox,把它作为对Box类型的对象引用,执行后mybox的值为Null,
表示没有引用对象

2.mybox = new Box();//Box是被实例化的类的名字,后面的括号指定了构造函数。

集合:
1.为什么需要集合
JAVA中需要处理对象,为了方便处理多个对象,我们需要把多个对象用容器存储起来

2.集合和数组的区别
(1)长度区别:数组长度固定
集合长度可变
(2)内容不容:数组存储的是同一种类型的元素
集合可以存储不同类型的元素
(3)元素数据类型:数组可以存储基本数据类型和引用类型
集合只能存引用类型(若存储的是Int.会自动装箱成Integer)

3.List集合:有序,可重复
ArrayList:是一个数组队列,相当于动态数组,与数组相比,容量能动态增长。
继承了AbstractList,实现了List,RandomAccess,Cloneable,java.io.Serializable这些接口
ArrayList继承了AbstractList,提供相关的添加,删除,修改
继承了RandmoAccess接口,提供了随机访问功能
继承了Cloneable接口,覆盖函数clone(),能被克隆
实现java.io.Serializable接口,支持序列化

				  不是线程安全,当由于增加数据导致容量不足时,容量会添加上一次容量大小的一半
				  默认构造器构造ArrayList的时候,默认容量大小是10.
				  序列化写入到输出流时,先写入容量,再依次写入每一个元素,
				  当读出输入流时,先读取容量,再依次读取每一个元素。
		
				  
	   ArrayList的三种遍历:
	          1.迭代器,Iterator(最慢)
			     Integer value = null;
				 Iterator iter = list.iterator();
				 while(iter.hasNext()){
				    value=(Integer)iter.next();
				 }
				 
			  2.随机访问,通过索引值去遍历(最快)
			    Integer value = null;
				int size = list.size();
				for(int i=0; i<size; i++){
				   value = (Integer)list.get(i);
				}
				
			  3.for循环遍历
			    Integer value = null;
				for(Integer integ:list){
				     value = integ;
				}	   
	   LinkedList
	   Vector

Arrays.asList()方法

  • (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用
  • (2) 当使用asList()方法时,数组就和列表链接在一起了.
  • 当更新其中之一时,另一个将自动获得更新。 
    
  • 注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 
    
  • (3) asList得到的数组是的没有add和remove方法的
  • 阅读相关:通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的
  • 内部类,而该类并没有定义add和remove方法.另外,为什么修改其中一个,另一个也自动
  • 获得更新了,因为asList获得List实际引用的就是数组

List.toArray():将集合转换为数组,返回值是一个Object的数组,Oject[]
,因为是Object类型,所以这个数组是不可以进行强制数据转换的

List.toArray(T[] t)方法返回一个类T的数组,这个数组包含了类T中的所有元素

4.Set集合:无序,不可重复

流流流流流流流流流流流流流流流流流流流流流流流流流
I/O流!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1.什么是流?流是什么?
JAVA程序中,设备,文件对于数据的输入/输出操作都是以“流”的方式进行
读入数据:输入流,读出:输出流

 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,
 字符只有在内存中才会形成。
 
 字节流在操作时不会用到内存,字符流则会用到内存。
 
 即在操作时,字节流和字符流的操作完成之后都不关闭输出流,
 字节流的操作文件中存在输出的内容,而字符流操作的文件,为空白,输出的内容还在内存中

2.JAVA的字节流
InputStream是所有字节输入流的祖先
OutputStream是所有字节输出流的祖先

3.JAVA的字符流
Reader是所有读取字符串输入流的祖先
Writer是所有输出字符串的祖先
都是抽象类,不能直接new

  字节流转换为字符流时,实际上是Byte[]转换为String

4.字节流与字符流的区别
(1)字节流的操作的基本单位为字节;
字符流操作的基本单位为Unicode码元
(2)字节流默认不使用缓冲区
字符流使用缓冲区
(3)字节流在读取时,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节时,
先去查指定的编码表,将查到字符返回
(4)字节流可以处理所有类型数据,而字符流只能处理字符
5. Reader-BufferedReader,InputStreamReader-FileReader
Writer-BufferWriter,OutputStreamWriter-FileWriter
InputStream-FileInputStream,FilterInputStream-BufferedInputStream
OutputStream-FileOutputStream,FilterOutputStream-BufferedOutputStream

  1. I/O流可以分为节点流和处理流两大类(是否直接与特定的地方(如磁盘,内存,设备等)相连)
    节点流:可以从一个特定的地方读写数据
    处理流:对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
    如BufferedReader
    处理流的构造方法总是要带一个其他的流对象做参数,

7.缓冲流(处理流的一种)
计算机访问外部设备或文件,比直接访问内存慢的多。如果我们每次调用read()方法或
writer()方法访问外部设备,CPU需要花许多时间在等外部设备响应,而不是数据处理。
因此开辟一个内存缓冲区的内存区域,程序每次调用read和writer都是在这个缓冲区,
缓冲区满了以后,系统才将这个缓冲区的内容一次集中写到外部设备或读取进来给CPU。

   拥有缓冲区的流称为缓冲流,BufferedInputStream,BufferedOutputStream 
                             BufferedReader,BufferedWriter

   为了提高效率,可以用BufferedReader来很配合其他字节流,BufferedReader带有缓冲切,
   可以先把一批数据读入到缓冲区内。
   
   BufferedReader:
              BufferedReader(Reader in ):创建一个使用默认大小输出缓冲区的缓冲字符输入流对象
			  BufferedReader(Reader out,int sz):创建一个使用指定个大小输出缓冲区的缓冲字符输入流对象
			  readLine():读取一个文本行
			  
   BufferedWriter:
              BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流对象
			  BufferedWriter(Writer out, int sz):创建一个使用指定大小输出缓冲区的缓冲字符输出流对象
			  newLine():换行
			  
   BufferedInputStream和BufferedOutputStream
              

   验证缓冲流一BufferedReader:
               File file = new File("D:\\yin.text")
               Reader read = new FileReader(file);
			   BufferedReader bin = new BufferedReader(read);
			   str = bin.readLine();
			   bin.close();
			   read.close();
			   
   验证缓冲流二BufferedWriter:
			   FileWriter fw = new FileWriter(file);
			   BufferedWriter bw = new BufferedWriter(fw);
			   for(int i = 0; i < str.length; i++){
			   
			     bw.writer(str[i])
				 bw.newLine();
			   }
               bw.close();
			   fw.close();

8.转换流:
对读取到的字节数据进行指定编码的编码转换。
使用inputStreamReader时是默认的编码表
InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”))

  InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),utf-8)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值