加载《C203_Java核心编程_学习笔记》成功,点击此处阅读
首页 →文档下载

C203_Java核心编程_学习笔记

以下为《C203_Java核心编程_学习笔记》的无排版文字预览,完整内容请下载

***《Java核心编程》学习笔记态度?方法?知识

dell

2017/11/26

目 录

课程基本信息 1

1 常用类 2

1.1 String和StringBuffer 2

1.2 Arrays 2

1.3 Math 3

1.4 日期类 3

1.5 包装类 4

2 集合框架 5

2.1 集合框架概述 5

2.2 List 5

2.3 Set 6

2.4 Map 7

2.5 集合框架补充 7

3 IO操作 9

3.1 基本概念 9

3.2 字节流 11

3.3 字符流 13

3.4 File类 14

3.5 补充拓展 15

4 网络编程 17

4.1 网络通信基础 17

4.2 UDP通信 17

4.3 TCP通信 18

5多线程 20

5.1 线程基本概念 20

5.2 线程创建 20

5.3 线程调度 21

5.4线程同步 22

5.5 线程协作 22

6 异常与测试 24

6.1 异常概念及处理 24

6.2 自定义异常 24

6.3 单元测试 25

课程基本信息

课程代码:C203

课程名称:Java核心编程

学习时长:5天

教学目标:

熟练掌握常用类和集合框架的使用;

熟练掌握多线程编程;

掌握Java IO、网络编程、异常处理和单元测试

教学内容:

内容

知识点

课时



常用类

String、StringBuffer、Array、Math、日期类、包装类

3



集合框架

Vector、Stack、Collection、List、Set、Map;

7



IO系统

字节流、字符流、File类、RandomAccessFile类

5



网络编程

网络基础知识、UDP通信、TCP通信

5



多线程

线程基本概念、线程创建、线程生命周期、线程调度、线程同步

6



异常处理

异常概念、try…catch、throws

2



单元测试



2





1 常用类

1.1 String和StringBuffer

String类常用方法

Length 求长度

indexOf 索引查找

charAt(获取某个位置的字符)、equals(比较是否相等)、replace(替换,形成新的字符串)、split(分解)、substring(取段)、trim(去掉两边的空格)、format。

Sunsequence()

subSequence() 方法返回一个新的字符序列,它是此序列的一个子序列。

语法

public CharSequence subSequence(int beginIndex, int endIndex)

参数

beginIndex?-- 起始索引(包括)。

endIndex?-- 结束索引(不包括)。

返回值

返回一个新的字符序列,它是此序列的一个子序列。

StringBuffer类常用方法:append、insert、deleteCharAt、delete、replace、setCharAt、reverse。

Replace()

replace() 方法通过用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。

语法

public String replace(char searchChar, char newChar)

参数

searchChar?-- 原字符。

newChar?-- 新字符。

返回值

替换后生成的新字符串。

使用StingBuffer类

public?StringBuffer?replace(int?start,int?end,String?str)

区间为[start,end),左闭右开

StringBuffer s7 = new StringBuffer("**_*XX区"); s7.replace(3,6,"XX市"); System.out.println(s7);

使用StringBuffer可以直接将原字符串替换。

String是不可更改,如需更改字符串内容用StringBuffer。

String s1 = "abc";

s1 = "123"

1.2 Arrays

Arrays所有的方法都是静态的,通过类名调用,比如Array.sort(),提供数组的排序、查找、填充、获取子数组。

sort、binarySearch、fill、copyOf、copyOfRange

对自己自定义的类型使用Array.sort()会报错,因为系统不知道如何判断大小。

解决方案:

(1)实现Compartable接口,重写compareTo方法

public class Complex1 implements Comparable{ private int real; private int virtual; public Complex1(int real, int virtual) { this.real = real; this.virtual = virtual; } @Override public int compareTo(Object o) { Complex1 c = (Complex1)o; int n = this.real*this.real+this.virtual*this.virtual; int m = c.real*c.real+c.virtual*c.virtual; return (int)(Math.sqrt(n)-Math.sqrt(m)); } @Override public String toString() { return String.format("%d+%di",real,virtual); } }

(2)使用匿名内部类重写Comparator接口的compare方法

import java.util.Arrays; import java.util.Comparator; public class 测试 { public static void main(String[] args) { Complex2[] s = {new Complex2(1, 2), new Complex2(0, 0)}; Arrays.sort(s, new Comparator() { @Override public int compare(Complex2 o1, Complex2 o2) { int n1 = o1.getReal() * o1.getReal() + o1.getVirtual() + o1.getVirtual(); int n2 = o2.getReal() * o2.getReal() + o2.getVirtual() * o2.getVirtual(); return n1 - n2; } }); for(Complex2 i :s){ System.out.println(i); } } }

1.3 Math

