(四)高级特性
集合框架
数组(长度固定)
集合存储的都是对象
集合框架的类和接口都是在java.util包下
Collection (接口) ——-存储不唯一,无序
List ———-不唯一,有序
ArrayList
LinkedList
Set ———-唯一,无序
HashSet
TreeSet
List接口
常用实现类:
ArrayList
可变长度的数组,初始化数组长度是10
线程不同步,不安全。
Object[] elementData = new Object[10];
查询速度快
LinkedList
链表存储方式,增加和删除的效率高
ArrayList方法:
add(); 将指定的元素添加到此列表的尾部。
get(int index);根据索引获取集合中对应的数据
remove(); 删除
size();返回集合的长度
clear();情况集合中所有数据
toArray();将集合转换为对象数组
循环遍历list集合
for(int i=0;i<list.size();i++){
}
LinkedList方法:
void addFirst(E e)
将指定元素插入此列表的开头。
void addLast(E e)
将指定元素添加到此列表的结尾。
E getFirst()
返回此列表的第一个元素。
E getLast()
返回此列表的最后一个元素。
removeFirst()
删除第一个
pollFirst()
1.6之后,删除第一个
Set接口(无序,唯一)
筛掉重复数据
HashSet
由哈希表支持
TreeSet
由二叉树支持
set集合不存在get方法
如何遍历set集合?
a.通过迭代器Iterator实现遍历
b.增强for循环
List集合遍历方式:
一般for循环
增强for循环
迭代器
Set集合遍历方式:
增强for循环
迭代器
map接口
键不能重复
一个键只能对应一个值
常用实现类:
HashMap(常用) Hashtable TreeMap Properties(常用)
map接口常用方法:
添加: put(k,v)
获取: get(k)
删除: remove(k)
记录数: size()
获取键的集合:keySet();
HashMap:
哈希表的 Map 接口的实现
map集合如何遍历?
a.迭代器方式
b.增强for循环
HashMap和Hashtable的区别?
HashMap 线程不同步,线程不安全
Hashtable 线程安全,同步
TreeMap:
基于红黑树的实现
Properties:
继承Hashtable
一般用于读取配置文件(xx.properties)
getProperty(key)
泛型
JDK1.5 新特性
集合一般都需要加入泛型
有一组数据,怎么存储到集合,使数据唯一且有序的
先把数据存入set集合,再将set集合中的数据存入list
addAll()
枚举
定义
enum
枚举是一组固定常量组成的类型
包装类
java的八大基本数据类型
包装类
byte——–Byte
int ——–Integer
short ——Short
long——–Long
double——Double
float——-Float
char——–Character
boolean—–Boolean
Number 是抽象父类
a、整型包装类Integer
字符串—>数字
Integer y = new Integer(“12”);
Integer.parseInt(“23”)
Integer.valueOf(“58”);
//其他类型—–字符串
+””;
toString();
b.Boolean
String str = “true”;
boolean flag = Boolean.parseBoolean(str);
JDK1.5新特性
自动装箱和拆箱
装箱:基本数据类型转包装类
拆箱:包装类转基本数据类型
int 默认值是0
Integer 默认值null
数学类Math
Math.PI;//获取圆周率
abs() ;//取绝对值
max(,);比较两个数,取最大值
random();取0.0–1.0之间的随机数
//0-9之间的随机数
int num = (int)(Math.random()*10);
Random类
Random r = new Random();
int num2 = r.nextInt(10);
String
//创建了两个对象
String str2 = new String(“你好”);
常用方法:
字符串长度:length();
字符串连接 “+”
concat();
字符串提取:
str.substring(2, 4);
字符串去空格
str.trim();只能去字符串两端的空格
IO流
文件操作
字符流读取文本文件
输出
Writer
OutputStreamWriter
FileWriter
输入
Reader
InputStreamReader
FileReader
FileWriter
//自动创建文件,并每次执行覆盖
FileWriter fw = new FileWriter(“c:/abc.txt”);
//实现续写文件
FileWriter fw = new FileWriter(“c:/abc.txt”,true);
//实现换行写入
“/r/n”
//写入字符数组
FileReader
字符读取
a、效率很低
int len = 0;
while((len=fr.read())!=-1){
System.out.print((char)len);
}
b.手动建立一个缓存区(效率高)
char[] buff = new char[1024];
int len = 0;
while((len = fr.read(buff))!=-1){
System.out.print(new String(buff, 0, len));
BufferedReader
带有缓冲区的字符读取流,提高读取效率
字符数组长度默认为8192;
特有方法:
readline();//读取一行 读到末尾为null
FileReader — > BufferedReader
FileWriter —-> BufferedWriter
文件File
创建文件
File file1 = new File(“c:/fileDemo.txt”);
boolean flag = file1.createNewFile();
创建文件夹
File file2 = new File(“c:/软件”);
boolean flag2 = file2.mkdir();
删除文件或文件夹
delete();
判断file是文件还是文件夹
isFile() 判断是否是文件
isDirectory() 判断是否是文件夹
返回文件或目录的名字
getName()
反射
属性类 Field
成员方法类 Method
构造方法类 Constructor
概念:
反射就是把java类中的各种
成分映射成相应java类
获取类的字节码
Class类
//1.获取字节码
String s = “abc”;
Class c1 = s.getClass();
System.out.println(c1.getName());
//2
Class c2 = String.class;
System.out.println(c2.getName());
//3
Class c3 = Class.forName(“java.lang.String”);
//字节码获取类加载器加载properties配置文件
Properties
ClassLoader cl = ProperDemo.class.getClassLoader();
InputStream ins = cl.getResourceAsStream(“jdbc.properties”)
多线程
进程 包含了多个线程
线程是进程中的一个独立的控制单元
java中创建线程的两种方式:
1.继承Thread类
2.实现Runnable接口
启动线程的方法是start()
*线程的几种状态:
新生状态
可运行状态
阻塞状态
死亡状态
案例:
多线程售票
一共有50张票
四个窗口
同步代码块/方法
synchronized
线程不安全/不同步
发生了资源抢占
1、同步代码块
synchronized (mutex) {
}
mutex — 锁
2、同步方法
public synchronized void run() {
while(ticket>0){
System.out.println(Thread.currentThread().getName()+”售票”+ticket–);
}
}
多线程售票
集合框架,实用类,xml,io流
UDP和TCP
cmd查看本机IP地址
ipconfig
ifconfig(linux)
ip地址:4个8位二进制数组成 32位
本地IP地址:localhost/127.0.0.1
来源:c:/windows/System32/hosts 文件
ping www.baidu.com 测试网络是否畅通
查看端口占用:netstat -ano
通过端口找到PID
任务管理器通过PID查找对应的进程
DNS 域名解析 飞秋
java实现网络编程:
UDP (在线直播,在线看视频)
不需要建立连接,将数据及源和目的封装在数据包内
每个数据包的大小限制在64K以内
不可靠的协议
速度快
TCP (下载)
建立连接,形成数据传输通道
进行大数据量传输
可靠协议(三次握手)
效率会稍低
socket编程
发送数据
Ip地址 端口
TCP
Socket
ServerSocket
tomcat 用了java socket
UDP
发送端
接收端
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/13906.html