1.java语言的三种技术架构J2EE企业版 J2SE标准版 J2ME小型版
2.jvm java virtual machine 虚拟机依赖平台
3.java语言的环境搭建JRE java运行环境所以里面涵盖虚拟机jvm 。JDK java开发工具所以里面包含JRE 所以JDK下的开发的java 程序要JRE运行
4.配置环境path最好在前面。或者JAVA_HOME输入java目录,然后再path下面写%JAVA_HOME%/bin
5..java是源文件 .class是执行文件
6.java语言组成:关键字,标示符,注释,常量和变量,运算符,语句,函数,数组
7.常量分为整数常量,小数常量,布尔常量,字符常量,null常量
8.负数的2进制转化,就是讲整数的2进制取反0变1,1变0
9.数据类型分基本数据类型和引用数据类型
10.\b是退格
11.右移变小,左移变大
12.for和while可以进行互换,如果需要定义循环增量,用for合适
13.overload在同一个类中,允许一个以上同名函数,其参数表不一样的就可以用重载
14.栈内存数据使用完毕,会自动释放一般都是局部变量。堆内存中每一个实体都有一个地址
15.利用数组表和stringbuffer可以轻松实现字符转化
16.static是一个修饰符,用于修饰成员,(成员变量和成员函数和类)
17.主函数是一个特殊的函数。作为程序的入口,可以被jvm调用,
18.静态代码块随着类的加载而执行,只执行一次,用来给类进行初始化
19.设计模式:23种设计模式。解决某一类问题最行之有效的方法
20.单例设计模式。想要保证对象唯一,为了避免其他程序过多建立该类对象先控制禁止其他程序建立该对象,还为了让其他程序可以访问到该类对象,只好在本类中自定义对象,为了放了方便对自定义对象的访问。可以对外提供一些访问方式
代码体现:1将构造函数私有化,2在类中创建一个本类的对象,3提供一个方法可以获取该对象
21.内部类可以直接访问外部类中的成员,外部内要访问内部类先要建立对象。
22.访问格式:当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,可以直接建立内部类对象。格式:内部类变量名=外部类.内部类对象
23.当描述事物时,事物的内部还有事物,该事物用内部类来描述。
24.局部内部类不能修饰静态方法
25.定义匿名内部类的前提内部类必须继承一个或者实现接口。其格式是:new 父类或者接口,其实匿名类就是一个匿名子类对象,而且这个对象有点胖。可以理解为带内容的对象。匿名对象只能调用一次.
26.throwable是error 和exception的超类
27.对多异常的处理,申明异常时,建议申明更为具体的异常,这样处理更加具体.
28.自定义异常需求:在本程序中,对于除数是-1,也视为是错误的是无法进行运算的
那么就需要自定义异常
29.当在函数内部出现了throw 抛出异常对象,要么就必须要对应要给对应的处理动作
要么在内部try,catch处理
30Throw 和throws的区别
throw是使用在函数内的 throws在函数上使用
throw后面跟的是异常对象 throws后面跟的异常类,可以跟多个,用逗号隔开
31异常的三种合适1try{}catch(){}2try{}catch(){}finall 3try{}finally{}
32包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰
不同包中的子类还可以直接的访问父类中被protected权限修饰的成员
包与包之间可以使用的权限有两种,public protected。
Public protected default private
同一个类中 ok ok ok ok
同一个包中 ok ok ok
子类 ok ok
不同包中 ok
33.同步的前提:(1)必须要有两个或者两个以上的线程才需要同步。(2)必须是多个线程使用同一个锁。好处是:解决多线程的安全问题。缺点是消耗资源.,越安全越慢
34同步函数使用的锁是this。
35同步函数被静态修饰后,用的不在是this锁。静态进内存中没有本类对象,但是一定有该类的字节码对象。
36.Wait,notify,notifyall都使用在同步中,因为要对持有监视器的线程操作,所以要使用在同步中,因为只有同步才具有锁
为什么这些操作线程的方法要定义在object中。因为这些方法在操作同步中线程中都必须要标示他们所操作线程只有的锁。只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒也就是说等待和唤醒必须是用一个锁。而锁可以是任意对象,所以可以被任意对象调用的方法定义object类中。
37.java升级无外乎3个方面。1提高效率 2简化书写3提高安全性。开发建议使用stringBuilder
38collection包括list和set 。list有arraylist ,linkedlist,vector。Set有hashset和treeset
39. 集合中存储都是对象的地址(引用)
40.list和set的区别
List是有序的,元素可以重复 set是无序的,元素不可以重复
41.list特有的迭代器
如果想要其他的操作,如添加,修改,就需要其子接口,就必须通过list 的ListIterator获取。
42. arraylist 低层是数组结构这个查找快说,linklist低层是链表。增删很快, vector 低层是数组数据结构
*arraylist比vector节省空间
Voctor中的枚举和迭代器是一样。枚举的名称以及方法的名称都过长。所以被迭代器取代了。所以枚举后就没人使用了。
43.linklist的特有方法getfirst(),getlast(),removefrist(),removelast
44.hashset数据结构是哈希表,线程是非同步的。保证唯一性的原理,判断元素的hashcode值是否相同,还会继续判断元素的equals方法。
45.tree可以对set集合中的元素进行排序.在自定义方法的时候可以用这个设计自己的排序规则.低层是二叉树.
46.jdk1.5版本以后出现新特性,用于解决安全问题,是一个安全机制。
好处是:1将运行时期出现的问题,转移到编译时期方便于程序员解决问题,让运行事情问题减少,安全。 2便面了转换的麻烦
47hashtable 低层是哈希表,不可以存入NULL键null值,该集合是和线程同步的,jdk1.0效率低
Hashmap低层是哈希表,允许使用null值和null键,该集合是不同步,jdk1.2的效率高
Treemap:低层是二叉树结构。线程不同步,可以用于给map集合中的键进行排序
48.当数据之间存在映射关系的时候就采用map集合
49.arrays用于操作数组的工具类,里面都是静态方法。
50.为什么要将集合变数组。为了限定对元素的操作。
51.for循环的增强,静态导入,可变参数
52.system的属性和方法都是静态的
Out是标准输出默认是控制台,in是标准输入,默认的是键盘
53.runtime该类中并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的发现该类中会有非静态方法。说明该类肯定有提供方法获取本类的对象,而且方法是静态的。
54.ceil方法的特点返回大于指定数据的最小整数
Floor返回小于指定数据的最大整数
Round四舍五入
55.找到一个专门用于操作文件的FileWriter。后缀名时类型,前缀名是功能。如果该目录下没有则创建。如果有则覆盖。当write写入后没有写人,只是写到流内存中也可以说流中。所以要记得flush,close。这样就可以写入文件中。Close关闭流资源。但是关闭的时候会关闭缓冲的数据,将数据刷到目的地中和flush的区别在flush刷新后流可以继续使用。在外面创建变量在里面try创建对象。
FileWriter和filereader是字符流的。
56缓冲区的出现是为了提高流的操作效率而出现的。所以在创建缓冲区,必须要先有流对象。该缓冲区提供了一个跨平台的newline方法。
Readline方法的原理无论是读一行还是读取多个字符。所以最终使用的read方法还是一次读一个方法。
57装饰设计模式
当想对自己的对象进行功能增强时,可以定义类将已有的对象传入,基于已有的功能,并且提供增强功能。那么自定义的该类称为装饰类。
58.装饰模式和继承
装饰模式比继承要灵活,避免了体系臃肿。而且降低了类与类之间的关系、
装饰模式因为增强已有的对象,具备了功能和已有的是相同的只不过是增强了功能。所以修饰类和被装饰类通常都是属于一个体系中的
59.流式布局默认是中间flowlayout 。borderLayout边界式布局。GridLayout表格式布局。
Cardlayout卡片布局。Gridbaglayout网格布局非规则的。
60.演示UDP传输
首先用Datagramsocket建立服务,然后建立一个datagrampacket建立数据包用来接收和发送就可以了。最后关闭服务。
61.演示TCP传输
Tcp分客户端和服务端
客户端对应socket 服务器端对应serverSocket
客户端通过查阅socket对象,发现在该对象监理师,就可以去连接指定主机、
因为tcp是面向连接,所以在建立socket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据传输。
服务端
定义端点的接受数据并打印在控制台上
1建立服务端的seversocket();
并监听一个端口。
通过serversocket的accept方法,所以这个方法是阻塞式的没有连接就会等
3客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取该客户端对象的读取流来读取发过来的数据。
4关闭服务端
62.客户端和服务器的双向交流
客户端
1.建立socket服务,指定要连接主机的端口
2.获取socket流中的输出流。将数据写到该流中,通过网络发送给服务器
3.获取socket流中的输入流。将服务器反馈的数据获取到,并打印、
4.关闭客户端资源
服务器端
63.想要将主机名翻译成为Ip地址,需要解析域名。DNS
64.正则表达式:符合一定规则的表达式
作用:用于专门操作字符串
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。
65.按照叠词完成切割了可以让规则的结果被重用可以将过则封装成一个组。用()完成。组的出现都有编号。从1开始。要想使用已有的组可以通过\n的形式来获取。
66正则表达式符号越多阅读性越差。
将正则表达式分装成对象
让正则对象和要操作的字符串想关联。
关联后,获取正则匹配引擎