Math类方法:abs、ceil、floor、round、max、min、exp、log、pow、sqrt、random、三角函数

Math类的方法都是静态方法,所以直接通过类名调用,比如Math.abs

1.4 日期类

授课内容:

Date类两种构造函数、getTime方法

时间戳timestamp

Date date1 = new Date(); Date date2 = new Date(***);

日期格式化SimpleDateFormat

import java.text.SimpleDateFormat; import java.util.Date; public class 测试 { public static void main(String[] args) { Date date1 = new Date(); Date date2 = new Date(***); SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(s.format(date1)); } }

/

Calendar类是一个抽象类,无法直接实例化,只能通过getInstance方法获得当前时间的实例。

Calendar c = Calendar.getInstance();

单例模式Singleton

Calendar类的方法:get、set、add

Calendar类的模式:lenient和non-lenient,lenient模式会自动进位,在某些情况下非常好用,比如计算某个日期后10天的日期,不用考虑日超过范围的问题。

1.5 包装类

Integer Float Double

float Float

float

int x=3和Integer y=3是有本质区别的

装箱:Integer y = 3;

拆箱:int x=y;

Integer y = 3; //等价于 Integer y = new Integer(3) int x = y; //等价于int x = y.intValue()

2 集合框架

2.1 集合框架概述

/

集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解某某。

集合框架的操作主要就是“增删查”。

Collection接口提供的方法:

增:add、addAll、

删:remove、removeAll、clear

查:contains、containsAll

转换为数组:toArray

Collcetion,List,Set,Map都是接口

ArrayList,LinkedList,Vector,Stack,HashSet,HashMap都是类

2.2 List

List是Collection的子接口,在它的基础上增加了“序”的概念,所以增删查等又添加一个一些和序有关的方法

add(int index, E element)

get(int index)

indexOf(Object o)

remove(int index)

set(int index, E element)

ArrayList是动态(Resizable-array)数组,在实现List接口方法的基础上增加了与“动态”相关的方法

ensureCapacity(int?minCapacity)

trimToSize()

Vector是“向量”的含义,也是动态数组,与ArrayList不同的是它通过增加capacityIncrement数量来提高存储管理效率,即可以指定增量,实现一个扩容多个。;

Stack继承自Vector,额外增加push、pop、peek等方法;

LinkedList是一个双链表,实现了List,还额外增加了addFirst、addLast、getFirst、removeFirst、removeLast

List list1 = new ArrayList(); //不能使用基本类型,如下是错误的 //List list1 = new ArrayList(); list1.add(1); list1.add(2); list1.add(1,99); //常用输出 for(Integer i:list1){ System.out.printf("%3d",i); } System.out.println(); //借助工具类Array的toString方法 System.out.println(Arrays.toString(list1.toArray()));

2.3 Set

List有序可重复

Set无序不重复。

HashSet是Set的实现类

通过实验得到以下结论:

(1)set中是不能有“重复”的元素

(2)系统判断元素是否重复的步骤

1.先判断哈希码,如果哈希码不同则认为是不同的元素

2.如果哈希码相同再去调用equals方法判断是否相同

(3)所以要保证set中不存在重复的自定义类型元素需要重写equal方法和hashCode方法。

2.4 Map

Map是以键值对形式存储数据

Name:张三

Sex:男

HashMap是Map接口的实现类

存:put(K key, V value)

取:get(K key)

2.5 集合框架补充

foreach语法:for(T e : list)

迭代器Iterator使用一般模式:

Iterator iterator = list.iterator(); while (iterator.hasNext()){ Double d = iterator.next(); System.out.println(d); }

Collections工具类常用方法:

最大值:max(Collection c)、max(Collection c, Comparator com)

最小值:min(Collection c)、min(Collection c, Comparator com)

查找:binarySearch(List list,T key)、binarySearch(List list,T key, Comparator com)

排序:sort(List list)、sort(List list, Comparator com)

逆序:reverse(List list)

乱序:shuffle (List list)

3 IO操作

应用程序和设备(比如屏幕、键盘、文件等)间经常需要传输数据,Java为了简化开发流程,将这种传输封装成流的概念,屏蔽硬件细节。

流有两种:字节流和字符流

字节流:就是把传输的数据看成是没有特定含义的二进制数据;

字符流:把数据看成是字符。

/

常用字节流相关类

/

常用字符流

/

3.2 字节流

/

字节流2个顶级父类InputStream、OutputStream,它们都是抽象类

InputStream提供的方法主要有:

序号

方法

功能说明



1

read( )

读取一个字节



2

read(byte[] b)

读取多个字节至数组b中



3

read(byte[] b, int off, int len)

读取多个字节至数组从off开始的len个字节中



4

skip(long n)

跳过n个字节



5

close

关闭输入流





OutputStream提供的方法主要有:

序号

方法

功能说明



1

write(int n )

