Java教程

java学习第三周笔记

本文主要是介绍java学习第三周笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

6.5 接口

接口 interface
interface(接口名){代码……}
接口的特点
1. 通过interface定义接口
2. 通过implement实现接口
3. 接口中方法的都是抽象方法,可以简写
4. 描述一类事物的属性与方法,暴露的是规则
5. 不可以创建对象,不可以实例化
6. 可以多实现,多继承
注:接口不是类!

7 API

7.1 API

API (应用程序接口),一些预先定义的函数,一种通用的功能集。

7.2 Object 所有类的顶级父类

toString() 返回对应对象的字符串表示
hashCode() 返回哈希码值
equals() 是否相等
注:hashCode()与equals()对于引用类型来讲,重写前返回的是地址值,重写后返回属性加属性值

7.3 String

String是封装char[]数组的对象,字符串不可变
创建方式:
	char[] value={'a','b','c'}
	String str=new String(char[] value)
	String str="abc";
	注:String类已经默认重写了equals(),因此在比较时比较的是字符串的字符内容

String常用方法

	int hashCode() 哈希码值
	boolean equals 比较==
	String toString 返回本身
	
	int length() 返回字符串的长度
	String toUpperCase() 转成大写字母
	String toLowerCase() 转成小写字母
	boolean startsWith(String prefix) 是否以指定元素开头
	boolean endsWith(String suffix) 是否以指定元素结束
	
	char charAt(int index) 返回索引char的下标值
	int indexOf(String str) 返回此字符第一次出现的索引值
	int lastIndexOf(String str) 返回此字符最后一次出现的索引值
	String concat(String str) 拼接到字符串结尾
	String []split(String regex) 根据指定元素分割此字符串
	
	String trim() 去除字符串首尾空格
	byte[] getBytes() 把字符串储存到一个新的byte数组中
	String substring(int beginIndex) 返回一个新字符串,从指定下标开始一直到结束
	String subString(int beginIndex,int endIndex) 返回一个新字符串,从指定下标到开始,到指定位置结束,[开始,结束)
	static String valueOf(int i) 把int转成String

7.4 StringBuilder/StringBuffer

StringBuffer()/StringBuilder() 都使用工具类对象append()进行拼接
StringBuffer 线程安全
StringBuilder 线程不安全
执行效率:StringBuilder>StringBuffer>String

7.5 正则表达式

常用语法

k				必须匹配指定字符k
abc				必须匹配指定字符abc
[abc]			只匹配单个的字符
[abc][123]		两个里面各取一个进行组合
[a-z]			匹配26个小写字母
[a-zA-Z0-9]		三种符合的都可以单一存在
[^a-zA-Z]		排除英文字母
\d				数字,相当于[0-9]
\D				排除数字,相当于[^0-9]
\s				空白字符
\S				排除空白字符
\w				字母数字下划线,相当于[a-zA-Z0-9_]
\W				排除字母数字下划线
.				单个匹配任意字符
[abc]?			?表示,出现0次或1次
[abc]?[123]		组合:如1,2,3,a1,a2,a3,b1,b2,b3,c1,c2,c3
[abc]*			*表示,可以出现0到多次
[abc]+			+表示,出现的次数要>=1次
[abc]{3}		元素可以出现3次, aaa,bbb,ccc,cab……

String提供的正则表示方法

	Matches(正则):当前字符串能否匹配正则表达式
	replaceAll(正则,子串):替换子串
	split(正则):拆分字符串
	String regex="\\d{17}{o-9X}"  定义格式
	input.matches(regex)  判断是否符合格式

7.6 包装类

Integer
创建方式:	1.new Integer(5);		新建对象
			2.Integer.valueOf(5);	新建后缓存对象,范围-128~127
			int parseInt(String s) 	字符串转化为整数型
Double
创建方式:	1.new Double(3.14);
			2.Double.valueOf(3.14); 两者创建方法效果相同
			double parseDouble(String s); 字符串转化为浮点型

7.7 自动装箱/自动拆箱

自动装箱 基本类型-->包装类型
Integer a=5;   //Integer a=Integer.valueOf(5);
自动拆箱 包装类型-->基本类型
int i=a;    //int i=a.intvalue();

7.8 BigDecimal

