JAVA SE 马士兵笔记WORD版
- 格式:pdf
- 大小:439.94 KB
- 文档页数:52
Java学习笔记学习Java首先要配置环境变量,在电脑属性的高级中,点击环境变量,classpath 中有一英文句号“.”后跟一个分号,表示当前路径的意思。
由第一个程序Helloworld为例说明Java的基本运行代码:public class HelloWorld {public static void main(String args[]) {System.out.println("Hello, World!");}}在Java中只能允许有一个公共类,此区别于C++。
还有Java的写作风格与C和C++有很大区别。
下面细谈Java的基本语法,与其他语言类似,Java每一条语句都以“;”结束。
1.short byte char 之间不会自动转换,他们运算时首先转换为int 然后进行运算;boolean不会进行转换;如:byte b1;byte b2;byte b3=byte(b1+b2);b1+b2运算后是int 类型,可以byte a=1;//可以把数值直接赋值不超范围,(-128~127)float f1=1.234f;long l1=300000000L;f和L一定加上;2.System.out.println( );//输出后换行System.out.print( );//输出后不换行&&和&的区别:表达式1 && 表达式2 只要表达式1 错误,后不再计算,表达式1 & 表达式2 就算表达式1错误表达式2也会计算。
+既可以作为加号,也可以作为连接符,即左右都是字符串,当有一个是字符串,系统默认把另一个转化为字符串再处理。
例如:System.out.println(“c=”+ c);打印时,无论任何类型,都先转换为字符型,再进行打印。
3.聚合关系,就是包含关系,实现关系就像虚基类,在派生类中实现。
4.定义成员变量可以初始化,若不则自动初始化(可以直接在成员变量的定义时初始化);但局部变量一定要自己初始化,boolean类型默认为false,其他默认为0;在main中调用函数时,只要定义了构造函数并且初始化,就一定要把实参的值写到函数里,不能少参数。
第二章基础语法1. 成员变量:类体内方法体外声明的变量 局部变量:方法体内声明的变量 重要:变量出了它所在的大括号就不起作用了,反之只要是在它的大括号内任何地方都起作用。
TestConvert.javapublic class TestConvert {public static void main(String arg[]) {int i1 = 123;int i2 = 456;double d1 = (i1+i2)*1.2;//系统将转换为double型运算float f1 = (float)((i1+i2)*1.2);//需要加强制转换符byte b1 = 67;byte b2 = 89;byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需//要强制转换符System.out.println(b3);//结果:-100double d2 = 1e200;float f2 = (float)d2;//会产生溢出System.out.println(f2);//infinity(无限)float f3 = 1.23f;//必须加flong l1 = 123;long l2 = 30000000000L;//必须加lfloat f = l1+l2+f3;//系统将转换为float型计算long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)}}TestConvert2public class TestConvert2 {public static void main(String[] args) {int i=1,j=12;float f1=(float)0.1; //0.1ffloat f2=123;long l1 = 12345678,l2=8888888888L;double d1 = 2e20,d2=124;byte b1 = 1,b2 = 2,b3 = 127;j = j+10;i = i/10;i = (int)(i*0.1);char c1='a',c2=125;byte b = (byte)(b1-b2);char c = (char)(c1+c2-1);float f3 = f1+f2;float f4 = (float)(f1+f2*0.1);double d = d1*i+j;float f = (float)(d1*5+d2);}}Fab.javapublic class Fab {public static void main(String[] args) {System.out.println(f(-9));}public static long f(int index) {if(index < 1) {System.out.println("invalid parameter!");return -1;}if(index == 1 || index == 2) {return 1;}long f1 = 1L;long f2 = 1L;long f = 0;for(int i=0; i<index-2; i++) {f = f1 + f2;f1 = f2;f2 = f;}return f;}}。
课程内容 (5)1 HelloWorld (5)2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping (5)3 常见的0/R框架(了解) (5)4 hibernate基础配置(重点) (5)5 ID生成策略(重点 AUTO) (5)6 Hibernate核心开发接口介绍(重点) (5)7 对象的三种状态(了解) (5)8 关系映射(重点) (5)9 Hibernate査询(HQL) (5)10 在Struts基础上继续完善BBS200 (5)11 性能优化(重点) (5)12 补充话题 (5)风格 (5)1 先脉络,后细节 (5)2 先操作,后原理 (5)3 重Annotation,轻xml配置文件 (5)资源 (5)1 http://www. (5)2 hibernate zh_CN文档 (5)3 hibernate annotation references (5)环境准备 (5)1 下载hibernate-distribution-3.3.2.GA-dist (5)2 下载hibernate-annotations-3[1].4.0.GA (5)3 注意阅读hibernate compatibility matrix(hibernate 网站download) (5)4 下载slf4jl.5.8 (6)Hibernate HelloWorld (6)1 建立新java 项目,名为hibernate_0100_HelloWorld (6)2 学习建User-library-hibernate,并加入相应的jar包 (6)3 引入mysql的JDBC驱动包 (6)4 在mysql中建立对应的数据库以及表 (6)5 建立hibernate 配置文件hibernate.cfg.xml (6)6 建立Student 类 (6)7 建立Student 映射文件 Student.hbm.xml (6)8 将映射文件加入到hibernate.cfg.xml中 (6)9 写测试类Main,在Main中对Student对象进行直接的存储测试 (6)10 FAQ: (6)11 Note: (6)12 建立能力 (7)建立 Annotation 版本的 HelloWorld (7)1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); (7)2 创建Teacher 类 (7)3 在hibernate lib 中加入annotation的jar包 (7)4 参考Annotaion文档建立对应的注解 (7)5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 .. (7)6 参考文裆进行测试(注意文裆中缺少configure()的小bug) (7)7 FAQ: @不给提示 (7)What is and Why 0/R Mapping (7)1 JDBC操作数据库很繁琐 (7)2 Sql语句编写并不是面向对象的 (7)3 可以在对象和关系表之间建立关联来简化编程 (7)4 0/R Mapping 简化编程 (7)5 0/R Mapping跨越数据库平台 (7)6 Hibernate_0200_OR_Mapping_Simulation (7)0/R Mapping Frameworks (7)1 hibernate (7)2 toplink (8)3 jdo (8)4 JPA (8)Hibernate基础配置 (8)1 对应项目:Hibernate_0300_BasicConfiguration (8)2 介绍MSQL的图形化客户端 (8)3 hibernate.cfg.xml: hbni2ddl.auto (8)4 搭建日志环境并配置显示DDL语句 (8)5 搭建jUnit环境 (8)6 hibernate.cfg.xml:show_sql (8)7 hibernate.cfg.xml:format_sql (8)8 表名和类名不同,对表名进行配置 (8)9 字段名和属性相同 (8)10 字段名和属性名不同 (8)11 不需要psersistence的字段(不用列) (8)12 映射日期与时间类型,指定时间精度 (8)13 映射枚举类型( 比较少用) (9)14 字段映射的位置(field或者get方法) (9)15 @Lob (9)16 课外:CLOBBLOB类型的数据存取 (9)17 课外:Hibernate自定义数据类型 (9)18 hibernate 类型 (9)ID生成策略 (9)1 对应项目:hibernate_0400_ID (9)2 注意: (9)3 xml生成id (9)4 注解方式:@GeneratedValue (9)5 FAQ; (10)6 联合主键 (10)核心幵发接口介绍 (12)1 hibernate_0500_CoreAPI (12)2 Hibernate API文档需要单独下载 (12)3 Configuration (12)4 SessoinFactor (12)5 Session (12)6 SchemaExport (自动建表) (13)7 Query 接口 (13)8 Note: (13)三种对象状态 (14)1 上一个 project (14)2 三种状态的区分关键在于 (14)3 三种状态: (14)4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比如改变属性的 (14)关系映射(重要) (15)对象之间的关系 (15)1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 (15)2 简化问题: (15)3 —对一 (15)4 —对多 (15)5 组件映射 (15)一对一关联 (16)1 一对一单向外键关联 (16)2 一对一双向外键关联 (16)3 一对一单向主键关联(不重要) (17)4 一对一双向主键关联(不重要) (17)5 联合主键 (17)组件映射 (17)1 项目:hibernate_1100_component (17)2 对象关系:一个对象是另外一个对象的一部分 (17)3 数据库表:一张表 (17)4 annotation: @ Embeddable @Embbeded (17)5 xml: 使用<component,例如: (18)多对一与一对多 (18)1 多对一单向关联 (18)2 一对多单向关联 (19)3 一对多(多对一)双向关联 (19)多对多 (20)1 单向关联: (20)2 双向关联: (21)关联关系中的CRUD_Cascade_Fetch (21)1 hibernate_1700_one2many_many2one_bi_crud (21)2 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) (21)3 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 (21)4 铁律:双向关系在程序中要设定双向关联 (22)5 铁律:双向mappedBy (22)6 fetch (22)7 Update时@ManyToOne()中的cascade参数关系 (22)8 Delete时@ManyToOne()中的cascade关系 (22)9 O/RMapping 编程模型 (23)10 要想删除或者更新先做load,除了精确知道ID之外 (23)11 如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据 (23)12 练习:多对多的CRUD (23)关系映射总结 (24)1 什么样的关系,设计什么样的表,进行什么样的映射 (24)2 CRUD,按照自然的理解即可(动手测试) (24)集合映射(不太重要) (24)1 项目名称:hibernate_1800_Collections_Mapping (24)2 Set (24)3 List (与Set差不多多个@OrderBy) (24)4 Map (24)继承映射(不太重要) (24)1 三种方式 (24)作业: (24)1 学生课程、分数的设计(重要) (24)2 设计: (25)3 树状结构的设计(至关重要) (25)Hibernate 查询(Query Language) (26)HQL vs EJBQL (26)1 NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)" 262 总结:QL应该和导航关系结合,共同为査询提供服务。
马士兵-Java笔记Java语言的特点:1. 一种面向对象的语言;2. 一种平台无关的语言,提供程序运行的解释环境;3. 一种健壮的语言,吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如:指针,内存的申请与释放等)。
Java两种核心机制:Java虚拟机、垃圾收集机制;一个Java源文件中最多只能有一个public类。
其他类的个数不限,如果源文件包含一个public类,它必须按该类名命名;Java标识符命名规则:1. 标识符由字母、下划线“_”、美元符“$”或数字组成;2. 标识符应以字母、下划线、美元符开头;3. Java标识符大小写敏感,长度无限制。
从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。
数据类型包括基本数据类型和引用数据类型:1. 基本数据类型:数值型:整数类型(byte,short,int,long),浮点类型(float,double)字符型(char)布尔型(boolean)2. 引用数据类型:类(class)接口(interface)数组Java语言的整型常量默认为int型,声明long型常量可以后加‘l’或‘L’。
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F.Boolean类型不可以转换为其他的数据类型。
整型,字符型,浮点型的暑假在混合运算中相互转换,转换时遵循一下原则:1. 容量小的类型自动转换为容量大的暑假类型;数据类型按容量大小排序为:Byte,short,char->int->long->float->doubleByte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型2. 容量大的暑假类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
目录JAVA自学之路一: 学会选择 (1)JAVA自学之路二: JAVA自学路线图 (2)JAVA自学之路三: 要动手 (3)JAVA自学之路四: 要事为先 (4)JAVA自学之路五: 问题解决之道 (5)1:要仔细的观察错误的现象,是的,要仔细 (5)2:要仔细思考问题会出在哪些环节(重要) (6)3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。
(6)4:如果还不行,google吧 (7)5:什么?还不行?那么就BBS吧 (7)6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。
(8)7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。
(8)JAVA自学之路六: 项目的自学 (8)JAVA自学之路七: 路线图明细 (9)一:J2SE (9)二:数据库(Oracle或者MySQL) (9)三:JDBC (10)四:HTML_CSS_JAVASCRIPT (10)五:Servlet & JSP (10)六:Struts (10)七:XML (11)八:Hibernate (11)九:Spring (11)十:EJB3.0 (11)十一:至于SOA,对于自学的同学来说,暂时不用特别关注。
(12)JAVA自学之路一: 学会选择为了就业,不少同学参加各种各样的培训。
决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。
那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。
每个培训机构都会宣传自己的好处,并不能说明大的趋势。
一些新闻文章很有可能是枪手写的,不必太过相信。
国外背景的教师和课程,未必适合你。
那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?我讲一个通过招聘网站的观察方法。
第1章Java概述Java语言的特特点一种面向对象的语言;一种平台无关的语言;一种健壮的语言,吸收了C/C++的优势,但去掉了其阻碍程序健壮性的部份(如:指针、内存的申请与释放等)Java的两种核心机制Java虚拟机(Java Virtual Machine)垃圾回收机制(Garbage Collection)源程序(*.java文件)→Java编译器→字节码(*.class文件)→类装载器→字节码校验器→说明器→操作系统平台一次编译,到处运行Java是一种说明型语言JDK(Java Development Kit)软件开发工具包JRE(Java Runtime Environment)运行时环境开发需要JDK;用户只需JREPATH:WINDOWS系统执行命令时要搜寻的途径(如,)CLASSPATH:Java在编译和运行时要找的class所在途径(“.”代表当前途径)java:运行java程序javac:编译java程序java –version一个源文件最多只能有一个public类,其他类数量不限,源文件名必需与public类名一致Java应用程序的执行入口时main()方式:public static void main(String[] args){…} Java语言中严格区分大小写编译后,每一个类都对应一个class文件第2章基础语法标示符由字母、下划线”_”、美元符”$”或数字组成标示符应以字母、下划线、美元符开头Java标示符对大小写灵敏,长度无穷制,注意“见名知意”且不能与Java语言关键字重名goto和const尽管未利用,但也被作为Java的关键字保留程序执行进程:到内存区 2.找到main方式开始执行 3.执行进程中的内存治理Java数据类型的划分boolean类型数据只许诺取值true或false,不能够利用0或非0的整数值取代true和false,这点和c语言不同Java字符采纳Unicode编码,每一个字符占两个字节,因此能够用十六进制编码形式表示,例:char c = ‘\u0061’;Java语言的整型常量默以为int类型,声明long型常量能够后加l或L大体数据类型转换boolean类型不能够转换为其他的数据类型整型,字符型,浮点型的数据在混合运算中彼此转换,转换时遵循以下原那么:容量小的类型自动转换为容量大的类型:byte,short,char->int->long->float->doublebyte,short,char之间不需要彼此转换,他们三者在计算时第一会转换为int类型能够将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围“+”除用于算术加法外,还可用于对字符串进行连接操作,“+”运算符双侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接,当进行打印时,不管任何类型,都自动转换为字符串进行打印break&continuebreak语句用于终止某个语句块的执行。
第八章流文件(桶) - 流(管道) - 程序2.java输入输出流分类(输入输出相对于程序来说的,而不是文件)Java.io包中定义了多个流类型(类或者抽象类)来实现输入/输出功能:可以不按数据流的方向不同分为输入流和输出流按处理数据单位不同分为字节流和字符流按功能不同分为节点流和处理流3.输入/输出流类4个1 InputStream 继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流InputStream的基本方法2 OutputStream 继承自outputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流OutputStream的基本方法3 Reader 继承自Reader的流都是用于向程序输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流Reader的基本用法4 Writer 继承自Writer的流都是用于程序中输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流writer的基本用法4.常见节点流/处理流4.1 节点流类型(直接读取写入..不经过处理)4.1.1 常见节点流:文件流例子:IO\ TestFileInputStream.java 字节流按一个字节一个字节读取文件import java.io.*;public class TestFileInputStream {public static void main(String[] args) {int b = 0;FileInputStream in = null;try {in = new FileInputStream("F:\\My Workspace\\Java\\IO\\TestFileInputStream.java");} catch (FileNotFoundException e) {System.out.println("找不到指定文件");System.exit(-1);}try {//读数据long num = 0;while((b=in.read())!=-1){//读一个字节到变量b,b=-1表示读取完成System.out.print((char)b);num++;//计数}in.close();System.out.println();System.out.println("共读取了"+num+" 个字节");} catch (IOException e1) {System.out.println("文件读取错误"); System.exit(-1);}}}IO\TestFileOutputStream.java 字节流复制文件import java.io.*;public class TestFileOutputStream {public static void main(String[] args) {int b = 0;FileInputStream in = null; //声明in为文件输入流(管道)FileOutputStream out = null;//声明out为文件输流(管道)try {in = new FileInputStream("F:/My Workspace/Java/IO/TestFileOutputStream.java");out = new FileOutputStream("F:/My Workspace/Java/IO/copy TestFileOutputStream.java");while((b=in.read())!=-1){out.write(b);}in.close();out.close();} catch (FileNotFoundException e2) {System.out.println("找不到指定文件"); System.exit(-1);} catch (IOException e1) {System.out.println("文件复制错误"); System.exit(-1);}System.out.println("文件已复制");}}IO\TestFileReader.java 字符流按一个字符一个读取文件import java.io.*;public class TestFileReader {public static void main(String[] args) {FileReader fr = null;int c = 0;try {fr = new FileReader("d:\\share\\java\\io\\TestFileReader.java");int ln = 0;while ((c = fr.read()) != -1) {//char ch = (char) fr.read();System.out.print((char)c);//if (++ln >= 100) { System.out.println(); ln = 0;}}fr.close();} catch (FileNotFoundException e) {System.out.println("找不到指定文件");} catch (IOException e) {System.out.println("文件读取错误");}}}IO\ TestFileWriter.java 字符流输出大多国家的数文字import java.io.*;public class TestFileWriter {public static void main(String[] args) {FileWriter fw = null;try {fw = new FileWriter("F:\\My Workspace\\Java\\IO\\unicode.txt");for(int c=0;c<=50000;c++){fw.write(c);}fw.close();} catch (IOException e1) {e1.printStackTrace();System.out.println("文件写入错误");System.exit(-1);}}}IO\TestFileWriter2.java 字符流复制文件并且每个字符后面多输出一个“|”字符import java.io.*;public class TestFileWriter2 {public static void main(String[] args) {int b = 0;FileReader fn = null;FileWriter fw = null;try {fn = new FileReader("F:\\My Workspace\\Java\\IO\\TestFileWriter2.java");fw = new FileWriter("F:\\My Workspace\\Java\\IO\\copy TestFileWriter2.txt");while((b = fn.read())!=-1){fw.write(“|”);fw.write(b);}fn.close();fw.close();} catch (IOException e1) {e1.printStackTrace();System.out.println("文件写入错误");System.exit(-1);}}}4.2 处理流( 经过处理的流)4.2.1常见处理流:缓冲流IO\ TestBufferStream1.java import java.io.*;public class TestBufferStream1 {public static void main(String[] args) { try {FileInputStream fis =new FileInputStream("F:\\My Workspace\\Java\\IO\\TestBufferStream1.java"); BufferedInputStream bis =new BufferedInputStream(fis); int c = 0;System.out.println(bis.read()); System.out.println(bis.read()); bis.mark(100); //从100号往外读for(int i=0;i<=10 && (c=bis.read())!=-1;i++){System.out.print((char)c+" "); }System.out.println(); bis.reset();//回到标记点for(int i=0;i<=10 && (c=bis.read())!=-1;i++){ System.out.print((char)c+" "); }bis.close();} catch (IOException e) {e.printStackTrace();} } }IO/TestBufferStream2.java 带缓冲区的输入输出流(能读一行) import java.io.*;public class TestBufferStream2 {public static void main(String[] args) { try {BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\share\\java\\dat2.txt")); BufferedReader br = new BufferedReader(new FileReader("d:\\share\\java\\dat2.txt")); String s = null;for(int i=1;i<=100;i++){s = String.valueOf(Math.random()); bw.write(s); bw.newLine(); }bw.flush();//全部取出缓冲区数据while((s=br.readLine())!=null){//读一行 System.out.println(s); }bw.close(); br.close();} catch (IOException e) { e.printStackTrace();} } }5. 转换流InputStreamReader 和OutputStreamWriter 用于与字节数据到字符数据之间转换。
JAVA视频教程尚学堂---手把手教程Email:******************Call:86-10-58052712 主讲教师马士兵**********************SCM系统--------Java+VC跨平台(电信宽带运营平台-------Java+WEB(J2EE)跨平台远程教学平台----Java+WEB(tomcat)VOD视频监控-----VCERP视频会议---------VC新闻发布系统-----Java+XML(模板)网上商城课堂内容、教学方法、学习方法、预备知识、教学资源JAVA基础贯穿数据结构的知识(时间复杂度、链表)---非常重要语法基础【变量、循环、分支】最核心的东西—原理--学好OO【面向对象是最重要的】有新东西学是好事----个人价值Exception 从Java Web开始,框架巨多无比Array【数组】基础类、常用类I/O StreamCollection/Generic【集合类】Thread【线程】TCP/UDP【网络底层】GUI【Graphic User Interface 图形化用户接口窗口】Meta Data【以后讲,与EDP3.0紧密相关】Regular Expression【正规表达式】JDK初步Java Web编程【主攻一个框架---讲原理,略讲其他框架】针对Web程序J2EE【一套标准,包含Java Web 、JDPC、JSP、SP、JB/开源框架EDP3.0—就分步式来说,目前(2005)无东西与之抗衡】(比较EDP3.0,2.0,1.0)企业级应用J2ME移动设备移动增值SP运营商3G,2.5G,要火爆起来【网络先铺起来,应用才能上来;3G的网络还没有铺开、火爆起来,讲3G的应用超前了】巨无霸式的教学理论举例理论回顾练习讲解【三片面包加两片肉】注重结合工程实践【完全结合】注重传授自学能力【自学的东西相当重要,授人以鱼,不如授人以渔;慢慢学会掌握一定基础后才有,灌输、背,融成血液里的一部分,心中无剑,手中有剑—前提—心中有剑手中也有剑;时间短,强度大,该背就背】个人能力分三个层次知识学习前人的知识---学习能力的一个表现,被动地接受—接受能力{自己学习了知识后考虑如何去应用,去---学习解决问题的方法【类似问题遇到过】灵活运用学到的知识【碰到什么问题采用什么方法】解决问题的思路【最高层次】创造解决问题的方法【思路掌握了,遇到新问题,自己拓展一条思路,解决问题,不可能一口吃成一个胖子,沿着这三个层次一点一点往上升首先打造自己学习知识的能力,先把该掌握的知识掌握了,再谈如何应用---如何教---教大家写项目每一个知识教太深—给项目留得时间特别短---不合适;自学一些东西,慢慢去培养解决问题的思路,试着朝这个方向去培养,工作后慢慢遇到新问题使劲去思考了积累起来逐渐会有这个能力,灵活一点、再灵活一点!基础知识要背—灵活应用的东西不能背,无一定之规,在实践中慢慢锻炼—实践的越多—敲的代码越多(掌握思路后自主敲代码,哪怕敲不出来再看别人的思路—收获远远不一样,学习要自主一点,多思考思路才能开阔—无捷径,努力锻炼自己的就业能力。
Java正则表达式(一)关键字: java regex, regular expression正则表达式在处理文本方面用处非常大,最早像在Perl和awk语言中,提供了这种机制,Java在Java 2中也增加了正则表达式这个包java.util.regex。
这个包为用户使用正则表达式,提供了易用而全面的支持。
我的研究方向是web 挖掘。
从网页中提取内容,处理文本,当然需要正则表达式这个强大的工具了。
一、首先我们看一下怎么使用正则表达式的一个例子:A Matcher examines the results of applying a pattern.我们希望从这句话中找到所有开头为a的单词。
当然这只是一个简单的例子,你可以使用String提供的split方法,得到单词数组,然后遍历各个单词看是否是否开头为a我们现在看看怎么使用正则表达式来处理这个问题:Java代码1.import java.util.regex.*;2.3.public class FindA{4. public static void main(String args[])5. throws Exception{6.7. String candidate =8. "A Matcher examines the results of applying a pattern.";9. String regex = "\\ba\\w*\\b";10. Pattern p = pile(regex);11. Matcher m = p.matcher(candidate);12. String val = null;13. System.out.println("INPUT: " + candidate);14. System.out.println("REGEX: " + regex +"\r\n");15. while (m.find()){16. val = m.group();17. System.out.println("MATCH: " + val);18. }19. if (val == null) {20. System.out.println("NO MATCHES: ");21. }22. }23.}从这个例子我们可以看到正则表达式涉及到的两个类Matcher和Pattern,我们以后会专门讨论着连个类。