JAVA基础篇JAVA优点平台无关性分布式应用多线程纯面向对象应用范围广(1)Java的桌面应用(2)JavaWeb应用(3)Java企业级应用(4)Java嵌入式应用…JAVA编译原理Java编译程序将Java源程序编译成JVM可执行代码Java字节码.JAVA源文件(.java)字节码(.class)运行jvm字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验、和代码的执行。代码的装入:类装载器classloader代码的校验:被装入的代码由字节码校验器进行检查代码执行:1)即时编译方式:解释器先将字节编译成机器码,然后再执行该机器码。2)解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节J2SE的运行环境设置安装JAVASDK(JavaSoftwareDevelopmentKit)通常,我们需要设置三个环境变量:JAVA_HOME、PATH和CLASSPATH1.JAVA_HOME:SDK的安装目录如:c:\java2.PATH:指定一个路径列表,用于搜索可执行文件的。如:d:\oracle\product\10.1.0\Db_2\bin;%JAVA_HOME%\bin3.CLASSPATH:也指定一个路径列表,是用于搜索Java编译或者运行时需要用到的类。如:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\rt.jar;JAVA基本数据类型进制二进制、八进制、十进制整型1.byte(1个字节)2.int(4个字节)Integer3.short(2个字节)Short4.long(8个字节)浮点型1.float(4个字节)2.doubleJAVA基本数据类型字符型1.char布尔型1.boolean数制:十进制:10八进制:012十六进制:0x10String函数常用函数indexOf()substring()lastIndexOf()replace()replaceAll()matches()split()toUpperCase()chardata[]={'a','b','c'};Stringstr=newString(data);System.out.println(abc);Stringcde=cde;System.out.println(abc+cde);Stringc=abc.substring(2,3);Stringd=cde.substring(1,2);DateDate类型DateFormat.format(Datedate)Datedate=newDate();//System.out.println(DateFormat.getInstance().format(date));SimpleDateFormatsdf=newSimpleDateFormat(yyyy-MM-ddHH:mm:ss);//MMHHhhSystem.out.println(sdf.format(date));Calendar类型Calendarcal=Calendar.getInstance();cal.set(Calendar.DAY_OF_MONTH,20);GregorianCalendar类型GregorianCalendargc=newGregorianCalendar();gc.setTime(date);数组一维组二维数组三维数组例子:int[]intArr=newint{1,3,4};char[]charArr=newchar{‘a’,’b’};…面向对象类(内部类)访问控制符类:public/protected/对象包重载(多态)继承依赖聚合继承接口接口声明接口实现接口多重实现接口继承抽象抽象类抽象方法集合框架映射(map)、集(set)、列表(list)、树(tree)、数组(array)、散列表(hashtable)集合基类Collection接口是一组允许重复的对象。Set接口继承Collection,但不允许重复。List接口继承Collection,允许重复,并引入位置下标。Map接口既不继承Set也不继承Collection。接口实现历史集合类SetHashSetTreeSetListArrayListVectorLinkedListStackMapHashMapHashtableTreeMapPropertiesCollection接口添加、删除元素booleanadd(Objectelement)booleanremove(Objectelement)查询操作:intsize()booleanisEmpty()booleancontains(Objectelement)Iteratoriterator()Set接口HashSetTreeSet(有序)List接口voidadd(intindex,Objectelement)booleanaddAll(intindex,Collectioncollection)Objectget(intindex)intindexOf(Objectelement)intlastIndexOf(Objectelement)Objectremove(intindex)Objectset(intindex,Objectelement)ListIteratorlistIterator()ListIteratorlistIterator(intstartIndex)ListsubList(intfromIndex,inttoIndex)ArrayList类和LinkedList类Map接口JAVAIOFile对象canRead()canWrite()delete()deleteOnExist()Exists()getAbsoluteFile()length()list()getName()getParent()getPath()listFiles()mkdir()InputStream抽象类及其子类--字节流AudioInputStreamByteArrayInputStreamFileInputStreamFilterInputStreamObjectInputStreamPipedInputStreamSequenceInputStreamStringBufferInputStreamOutputStreamByteArrayOutputStreamFileOutputStreamFilterOutputStreamObjectOutputStreamPipedOutputStream以字节为导向的streamInput和OutputInputStream1)ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用2)StringBufferInputStream:把一个String对象作为InputStream3)FileInputStream:把一个文件作为InputStream,实现对文件的读取操作4)PipedInputStream:实现了pipe的概念,主要在线程中使用5)SequenceInputStream:把多个InputStream合并为一个InputStreamOutputStream1)ByteArrayOutputStream:把信息存入内存中的一个缓冲区中2)FileOutputStream:把信息存入文件中3)PipedOutputStream:实现了pipe的概念,主要在线程中使用4)SequenceOutputStream:把多个OutStream合并为一个OutStream以Unicode字符为导向的streamInputStream1)CharArrayReader:与ByteArrayInputStream对应2)StringReader:与StringBufferInputStream对应3)FileReader:与FileInputStream对应4)PipedReader:与PipedInputStream对应OutStream1)CharArrayWriter:与ByteArrayOutputStream对应2)StringWriter:无与之对应的以字节为导向的stream3)FileWriter:与FileOutputStream对应4)PipedWriter:与PipedOutputStream对应线程进程、线程(单CPU,多CPU)单线程、多线程单线程代码1多线程代码线程用Thread类创建线程用Runnable接口创建线程start()run()join()线程合并后台线程与联合线程如果我们对某个线程对象在启动(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成后台线程。对于Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程在运行,这)个进程就会结束。Pp.join()的作用就是把pp所对于的线程合并到调用pp.join;语句的线程中。使用Runnable接口创建多线程适合多个相同程序的代码的线程去处理同一资源的情况,把虚拟的CPU(线程)同程序的代码、数据有效分离,较好体现了面向对象的设计思想可以避免由于JAVA的继承特性带来的局限。假若一个类已经继承了另一类,则我们只能使该类实现Runnable当线程被构造时,需要的代码和数据通过另一个对象作为构造参数传递时去,这个对象就是实现了Runnable接口。多线程的应用网络聊天程序发送键盘的数据,接收别人发送的数据从键盘上读取输入发送键盘的数据给对方接收对方的数据从键盘上读取输入发送键盘的数据给对方接收对方的数据多线程应用2批量数据copy的问题WEB服务器的请求及处理多线程同步例子演示代码块同步方法块同步产生者与消费者例子一个往消息队列中放入消息一个往消息队列中取出消息消息内容包括产生的ID号及内容三个生产者,三个消费者线程间的通讯wait()//如队列为空,我们可以等待,或队列已经满的时候notify()//通知由wait()而等待的线程,如我们往某个列队中放数据时,这时可以通知。notifyAll()JAVA反射AWTSwingJDBC编程应用程序JDBCMySQLDriverDb2DriverOracleDriverMySQLDb2MySQL连接数据库的步骤注册驱动(只做一次)建立连接(Conntection)创建执行SQL的语句(Statement)执行语句处理执行结果释放资源注册驱动Class.forName(“com.mysql.jdbc.Driver”);推荐这种方式,不会对具体的驱动类产生依赖。DriverManager.registerDriver(com.mysql.jdbc.Driver);会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。System.setProperty(“jdbc.drivers”,“driver1:driver2”);虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。驱动类型(四种类型)建立连接(Connection)Connectionconn=DriverManager.getConnection(url,user,password);url格式:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…User,password可以用“属性名=属性值”方式告诉数据库;其他参数如:useUnicode=true&characterEncoding=GBK。创建执行SQL的语句(Statement)StatementStatements