常用方法:

add(BigDecimal bd):		加法运算
subtract(BigDecimal bd):减法运算
Multiply(BigDecimal bd):乘法运算
Divide(BigDecimal bd):	除法运算
Divide(BigDecimal bd,	保留位数,舍入方式):除不尽时使用
setScale				(保留位数,舍入方式):同上
pow(int n):				求数据的几次幂

舍入方式:

ROUND_HALF_UP 四舍五入
ROUND_HALF_DOWN 五舍六入
ROUND_HALF_EVEN 公平舍入
ROUND_UP 直接进位
ROUND_DOWN 直接舍弃
ROUND_CEILING 向上取整
ROUND_FLOOR 向下取整

7.9 IO流

流,英文为Stream,按流的方向有输入流(in)和输出流(out),按处理数据类型有字节流和字符流
输入指的是程序的读入,输出指的是程序的输出

7.10 File

File常用方法速查表:
File file=new File(String pathname);

file.length();//文件字节量
file.exists();//是否存在
file.isFile();//是否为文件
file.isDirectory();//是否为文件夹
file.getName();//获取文件/文件夹名
file.getParent();//获取父级文件夹路径
file.getAbsolutePath();//获取完整的路径

file.createNewFile();//新建文件
file.mkdir();//新建不存在的文件夹
file.mkdirs();//新建不存在的多个文件夹
file.delete();//删除文件(空文件/空文件夹)

file.list();//返回String[],包含文件名,不可操作对象(不常用)
file.lietFiles();//返回File[],包含文件对象,可对文件对象做进一步操作(常用)

7.11 字节流

1字节流输入
InputStream抽象类 
	字节输入流的所有类的超类/抽象类
FileInputStream子类 (操作文件的字节输入流)
	直接插在文件上读取文件
BufferedInputStream子类(缓冲字节输入流)
	BufferedInputStream(InputStream in)
	BufferedInputStream(new FileInputStream(String pathname))
2字节流输出
OutputStream抽象类	
FileOutputStream 子类
	FileOutputStream(String name)
BufferedOutputStream 子类
	BufferedOutputStream(OutputStream out)

7.12 字符流

1字符流输入
Reader抽象类
FileReader--子类 (操作文件的字符输入流)
	FileReader(String fileName)
BufferedReader--子类 (缓冲字符输入流)
	BufferedReader(Reader in)
	BufferedReader(new FileReader(String fileName))
2字符流输出
Writer抽象类
FileWriter--子类
	FileWriter(String fileName)
BufferedWriter--子类
	BufferedWriter(Writer out)

7.13 序列化 反序列化

序列化:ObjectOutputStream     程序中的对象输出到文件中
方法:	out.writerObject();
反序列化:ObjectInputStream		序列化后文件读入程序
方法:	in.readObject();
注:序列化与反序列化UID需要保持一致
编码转换
OutputStreamWriter    字符流-->字节流
InputStreamReader     字节流--->字符流

7.14 集合

Collection接口
	List
		ArrayList 
		LinkedList	
	Set
		HashSet
		TreeSet
	Map
		HashMap
		TreeMap

collection方法表

add()		添加
addAll()	添加
remove()	移除
isEmpty()	是否为空
size()		元素个数
contains()	包含
toArray()	转为数组
iterator()	迭代	

7.15 泛型

在方法的返回值之前声明了一个,表明后面出现的E是泛型,而不是普通java变量

public class TestStudent<Student>{ }
public interface Collection<E>{ }
public <E> void print(E e){ }

常用名称

	E-element在集合中使用,因为集合中存放的是元素
	T-Type(java类)
	K-Key(键)
	V-Value(值)
	N-Number(数据类型)
	?-表示不确定的java类型

高效for循环

	for(数据类型 遍历所起数据名称i:需要遍历的数据){方法体}

7.16 List接口

List方法速查表
get() 	获取索引位置的元素
set()	修改指定位置元素
add()	添加
addAll()添加
subList()	返回列表中的指定起始元素[  )
listIterator() 列表迭代器

ArrayList 底层是数组结构,查询快,增删慢,适合查询较多的场景
LinkedList 底层是链表结构,查询慢,增删块,适合增删较多的场景

这篇关于java学习第三周笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!