JAVA高级工程师课程笔记整理——(四)高级特性
2017-05-18 14:18
525 查看
(四)高级特性
集合框架
数组(长度固定)
集合存储的都是对象
集合框架的类和接口都是在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
发送端
接收端
集合框架
数组(长度固定)
集合存储的都是对象
集合框架的类和接口都是在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
发送端
接收端
相关文章推荐
- JAVA高级工程师课程笔记整理——(九)JDBC与DBUtil
- JAVA高级工程师课程笔记整理——(六)网页三剑客
- JAVA高级工程师课程笔记整理——(十一)EL表达式与JSTL
- JAVA高级工程师课程笔记整理——(十三)Linux
- JAVA高级工程师课程笔记整理——(七)Mysql
- JAVA高级工程师课程笔记整理——(十二)jquery和ajax
- JAVA高级工程师课程笔记整理——(二)JAVA基础
- JAVA高级工程师课程笔记整理——(一)初识JAVA
- JAVA高级工程师课程笔记整理——(八)tomcat与九大内置对象
- JAVA高级工程师课程笔记整理——(十)Servlet
- JAVA高级工程师课程笔记整理——(三)面向对象
- JAVA高级工程师课程笔记整理——(五)XML解析
- java高级特性学习笔记
- java高级特性学习笔记
- JAVA核心技术学习笔记(第七版,Ⅱ高级特性)
- java学习——java高级特性,线程,并发 笔记
- JAVA高级特性整理
- java编程笔记19 java高级特性
- JAVA学习笔记整理七(JDK5新特性)