一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaemon(true)可以把一个用户线程变成一个守护线程. java垃圾回收就是一个典型的守护线程:若JVM中都是守护线程,当前JVM将退出. 2.线程的生命周期 3.线程的同步机制 (1)线程的安全问题 在上一篇随笔中,多窗口售票的程序代码存在线程的安全问题,打印车票会出现重票.错票. 安全问题存在的原…
一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. 2.实现 Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread来实现. Thread类的特性: 每个线程都是通过某个特定Thread对象的run()方法来完成操作的.经常把run()方法的主体称为线程体. 通过Thread对象的start()方法来启动这个线程. 3.创…
一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2.静态代理 特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展.同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理. 3.动态代理 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象. 4.代码示例 静态代理代码:…
一.缓冲流(处理流的一种) 1.作用:可以提高文件操作的效率 2.使用BufferedInputStream和BufferedOutputStream实现非文本文件的复制 特点:flush()方法 代码示例: BufferedOutputStream bos = null; BufferedInputStream bis = null; try{ //1.提供读入.写入的文件 File file1 = new File("awsl.jpg"); File file2 = new Fil…
一.集合 1.Set:存储的元素是无序的.不可重复的 (1)无序性:无序性不等于随机性,无序指的是元素在底层存储的位置是无序的. (2)不可重复性:当向Set中添加相同的元素时,后添加的元素不能添加进去:要求添加进Set的元素所在的类,一定要重写equals()方法和hashCode()方法,从而保证Set中元素的不可重复. (3)Set中的元素如何存储——哈希算法 当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,计算该对象的哈希值,此哈希值决定了对象在Set中的存储位置…
一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(int index):返回指定位置的字符 boolean equals(Object obj):比较字符串的内容是否相等 int compareTo(String anotherString):对字符串内容按字典顺序进行大小比较,当前对象比参数大返回正整数,反之返回负整数,相等返回0. int ind…
---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte short——Short                   int——Integer long——Long                    char——Character float——Float                     double——Double 2.作用:有了类的特点,…
一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以使用JavaBean将功能.处理.值.数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面.Servlet.其他JavaBean.applet程序或者应用来使用这些对象.用户可以认为JavaBean提供了一个随时随地的复制和黏贴的功能,而不能关心任何改变…
一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 注意事项: 表达式:这个地方的取值是有限定的 byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 面试题: switch语句的表达式可以是byte吗?可以是long吗?可以是String吗? 可以是byte,long不行,jdk7以后…
一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义的服务通信占用. 端口号和IP地址的组合得出一个网络套接字(socket). 2.InetAddress类 位于java.net包下,用来代表IP地址,一个InetAddress的对象就代表着一个IP地址. import java.net.InetAddress; import java.net.U…