Java基础总结`.docx_第1页
Java基础总结`.docx_第2页
Java基础总结`.docx_第3页
Java基础总结`.docx_第4页
Java基础总结`.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kalision All Rights Resived环境变量:Path,classpath ,java_homeJava文件 后缀就.java这是源代码,编译成.class这是字节码编译命令是javac hello.java回车执行命令java hello 回车基本数据类型在内存中是放在栈里面的8个:数值型、浮点型、字符型、布尔型数值:byte(1字节,-128-127) short(2字节 -32768-32767) int(4字节,长度范围为10, -2147483648-2147483647) long(8字节(长度为19位)long l=122L;如果long变量中存储的数据大于int的范围,则必须加L浮点:float(4字节)float f=34.5F;F是必须加的 double(8字节)科学计数法:3148657等于3.148657E6 0.0000369等于0.369E-7字符:char(2字节)可以 放中文,转义字符:char c=r; c=n; c=; c=”; c=; 布尔:boolean 1位bit 只能放true或false.基本数据类型隐式转换:byte-short-int-long-float-doubleChar-int强制类型转换:int i=3; byte b=(int)i;强制类型转换容易发生数据丢失数值型默认值为0浮点型为0.0字符型默认值为空字符引用类型默认值为null标识符以美元符号、下划线、字母为开头,美元符号、下划线、字母、数字组成,也可以使用中文来命名,但不推荐表达式:以运算符、常数、变量的任意组合控制语句If()小括号中必须为boolean型的表达式If()elseIf()else if() else这种if else if语句,如果前面的if满足条件,则剩下的if就不再判断循环语句ForFor(表达式一;表达式二;表达式三)表一二三都可以省略如果表二省略则为死循环表一一般为定义变量,或初始化表二则为判断,返回的是布尔型,为true则进行循环体,否则不循环表三一般为修改变量值,如下例For(int i=0;i10;i+)WhileWhile(布尔型)Do whileDowhile(布尔型);While和do while的区别是,while中先判断后循环,dowhile先循环后判断Break;跳出当前循环Cointinue;结束本次循环,后面的代码不执行,继续进入下次循环Return ;可以跳多重循环,或在方法中用来返回值开关语句Swith(数值型)Case 1:语句一;break;Case 1:语句二;break;Case 1:语句三;break;Default:语句四Swith小括号中要求传int型,传可以自动转成int型的也可以执行时,根据小括号中的常量值从上到下查找case中相等的值,找到则执行后面的语句,如果没有break则继续执行其它case后的命令,直到遇到break;Defalt当任何一个 case都不满足时,则执行default后的语句数组(属于引用数据类型,放在堆里面的)一维数组:声明:int arr;/这时并不占内存,创建数组 arr=new int10;赋值:arr0=23; arr1=34;数组的开始下标为0,最大下标为长度减一创建时赋值:int arr=new int32,14,87,95;Int arr=45,58,69;取数组长度为arr.length,这是一个属性,不是方法利用一维数组实现求最大值,最小值,和,平均值,冒泡排序冒泡排序int arr=23,54,17,98,62,45,75,12,63,37; /定义变量,用来存放临时的数 int temp=0; /基本思路 for(int k=0;karr.length;k+) /首先将数组中最小的一个数排到最后,这个循环的结果是,只将最小的放到最后面了 for(int i=0;iarr.length-k;i+) if(arriarri+1) /则交换 temp=arri; arri=arri+1; arri+1=temp; 二维数组声明:int arr;创建:arr=new int1010;赋值:arr02=12;创建时赋值 : int a=34,37,22,78,12,24,15,10,43,25,9,9,22,33,5,78;Int arr;Arr0=new int6;Arr1=new int5;二维数组实际上就是每一行都是一个一维数组利用二维数组找到鞍点(鞍点就是在本行中最小,但在本列中最大)int a=34,37,22,78,12,24,15,10,343,25,9,9,22,33,5,78;22就是鞍点异常处理Trycatch(Exception e)在try中放可能发生异常的语句,但是不要放太多,影响性能(因为执行到try里面的语句时,会将每一指令放入栈中先进后出,后进先出的栈)Trycatch(异常子类e)catch(异常子类 e) finallyTry后面可以跟多个catch,而多个catch中的异常处理类有先后顺序,父类在后.不管发不发生异常都会执行finally中的语句访问修饰符默认包内访问Private 只能自己访问Protected包内访问,其它包中子类可以继承Public 任何类都可以访问面向对象面向对象的三个基本特征:封装,继承,多态封装:就是将数据、功能封装在一起,外界无需知道内部详细细节。类似于黑盒子的功能继承:子继父业,子类继承父类中的属性和方法多态:一种外在表现,多种内在实现,或实现多种功能实现多态的方式:上转型、接口回调、重载上转型:将子类的对象赋给父类的引用接口回调:类A实现了接口B,将类A的对象赋给接口B的引用重载:在一个类中,有多个同名的方法,但是参数不同(比如,参数个数不同,类型不同,顺序不同)声明类:class Person创建对象:Person p=new Person();这是引用类型,p中存着对象person的地址属性和方法在类中方法外,声明的变量为全局变量,即此类的属性类中方法外,只能声明,不能写任何指令。在类中声明方法,即类的行为,方法可以访问属性,方法声明语法访问修改符 返回值类型 方法名称(参数1,参数二.)方法体;在方法中声明的变量为局部变量,局部变量在此方法中将全局变量覆盖,如果想在此方法中使用全局变量,可以使用this.变量名调用构造方法在类中与类同名的方法,而且没有返回值类型的方法构造方法也可以重载一个类如果没有声明任何构造方法,则系统会提供一个默认的无参的没有任何功能的构造方法。如果显式的声明了构造方法,则系统提供的默认的就不存在。构造方法中可以通过super();调用父类中的构造方法,而且这句话是系统默认提供的,而且必须是构造方法中第一条指令。如果你显式声明了构造方法,则最好也创建一个无参数的构造方法。类为其子类中的构造方法会自动的调用父类中的无参构造方法.如果父类中不存在无参的,则子类报错。语句块语句块就是指令;语句块可以放在类中方法外,也可以放在方法内放在类中方法外的语句块,是在构造方法执行前调用的.块可以方法成员变量,跟方法编制差不多Static静态语句块是在此类加载到内存中时调用.继承继承是通过extends关键字实现,子类extends父类不能多继承,即一个子类只能有一个父类一个父类可以有多个子类父类中的private修饰的属性和方法是不能被继承的父类中的构造方法是不能被继承的子类继承你类中的方法和属性,可以当做自己的来使用,也可以在子类中定义与父类中同名的属性和方法,可以通过this和super来区别调用This是调用自己的Super是调用父类的继承可以实现多态:即使用上转型Father f=new Father(2);Test t=new Test();t.test(new Son();抽象类定义类时,使用abstract声明的类为抽象类如:public abstract class Person抽象类中的方法可以为抽象方法,也可以为非抽象方法抽象方法以abstract修饰的方法为抽象方法,如Public abstract void say();抽象方法是没有花括号的,即没有方法体.抽象类是不能被实例化的,即不能new只能通过子类继承他,然后实例化子类对象来使用.接口概念:接口可以理解为标准,两个类之间或两个模块之间进行沟通的标准,约束.用interface声明,即为接口,如Public interface InterfaceDemo 接口中的属性都默认修饰为Public static final接口中的方法都默认修饰为public abstract接口是不能被实例化的,不能被new接口可以实现多继承,即接口可以继承其它接口,如下Public interface Interface1 extends Interface2,Interface3,接口需要某个类实现此接口,如下Public class Person implements Interface1这里需要使用implements关键字实现接口,同时类中必须要实现接口中声明的抽象方法接口可以通过接口回调实现多态即将某个实现类的对象赋给接口的引用This 和superThis,表示当前类的当前对象This.属性名This.方法名This()调用本类中的构造方法Super用来调用父类中的方法和属性Super.属性名,调用父类中的属性Super.方法名Super();在子类的构造方法中调用父类的构造方法FinalFinal声明变量,则为常量,修饰类,则此类不能被继承,修饰方法,则此方法不能被覆盖或重写 Finally是异常处理中的关键字在抽象类中,final不能修饰方法Private不能和abstract同时修改方法堆栈Java中使用两种方式存储数据栈:用来存放基本数据类型和String中以String s=” bac”;直接赋值 的字符串为什么引用类型都需要new来创建,而string为什么可以直接赋值的原因堆:引用类型,因为变量中存的是某个对象的地址,所以称为引用类型方法参数传递基本数据类型属性值传递,即向方法中传递的基本数据类型,在方法中修改,而方法外是不受影响的引用数据类型参数传递为址传递,在方法中对值进行修改,则方法外的值跟着改变文件操作IO输入流:即将其它设备中的数据读取到内存中InputStreamFileInputStreamObjectInputStream输出流:将内存中的数据输出到其它设备OutputStreamFileOutputStreamObjectOutputStreamFile对象可以用来对文件进行操作,如创建,删除,修改属性,创建目录,删除目录,列出目录中的所有目录和文件用它可以实现遍历某个目录中所有文件进行删除或修改多线程多线程 :即在一个进程可以分配多个线程 ,每个线程完成不同的任务。进程包含线程 进程之间不共享内存和数据线程之间共享同一个进程的内存和数据,所以线程之间数据沟通速度比较快创建多线程的方式一:继承Thread类如public class ThreadDemo1 extends ThreadPublic void run()启动线程 ThreadDemo1 t1=new ThreadDemo1();T1.start();Start方法是系统提供的,调用start方法就会自动的调用你的类中声明的run方法,你可以在run方法中写此线程要执行的代码 方式二:实现Runnable接口如public class ThreadDemo2 implments RunnablePublic void run()启动线程:ThreadDemo2 t2=new ThreadDemo2();Thread t=new Thread(t2);t.start();多线程的生命周期创建-等待_(获得cpu)_启动 -执行_sleep(毫秒)_睡眠_notify()或睡睡眠时间到_回到执行执行_wait或其它设备等待_-阻塞-执行_run执行完成或( )_死亡线程安全多个线程同时访问一个资源,有可能导致死循环、脏数据情况可以通过synchronized实现变量、方法、代码的线程安全,即某时刻只能允许一个线程方法Servlet是线程非安全的ArrayList是线程非安全的Vector是线程安全的集合Map是以键值对存储,没有排序 List有先后顺序,适合于随机存取,Set是以自身排序方式存储,不能有重复值泛型定义一种数据容器,可以放任何数据类型List list=new ArrayList(); for(Father f:list) 序列化通过实现Serializable接口,可以将对象进行存储或网络传输代码如下import java.util.*;import java.io.*;public class Test public void save()try FileOutputStream fos=new FileOutputStream(c:fahter.ser);ObjectOutputStream oos=new ObjectOutputStream(fos);Father f=new Father();f.age=38;f.date=new Date().toString();/将此对象保存到文件father.ser中oos.writeObject(f);oos.flush();oos.close(); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void read()try FileInputStream fis=new FileInputStream(c:fahter.ser);ObjectInputStream ois=new ObjectInputStream(fis);Father f=(Father)ois.readObject();System.out.println(f.age+ +f.date); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); public static void main(String args)throws Exception Test t=new Test();/t.save();t.read(); Swing开发,Java应用程序开发,即利用java开发CS模式, 或单机应用软件 创建一个类,继承JframeAwt包中的组件使用的是系统的,所以不同系统下界面不一样和swing包使用的是自己的组件Oracle数据库关系型数据库:基于关系型数据模型的数据库关系型数据模型:以二维表格的方式进行数据表示甲骨文公司DB2 SqlServer MySql sysbase access数据类型:number varchar2 nvarchar2 date clob(存放大容量数据)创建表格:create table 表名(列一 类型(长度),列二 类型(长度).);删除表格:drop table 表名修改表格:alter table视图:就是将一个或多个表格中的某些列放在一个视图中,方便数据操纵或为了安全考虑创建视图:create view as select id ,title from news;视图可以进行编辑,但是有条件,多个表联合查询出来的视图,是不能进行数据添加的序列:用以生成一系列数值,语法:create sequence system.news_sequence Start with 1 -从一开始Increment by 1 -每次加一Nomaxvalue -没有最大值Cache 20 -使用缓存,可以提高性能,缓存容易导致数据不连续性,故要求生成连续数据的时候不能使用缓存触发器:是在对某个表中的某些记录进行编辑之前或之后自动调用的一些操作,用它可以用来生成自动增长列、数据检查约束、日志记录、检查数据完整性自动增长列:create or replace trigger system.news_triggerBefore insert -这里也可以使用afterupdatedelete ,如 after delete就是在删除以后执行On system.newsFor each row -针对每一天进行操作时When(new.id is null) -要满足的条件BeginSelect system.news_sequence.nexval into:new.id from dual;End;SQL查询语句:select * from system.student;Select id ,username,password from system.student;Select id as 主键,username as 用户名,password as 密码 from system.student;查询前几条Select top 10 * from system.student;不成功Select * from system.表名 where rownum10;对某列进行条件查询时,在where后面进行筛选,对聚合函数进行筛选时使用having查询每个部门男性人数多于10人:select dep,count(*) from system.users where sex=男 group by dep having count(*)10;JDBCJava data base connectvity1. 加载驱动:Class.forName(“驱动类”);2. 获得连接:Connection con=DrvierManager.getConnection(“URL地址”,”用户名”,”密码”);3. 获得Statement对象:Statement sta=con.createStatement();4. 或者是获得PreparedStatement :PreparedStatement psta=con.preparedStatement();5. 向数据库发送sql指令:sta.executeUpdate()或executeQuery();PreparedStatement 与Statement的区别:Statement执行的sql为”select * from system.users where id =1”PreparedStatement执行的sql为”select * from system.users where id =?”然后通过psta.setInt(1,1);为第一个参数赋值.Statement在发送指令时,条件内容发生改变,数据库服务器认为不是相同的指令,每次都要对sql进行语法解析、编译、生成方案,PreparedStatement 利用了?来设置条件,则条件改变时,数据库服务器认为这个指令与以前的是一样,故不需要重新编译及生成方案,节约了时间。事务:具有原子性,是不可分割的一系列操作,我们在数据库操作时,尤其是多个表或数据的更新,要求多个操作都执行成功,或都不执行,不能出现执行完一部分操作而发生错误的情况,这样会导致数据的不完整,即产生脏数据。为了达到这个目的,我们可以为这些操作添加事务,放在一个事务中。JSPJava server pageJSP运行原理:当第一次访问JSp页面时,容器会根据你访问的页面名称,查找对象的文件,翻译成Java代码,再编译成字节码,然后执行字节码,在字节码中将服务器的响应信息通过response对象返回给客户浏览器(第一次访问总是速度比较慢)。第二次访问时会检查是否修改过,如果没有修改,则直接执行class字节码文件.文件导入:是将第二个页面的源代码导入,一起编译执行两个文件分别编译,导入第二个页面的生成的效果跳转:请求转发和重定向请求转发:request.getRequestDispather(“second.jsp”).forward(request,response);是将用户的这一次请求的对象转到其它页面,这是将request对象传过去重定向:response.sendRedirect(“second.jsp”);相当于重新又发送了一个请求,两次请求对象不同,不能实现数据共享内置对象Page/pageContext代表当前页对象Request;代表一次请求可以获得用户提交的表单,用户的请求内容Response/代表服务器的响应可以向用户返回数据Out用来和客户端发送数据Session用于用户会话管理,它的生命周期一般为30分钟,多个用户是不能通过它共享数据,多个浏览器也不能共享数据,关闭浏览器后就无法再访问其中的数据Application用来存储应用程序级别的数据,它的生命周期为整个应用的生命周期(即web容器重启则其数据就会丢失)编码:GBK gb2312 gb18030 utf-8 utf-16 iso8859-1编码转换:String username=”中国”;Username=new String(username.getBytes(“iso8859-1”),”GBK”);解决中文乱码,还可以使用过滤器过滤器:就是在用户向服务器发送请求时,在半路进行拦截,可以对request对象中的数据进行处理,然后再交给下一级执行.ServletServlet是继承自HttpServlet的子类生命周期:装载-实例化-init方法-Service方法-destroy方法在Init中进行初始化Service方法通过用户表单提交的方式不同,来调用doGet或doPost方法Destroy一般用来释放资源 在servlet中访问session:request.getSession().setAttribute(“”,”);Jsp就是先生成servlet然后再执行的JavaBean概念:可重复使用的轻量级组件三个基本特征:实现Serializable接口(序列化)至少有一个无参构造方法成员变量修饰为私有的,通过公共方法对其进行访问,如想设为只读,则只需添加getter方法,如果可读写,则添加getter和setter方法,这可以方便实现权限控制.防止某个属性值被非法修改。MVC: View;视图一般使用jsp或servlet实现,用来向用户展现数据,做为用户的操作接口Controller 控制器一般使用servlet或action实现,主要用来进行业务跳转,实现view与model之间的调度中心,Model模型一般使用javabean实现,也有ejb实现。主要实现业务逻辑的操作流程:用户通过view 层向服务器发送请求,view层将请求提交给controller层,控制器层根据请求的不同调用不同的model层,再根据model层返回的数据的不同,选择不同的view层向用户展现.使用MVC实现注册:Regist.jsp中添加表单,让用户输入信息表单提交给RegistServlet控制器,在这里面接收用户提交过来的数据将数据封装在一个JavaBean中然封装好的JavaBean传给Model层中的Service类的方法中,在此方法中连接数据库,将数据插入表中,Servlet接收service的返回值,根据返回值的不同,跳转到不同的页面Struts页面中使用标签库来显示表单,引用标签:使用Action来实现控制器,Struts2框架的运行原理:用户提交请求,通过Struts的核心控制器FilterDispacher来进行过滤,再通过一系列的其它过滤器(过滤字符,过滤权限的,数据封闭的),然后读取Struts.xml的配置文件,选择一个业务action类进行处理,处理完成后通过返回的result在配置文件中查找对象的页面进行显示。Struts中会为每一个用户请求都生成一个action实现。国际化:通过在src中添加perties文件,还要struts.xml中声明这个资源文件。在里面声明国际化字符,在页面中显示资源文件内容。拦截器:就是用户访问某个资源时,在请求过程中进行拦截,然后将拦截的信息进行处理。它里面有需要有一个向下一级继续发送请求的方法(invoke)。Spring我们主要使用了Spring中的控制反转(IOC)将创建对象的控制器由原来的使用者交给容器依懒注入将某个对象以属性的方式注入AOP面向切面开发,以配置或预编译的方式动态的为程序添加功能AOP与OOP面向对象开发的区别:aop和oop都是将某些代码抽离出来,但aop是以配置文件的方式可以动态的修改功能,而oop要想修改功能,必须修改代码。声明式事务Spring中有一个Bean工厂HibernateORM对象关系映射实质:将对象与关系型数据库中的某条记录进行对应优点:使程序员不用再关心不同的数据库的区别,将主要精力放在业务逻辑处理上,Hibernate的核心机制是对象的状态的转换瞬时状态-持久状态-脱管状态Hibernate的一级缓存:是sesionFactory二级缓存:使用第三方控件Session中的方法:Save保存Delete删除Saveorupdate保存或修改(是根据是否有主键来判断)Get读取一级缓存中的数据,如果没有则读取数据库,如果还没有则返回nullLoad读取一级缓存中的数据,如果没有读取二级缓存,还没有则读取数据库,还没有则报错查询:Query query=session.createQuery(“from Users”);List list=query.list();进行查询SSHStruts做来表现层,主要使用它的MVC框架。Hiberante做为持久层,与数据库打交道Spring做为Struts与Hibernate的粘合剂,将两都有机结合设计模式:概念:用来设计程序结构的方式,分三种创建模式,结构模式和行为模式在开发中使用过其中的一部分设计模式,比如:工厂模式,单态模式,克隆模式,外观模式。工厂模式:就是在创建对象时,不是通过直接New来创建实例,而是通过一个工厂类来创建实例,给他传不同的标识他就返回给我什么样的对象。优点:帮助封装,不用操心具体的对象实现过程;实现了客户端和具体实现类的解耦。缺点:可能增加客户端的复杂度;什么时候使用工厂模式:想要把对外创建对象的职责集中管理和控制时。示例代码:public class Interface1Factory public static Interface1 createInterface1(int i)Interface1 i1;if(i=1)i1=new Son1();elsei1=new Son2();return i1;外观模式:外部系统或客户类在访问我们的系统时,不需要一个个了模块进行访问 ,我们提供一个外观模式的实现类,在这个类中完成所需要的子模块的调用,那么外部系统或客户只需要调用我们的这个外观模式类就可以,这就降低了外部系统凋用的复杂程度。优点:松散耦合,简单易用,更好的划分访问的层次缺点:过多使用容易发生混乱何时使用外观模式:想使子系统更易于外部调用;想使客户程序与自己系统的耦合度降低;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论