写入一个字节(注意只写入低8位)



2

write (byte[] b)

写入数组b中的全部字节



3

write (byte[] b, int off, int len)

写入数组b中从off开始len个字节



4

flush( )

刷新输出流,即强制输出(因有缓冲机制)



5

close

关闭输入流





FileInputStream继承自InputStream,封装了对文件的读取操作,通过文件路径或者文件对象构造一个FileInputStream对象。

FileOutPutStream继承自OutputStream,封装了对文件的写入操作,通过文件路径或者文件对象构造一个FileInputStream对象。

ObjectInputStream和ObjectOutPutStream分别封装了其它类型数据的读、写操作,ObjectInputStream构造函数传递需要InputStream子类的对象,ObjectOutPutStream构造函数传递需要OutPutStrea子类的对象。

ObjectInputStream提供的方法主要有:

序号

方法

功能说明



1

readInt、readFloat、readLong…

读取基本类型数据



2

readObject

读取引用类型数据(需反序列化)





ObjectOutPutStream提供的方法主要有:

序号

方法

功能说明



1

writeInt、writeFloat、writeLong…

写入基本类型数据



2

writeObject

写入引用类型数据(需序列化)



ObjectOutPutStream向文件中输出123和“abc”,结果如下:

/

所谓序列化就是将内存中的对象存储到外存上去。反序列化则反之,即将外存中的数据读入到内存中的对象中。

内存中的数据在关机后就不存在了,而外存的数据是可以永久保存的。比如游戏过程中的保存游戏,就是将某个时刻的游戏状态(比如生命值、金钱、等级等)数据保存到硬盘上;而读取游戏就是根据从文件中恢复游戏的状态。

这些数据可能是一个对象,也可能是多个对象组成的复杂数据,如果逐个将原子数据写入到文件中去,不仅复杂,而且在写入和保存的步骤和数据应该严格一致,否则数据就会错位。

序列化是将对象(不管多么复杂)整体写入文件中,将来也是整体读取,简化了读写操作。

课堂案例:

C203_03_01_FileOutStream

C203_03_02_FileInputStream

C203_03_03_ObjectOutputStream

C203_03_04_ObjectInputStream

C203_03_05_序列化

课后作业:

E203_03_01_文件复制

E203_03_02_数组序列化

3.3 字符流

/

Reader提供的方法主要有:

序号

方法

功能说明



1

read( )

读取一个字符



2

read(char []b)

读取多个字节至数组b中



3

read(char []b, int off, int len)

读取多个字节至数组从off开始的len个字节中



4

skip(long n)

跳过n个字符



5

close

关闭输入流





Writer提供的方法主要有:

序号

方法

功能说明



1

write(int n )

写入一个字符(注意只 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 需要改变的方向,无返回值

boolean eatSelf() 无参数,返回boolaan类型

boolean eatFood() 是否吃到食物

boolean meetGrid() 是否撞到墙

(2)食物

属性:坐标节点node

方法:随机生成 构造函数Food() Node getNode()

(3)网格

属性:rows行数,cols列数 size 格子大小,margin边距

方法:int getRows() 获取行数

int getCols() 获取列数

boolean outofBound(Node p) 蛇头是否越界

(4)节点

属性:行号row,列号col,颜色color

方法:boolean isSame(Node p) 判断是否相等

(5)游戏Game

属性:

private Snake snake; //蛇 private Food food; //食物 private Grid grid; //网格

方法:start() drawFood() drawGrid() drawSnake()

[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。

  1. 《计算机专业英语》期末考试试卷
  2. 新编英语语法教程第五版--答案
  3. 企业详情简介
  4. 五年级下册作文总结英文
  5. Value at risk 风险价值(置信区间的概念)
  6. 大学生英语短剧剧本(4人)
  7. 01 高考核心语法知识点精练1(名词)-届高考英语一轮复习核心语法知识精讲精练(通用版)
  8. 四六级翻译和作文
  9. 八十个作文表达句式(1)
  10. 查理和巧克力工厂阅读测试
  11. 新人教版必修二 Unit 1 Cultural relics-Warming up and Read
  12. spy band six
  13. Do What Makes You Great
  14. Ciattoni2003_JOSAA20_163
  15. 1-s2.0-S***00066-main (2)
  16. 1-s2.0-S***01014-main
  17. 基础面试题
  18. friend教案
  19. Unit6I’mgoingtostudy
  20. 技能大赛作文模板1

以上为《C203_Java核心编程_学习笔记》的无排版文字预览,完整内容请下载

C203_Java核心编程_学习笔记由用户“wgy19852003”分享发布,转载请注明出处
XXXXX猜你喜欢
回顶部 | 首页 | 电脑版 | 举报反馈 更新时间2021-04-07 18:28:08
if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/37/8e/48705.html'}ipt>if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/37/8e/48705.html'}ipt>