第一二章总结
1.适合集合框架
(a)Collection接口存储一组不唯一(可重复),无序的对象
(b)list接口存储一组不唯一(可重复),有序的对象
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
aaa | bbb | ccc | ddd | aaa | bbb |
(c)Set接口存储一组唯一,无序的对象
(4)Map接口存储一组键值对象,提供key到value的映射
2.list接口的实现类
- ArrayList实现了长度可变的数组,遍历元素和随机访问元素的效率高
package com.kgc.arraylist;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// 集合存储多条新闻标题
NewsTitle title1 = new NewsTitle(1, "深圳终于入冬了1", "admin");
NewsTitle title2 = new NewsTitle(2, "深圳终于入冬了2", "admin");
NewsTitle title3 = new NewsTitle(3, "深圳终于入冬了3", "admin");
NewsTitle title4 = new NewsTitle(4, "深圳终于入冬了4", "admin");
NewsTitle title5 = new NewsTitle(5, "深圳终于入冬了5", "admin");
ArrayList list = new ArrayList();
list.add(title1);
list.add(title2);
list.add(title3);
list.add(title4);
list.add(1, title5);
System.out.println("新闻的标题的总数:" + list.size());
// 遍历list,取出每条新闻标题的题目
for (int i = 0; i < list.size(); i++) {
NewsTitle title = (NewsTitle) list.get(i);
System.out.println(title.getTitle());
}
System.out.println("***********");
for (Object obj : list) {
NewsTitle title = (NewsTitle) obj;
System.out.println(title.getTitle());
}
System.out.println("***********");
System.out.println(list.contains(title1));
list.remove(title1);
System.out.println(list.contains(title1));
System.out.println("***********");
System.out.println(list.size());
list.clear();//清除所有集合
System.out.println(list.size());//打印有几个标题
System.out.println(list.isEmpty());//判断是否为空,是则返回Ture
}
}
2.LinkedList采用链表存储方式,插入、删除元素是效率高
3.Map接口
(a)key:唯一,无序 (b)value:不唯一
4.泛型:将对象的类型作为参数,指定到其他类型或者方法上,从而保证类型转换的安全性和稳定性,本质是参数化类型
5.枚举
枚举由一组固定的常量组成的类型;特点为:安全,易于输入,代码清晰
package com.kgc.enmu.demo;
public enum Genders {
男,女;
}
package com.kgc.enmu.demo;
public class Student {
public Genders sex;
public static void main(String[] args) {
Student stu=new Student();
stu.sex=Genders.女;
System.out.println("我是"+stu.sex+"生");
}
}
6.包装类
(1)包装类把基本类型数据转换为对象
(a)每个基本类型在java.lang包中都有一个相应的包装类
(2)包装类有何作用:
(a)提供了一系列有用的方法
(b)集合不允许存放基本数据类型数据,存放数字时,要用包装类型
7.包装类的构造方法
(1)基本类型变为包装类
(a)所有包装类都可以将与之对应的基本数据类型作为参数,来构造他们的实例
如:Integer i=new Integer(1(传入一个该类型的数做参数即可));
Character c=new Character(‘6’);
(b)除Character类外,其他包装类可将一个字符串作为参数构造他们的实例
如:Integer i=new Integer(“123”);
Double c=new Double(“9.8”);
注:
(c)Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写)则该Boolean对象表示true,否则表示false
(d)当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
(2)包装类变为基本数据类型
如:Integer i=new Integer(9);
int j=i.intValue();
Boolean b=new Boolean(true);
boolean b1=b.booleanValue();
(3)基本类型变为字符串
如:int num=9;
String num2=Integer.toString(num);
String num3=num+" ";
(4)字符串变为基本类型(character除外)
如:String s=“89”;
int num1=Integer.parseInt(s);
boolean num2=Boolean.parseboolean(“true”);
8.装箱和拆箱
(1)基本类型和包装类的自动转换
a:装箱:基本类型转换为包装类的对象
b:拆箱:包装了对象转换为基本类型的值
第三章总结
1.绝对路径:从盘符出发
2.相对路径:从当前位置出发(即不从盘符出发)
3.1个字符=2个字节 1个字节=8位 1个字符=16位
一、4.InputStream类常用方法(字节输入流,读,是抽象类)
a.Int read():从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1
b.int read(byte[ ] b):从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取到的字节数,如果到了输入流的末尾,返回-1
c.int read(byte[ ] b,int off,int len):从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目,返回的是读取到的字节数,如果到了输入流的末尾,返回-1
d.void close():
e.int available():可以从输入流中读取的字节数目
5.InputStream的子类FileInputStream常用的构造方法:
a.FileInputStream(File file):传文件
b.FileInputStream(String name):传路径
二、6.OutputStream类的常用方法(字节输出流,写,抽象类)
a.int write()
b.b.int write(byte[ ] b):
c.int writebyte[ ] b,int off,int len):
d.void close():
e.flush():强制将缓冲区清空
7.OutputStream类的子类FileOutputStream常用的构造方法
a.FileOutputStream(File file):传文件
b.FileOutputStream(String path):传路径
c.FileOutputStream(String path,boolean append):boolean append传入的是true则是在原文件上追加新内容
package cn.kgc.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
FileInputStream fis=null;
try {
//输入流FileInputStream
fis = new FileInputStream("c:\\yangxichang\\test.txt");
System.out.println("\n可以读到的字节数:"+fis.available());
// 借助输入流的read()方法读文件
// int data;
// while ((data = fis.read()) != -1) {
// System.out.print((char)data);
// }
// 借助输入流的read(byte[])方法读文件
byte[] b=new byte[1024];
int data;
while ((data = fis.read(b)) != -1) {
for(int i=0;i<data;i++) {
System.out.print((char)b[i]);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭输入流
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package cn.kgc.io;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
//使用字节输出流往文件中写内容
public static void main(String[] args) {
FileOutputStream fos=null;
try {
fos=new FileOutputStream("c:\\yangxichang\\hello.txt");
String str="好好学习java";
//将字符串打散为一个字节数组
byte[] words =str.getBytes();
fos.write(words, 0,words.length);
System.out.println("hello文件已被更新!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package cn.kgc.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class InputAndOutputDemo {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("c:\\yangxichang\\我的青春谁做主.txt");
fos = new FileOutputStream("c:\\yangxichang\\hello.txt", true);
byte[] words = new byte[1024];
int len = -1;
while ((len = fis.read(words)) != -1) {
fos.write(words, 0, len);
}
// 常见错误:(1)少写了一个字节过来 (2)多写了很多空格过来
// while((fis.read())!=-1){
// fis.read(words); //读取文件
// fos.write(words,0,words.length); //写入文件
// }
System.out.println("文件复制完成!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三、8.Reader类常用方法(字符输入流,读)
a.read()
b.read(char[ ])
c.read(char[ ],off,len)
d.close()
9.Reader类的子类FileReader常用的构造方法
a.FileReader(File file)
b.FileReader(String path)
10.InputStreamReader是Reader的子类,同时也是FileReader的父类,常用的构造方法有:
a.InputStreamReader(InputStream in)
b.InputStreamReader(InputStream ,String chatSetName):String chatSetName为指定编码格式,解决中文乱码格式
c.中文乱码的原因:文件编码格式和程序环境的编码格式不一致
解决方案:字符类去读的时候,指定字符流的编码格式
d.打印自己Eclipse的默认编码格式的固定写法:System.out.println(System.getProperty(“file.encoding”));
11.字符缓冲流BufferedReader
a.Reader类的子类BufferedReader类带有缓冲区,按行读取内容的 readLine()方法