




已阅读5页,还剩80页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 85 马士兵知识点总结 Java应用程序的执行入口是 main方法 即 public static void main . /单行 注释 /* 多 行注释 .*/ /* *多行注释,且可以被 doc 工具解析 */ 凡是在大括号里面声明了的变量,出了大括号就没人认识这个在大括号内部声明的变量了。 public class 数据类型转换 1 2 / 85 public static void main(String args) int i =1,j; /赋值结果是 i=1,j 无值 . float f1 = ; float f3 = (float); /输入带小数点的数字, java 默认是 double型,因此想要输入 float 型的必须在之后加 f,或者用强制转换 float f2 = 123; /int 型向 float 型转换的 long l1 = 12345678;long l2 = 8888888888l; /前边的数字 int 型可以转换成为 long 型,但是后边的数字超出long的表数范围,所以会出错,必须用强制转换或者加 l double d1 = 2e20, d2 = 124; byte b1 = 1,b2 = 2,b3 = 127; /byte 型的数据必须在 -128 - 127 之 间,否则会处错误 i = i / 10;i = (int)(i * ); /i 本来是 int型的数据,但是在这里却变 成 double 型的数据,不能进行转换如果想用的话必须加强制转换符号 char c1 = a,c2 = 125; 3 / 85 /byte short char 不能相互转换,只能转换成 int 类型的 byte b = (byte)(b1 - b2); /b1 b2 先转换成 char c intint型的,运算结束后腰想变成 = (char) (c1 char+ bytec2 必须强制转换 Switch 语句: - 但是 switch 的 i可以是 byte、 /结果是 float f4 = f1 + f2,f5 = f1 + (float)(f2 * ); /不能从 double转换为 float型的 数据, f2*之后变成 double型的数据了 double d = d1 * i + j; /这里必须初始化变量 j float f = (float)(d1 * 5 + d2); 型的,要想变成型的必须加强制转换 转换成 int 型数据。 1); short 、 char 型的数据,因为他们可以自动 If 语句中,只有一句需要执行的话时,大括号可以省略,但是建议不省略,万一以后要修改在运行的时候会出些意想不到的问题。 4 / 85 三目运算符 _101zhi200之间的质数: public class _101zhi200 之间的质数 public static void main(String args) for (int i = 101; i /不是质数后,剩下的数字就没必要再求余了直接退出此个 for循环 if (f=false) /不是质数 continue; /跳过这个数字进行下一个数字 5 / 85 (i); 对于面向对象思维来说,针对某一件事,首先考虑的是该事物包 些类,哪些个对象;其次是考虑这些对象、方法的属性和方法; 是考虑类和类之间具有什么关系。 定义类后才能有对象,因 为对象时类的具体表现 类的定义、对象的创建: 6 / 85 public class Dog 含哪最后 int furColor; float height; float weight;/创建类的属性 / 创 建 类 的 方 法 public static void catchMouse(Mouse m) /执行方法 public static void main(String args) 在定义成员变量的时候,可以对其进行初始化赋值,如果未赋值的话, java默认是初始值如上图。 Dog d = new Dog(); /创建老鼠的类 class Mouse 对象的创建和使用: 7 / 85 int longth; int old; public static void scream() (啊啊啊啊啊啊啊啊啊啊啊啊啊 ); /创建一个狗的对象 Mouse m = new Mouse(); /创建一个老鼠的对象 /调用抓老鼠的方法 This关键字: Java语言基础知识整理 一 1. 2. 3. 计算机语言的发展史及历史地位 第一代语言 打孔机 纯机器语言 第二代语言 汇编 第三代语言 C、 Pascal、 Fortran 面向过程的语言 C+面向过程 /面向对象 java 跨平台的纯面向对象的语言 .NET 跨平台语言 语言特点 8 / 85 一种面向对象的语言 一种平台无关的语言,提供程序运行的解释环境 一种健壮的语言,吸收了 c/c+语言的优点,但去掉了影响程序健壮性的部分。 二 Java程序运行机制及运行过程 两种核心机制 Java虚拟机 垃圾收集机制 运行过程 源程序 java 编译器 字节码 类装载器 字节码校验器 解释器 操作系统平台 4. java 虚拟机 java虚拟机可以理解为是一个以字节码为机 器指令的 CPU。 对于不同的运行平台有不同的虚拟机。 Java虚拟机机制屏蔽了底层运行平台的差别,实现了 “ 一次编译,到处运 行 ” 。 9 / 85 5. 垃圾收集机制 不再使用的内存空间应回收 垃圾收集。 在 c/c+语言中,由程序员负责回收无用的内存空间。 Java语言消除了由程序员负责回收无用的内存空间的责任,它提供了一种 系统级线程跟踪存储空间的分配情况,检查并释放那些可以被释放的存储器空间。 垃圾收集在 java 程序运行过程中自动进行,程序员无法精确进行控制和干 预。 三 Java Application 初步 源文件以 “java” 为扩展名。源文件的基本组成部分是类。 2 一个源文件最多只有一个 public 类,其他类的个数不限,10 / 85 如果源文件包括一个 public 类,它必须按该类名命名。 应用程序的执行入口是 main()方法,有固定的书写格式: public static void main(String args) 语言严格区分大小写。 方法由一条条语句构成,每条语句已分号结束。 语言有三种注释方式: /单行注释 /*.*/ 多行注释 /* *用于多行注释,且可以被 doc 工具解析 */ 四 J2SE基础语法 1.标识符: java对各种变量、方法和类等要素命名时使用的字符序列。 凡是可以自己起名字的地方都叫标识符,都要符合标识符的规则。 标识符的命名规则: 标识符由字母、下划线 ”_” 、美元符 ”$” 或数字组成。 标识符应该以字母、下划线或者美元符开头。 java 标识符大 小写敏感,长度11 / 85 无限制。 java 标识符选取应该 “ 见名知意 ” 且不可以和 java 关键字重复。 2.关键字: java 中一些赋以特定含义,用作专门用途的字符串。 所有java关 键字都是英文小写字母。 goto和 常量 java 的常量值用字符串表示,区分不同的数据类型。 整形常量、实型常量、字符常量、逻辑常量、字符串常量。 区分字符常量和字符串常量 “ 常量 ” 这个名字还会用在其他环境中用来表示值不变的变量。 变量 java变量是程序中最基本的存储单元,其要素包括变量名、变量类型、作用域。 java 中每一个变量都属于特定的数据类型,在使用前 必须对其进行申明。 12 / 85 从本质上讲,变量其实是内存中一小块区域,使用变量名来访问这块区域,因此,每一个变量进行使用之前,必须对其进行申明,然后进行赋值,这样才可以使用。 heap:new 出来的东西存放; stack:局部变量存放在里面; datasegment:静态常量及字符串常量; codesegment:存放代码 变量的分类 按声明的位置划分: 局部变量:方法或语句块内部定义的变量 成员变量:方法外面、类的里面定义的变量 类外面不能有变量的声明 按所 属数据类型划分: 基本数据类型变量 引用数据类型变量 7java局部变量和成员变量 方法体内部声明的变量称为局部变量。 方法体内部是指与方法对应的大括号内部。 在方 法体外部,类体内部声明的变量是成员变量。 8.数据13 / 85 类型的划分 基本数据类型:整数类型、浮点类型、字符型、布尔型 引用数据类型:类、接口、数组。 9.逻辑型 boolean boolean数据类型适合逻辑运算,一般用于流程的控制。 boolean 数据类型只允许取值为 true 或 false,不可以用 0或者非 0 代替 true 或者 false. 10.字符型 char char 型数据用来表示通常意义上的 ” 字符 ” 。 字符常量为用单引号括起来的单个字符。 java字符采取 Unicode字符编码,每个字符占据两个字节,因此可以采用十六进制编码表示。 java 语言还允许使用转义字符 来将其后的字符转化为其他的含义。 2进制、 8 进制、 16 进制的转化。 11.整数类型 java各整数类型有各自的字段长度和表数范围,其不受具体14 / 85 操作系统的影响,以保证 java程序的可移植性。 java语言整形常量的三种表示形式: 十进制整数; 八进制整数:要求以 0 开头; 十六进制整数:要求以 0x或者 0X开头 long型常量时后面需要加上 ”l” 或者 ”L”; 12.浮点类型 与整形类似,浮点类型也有各自的字段长度和表数范围,不受平台影响。 java 浮点类型常量有两种表示方法:十进制形式和科学计数法形式 java 浮点型默认的常量类型为 double,声明为 float 时需要后面加上 ”f” 或者 ”F”; 类型不可以转化为其他的数据类型 15 / 85 容量小的数据类型自动转化为容量大的数据类型。 int -long-float-double byte short char 三者不会相互的转化,计算时三者都先转化为 int型进行计算 容量大的数据类型转化为容量小的数据类型时,要加上强制类型转化符,这样可能造成精度降低或者溢出,使用时要格外注意。 有多种数据库类型进行计算时,应该将所有的数据类型转化为容量最大的那种数据类型,在进行计算 。 扩展赋值运算符: += -= /= *= 字符串连接运算符: + 15.赋值运算符和扩展赋值运算符: 当 ”=” 两侧数据类型不一致时,可以使用默认类型转化或者强制类型转化。 可以将整形常量直接赋值给 byte short char,可以不使用强制类型转化符,只要不超过其表数范围即可。 16.字符串连16 / 85 接符: 两侧的操作数只要有一个是字符串类型,则会默认将另一个自动转化为字符串类型然后再进行运算。 当进行打印时,无论是什么类型都会被转化为字符串类型进行打印。 17.表达式 表达式是符合一定语法规则的运算符和操作数的序列。 表达式的值是指对操作数进行运算得到的结果 表达式的类型是指表达式结果的数据类型 应该按照运算符从高到低的的优先级顺序进行运算 优先级相同的应该按照 事先约定的结合方向进行运算 18.三目条件运算符 语法格式: X ? Y : Z x 为 boolean 类型,先计算 x 的值,如果 x 的值为真,则整个表达式的值为 y;反之,整个表达式的值为 z 语句、 for 语句、 while语句、 dowhile 语句 17 / 85 break 语句:用于终止某个语句块的结束,用于循环语句体中,可以强制退出循环。 continue 语句:用于循环语句中,用于终止某次循环过程,跳过循环体中 continue 未执行的循环,直接进行下一次的循环。 switch 语句: 小心 case 穿透,推荐使用 break 语句 多个 case 可以合并到一起 d efault 可以省略,但是不推荐省略 java 中 switch只能探测到 int类型的值 20.方法 java的方法类似与其他语言的函数,是一段完成特定功能的代码片段,声明格式: 修饰符 1 修饰符 2 返回值类型 方法名 形式参数列表 Java语句 . 形式参数:在方 法被调用的时候用于接收外部输入的数据。 实参:调用方法时实际传给方法的数据。 返回值:方法被调用完后返还给调用他的环境的数据。 返回值类型:事先约定返回值的数据类型,如果没有返回值,18 / 85 则一定要给出 void。 java 语言中使用下述形式调用方法:对象名 .方法名。 实参的数目、数据类型和次 序必须和所调用方法的形参列表相匹配。 return 终止方法的执行并且指定返回数据类型。 java中函数调用中传递参数时,遵循值传递原则:基本类型传递的是数据值的本身,引用类型传递的是对对象的引用,而不是对象本身。 21.递归调用:在方法执行过程中出现方法本身的调用。 五面向对象的设计思想 1.从现实世界中客观存在的事物出发来构造软件系统,并在系统构造的过程中尽可能的运用人类的自然思维方式。 2.面向对象更加强调人类在日常的思维逻辑中经常采用的思想方法和原则,如抽象、分类、聚合、多态、继承等。 3.对象用计算机语言对问题域中的事物的描述,对象通过属性和方法来对应 事物所具有的静态属性和动态属性。 4.类是用于描述同一类型对象的一个抽象概念,类中定义了这一类对象因具有的静态和动态属性。 5.类可以看成是一类对象的模版,对象可以看作是该类的一19 / 85 个具体实例。 六类之间的关系 关联关系 继承关系 如: XXX 是一种 XXX 多态关系 聚合关系 实现关系 七 java与面向对象 对象是 java 程序的核心,在 java中 “ 万事万物皆对象 ” 。 对象可以看作是静态属性和动态属性的封装体。 类是用来创建同一类型对象的 “ 模版 ” ,在一个类中定义该类所因具有的成员变量和方法。 j2sdk 提供了很多类给编程人员,编程人员也可以自己定义类。 成员变量 = 属性 方法 = 函数 八为什么使用对象? 1.面 向对象编程 一组对象相互配合通过沟通完成特定功能。 2.对象都有对外服务的接口,通过继承可以复用。 3.对象隐藏内部服务的实现,通过聚合可以复用。 20 / 85 基础概念 (J2SE) (1_Java简介 ,2_基础语法 ) 1. Java是解释型语言: java 需要先编译为 .class 字节码文件,在执行时用解释器解释成操作系统能识别的文件。需要经过两次操作。 Java: 编译 *.java 源代码文件 -编译器编译 -*.class字节码文件, 执行 *.class 字节码文件 -解释器解释-操作系统能识别的文件 C/C+: 编译 .C 源代码文件 -编译器编译 -*.exe 字节码文件 , 执行 *.exe 字节码文件 -操作系统能识别的文件。 2. 基础类型的包装类 基础类型分配到栈,引用类型分配到堆 基础类 包装类 21 / 85 int Integer char Charater boolean Boolean 转换: 1. 当需要把 String 转换为基础数据类型时,使用对应的基础数据类型的包装类里面的方法。列: int a = (s); 2. 将基本类型数据转换为 String: int a = 2; String m = (a); 22 / 85 3. String 转 char: String s = “Xforce” char a = (1); (3_面向对象编程 ) 重点: 1. 代码内存分析: 06_内存解析 _1, 07_内存解析 _2, 08_内存解析 _3, 14_TestCircle 程序分析 _1, 15_TestCircle 程序分析 _2, 15_TestCircle 程序分析 _2. 2. 动态绑定和多态 39_ 多态 _ 40_ 多态 _ 内 存 分 析 见 39_ 多态 _ TestPolymoph 父类引用指向子类对象解释: 37_对象转型 _ 23 / 85 3. 抽象类、抽象方法 4. 接口 一、 1. 对象和类的概念 类是同 种对象的集合与抽象,类中定义了这一类对象所应具有的静态和动态属性。 二、 面向对象设计思想和步骤 : (1) 分析问题中有哪些类那些对象 (2) 分析这些对象中应该具有的属 性和方法 (3) 分析类与类之间的关系 三、 四、 Java 类的定义 局部变和成员变量 24 / 85 局部变量 :方法或语句块内部 (方法的参数叫局部变量 )(小 )( 必须赋初试值才可以使用 ) 成员变量 :方法外部、类的内部 (大 ), 不用初始化, java 系统会给你赋初始值 五、 引用类型 六、 1. 2. 3. 4. 5. 构造函数 构造函数名字与类的名字相同,大小写也保持一致 使用 new+构造方法创建一个新的对象 构造函数与类25 / 85 同名切没有返回值。即便是 void也不能写 注意: 当无指定构造函数时,编译器为类自动添加形为: 类名 ( ) 的构造方法 例子 : 构造函数是定义在 java类中的一个用来初始化对象的函数 public class Person int id; int age = 20; Person(int _id , int _age) Id = _id Age = _age; 七、 方法重载 OverLoad, 方法重写 OverWrite, 方法覆盖 Override 26 / 85 overload 完全新的方法,参数和原方法不同。 override 覆盖继承到的那个方法,原方法没有放弃。 overwrite 重写继承到的那个方法的代码,原方法被放弃。 其中 Eclpise 中没有 overwrite 的说法 , 也即 override 和 overwrite 是同一个概念。 马士兵教程 : 方法覆盖 Override也叫方法重写 OverWrite。 方法重载 OverLoad: 方法的重载指一个类中可以定义有相同的名字,但参数个数不同和参数类型不同的多个方法。调用时会根据不同的参数表选择对应方法 .能被编译器区分的方法既是构成重载。构造函数 (方法 )也可以重载 . Person() id = 0;age = 20; Person(int _id) id = _id;age = 23; 方法覆盖 Override(方法重写 OverWrite): 在子类中根据需要对基类中继承来的方法进行重写 . 27 / 85 注意 :1. 重写方法必须和被重写方法具有相同方法名称、参数列表和返回值 . 2. 重写方法不能使用比被重写方法更严格的访问权限 . 3. 子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题 . 4. 如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法 . 八、 this 关键字 使用 this (argument_list) 调用本类的另外的构造方法 使用 = xxx 获取本类另外一个构造方法传来的值 this可以看做一变量,它的值是当前对象引用 定义:在类的方法定义中使用 this 关键字代表使用该方法28 / 85 的对象引用 九、 1. Static 关键字 在类中,使用 static 声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对该类的所有对象 来说, static 成员变量只有一份。 2. 用 static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在 static 方法中不可访问非 static的 成 员。 - -静态方法不再是针对某个对象调用,所以不能访问非静态成员 3. 4. 可以通过对象引用或者类名 (不需实例化 )访问静态成29 / 85 员。 静态变量可以用来计数。 (main 方法可以直接调用 ) 十、 控制访问 public protected private default 1. 可修饰 class和成员变量 (成员方法 ) 2. Class: public 和 default 3. default 包权限 4. private 私有类 子类拥有私有变量的所有权,无使用权(只能看 不能动 ) 十一、 类的继承与权限控制 class extends Java 中使用 extends关键字实现类的继承机制。语法为: 通过继承,子类自动拥有了基类 (父类 )(superclass)的所有成员 (成员变量和方法 ) java只支持单继承,不允许多继承:一个子类只能有一个基30 / 85 类 一个基类可以派生出多个类 十二、 super 关键字 用 super 来引用当前基类 (父类 )的成分 就是说子类继承父类时,父类的某个方法虽然完成的不是很好但是也完成了部分功能不必重写,就用 () 调用父类的相应方法,再接着写你想实现的功能 十三、 继承中的构造方法 1. 2. 子类的构造过程中必须调用基类的构造方法。 子类可在自己的构造方法中使用 super(argument_list 参数列表 )调用基类的构造方法。 -使用 this(argument_list)调用本类另外的构造方法 补充:可以先用 super()调基类,再用 this()调子类 ,super()必须写在子类的构造过程前面! 31 / 85 -http:/blog/64759 3. 4. 5. 6. 如果子类构造方法中没有显示的调用基类构造方法则系统默认调用基类无参数的构造方法。 如果子类构造方法既没有显示地调用基类构造 方法,而基类中有没有无参数的构造方法 ,则编译出错。 文件编译的时候,子类的所有方法都要执行一遍,即有参 SubClass(int n) 和无参的SubClass( )都要执行。 更多 : Java 继承应用之小结 http:/blog/641709 -如果调用 super.必须写在子类构造方法第一行 十四、 Object类之 toString方法 1. Object 类中定义有 public String toString( )方法,起返回值是 String 类,描述当前对象的有关信息 32 / 85 2. 在进行 String 与其他类型数据的连接操作时 (如:(“info”+person), 将自动调用该对象类的 toString()方法 3. 可以根据需要在用户自定义类型中重写 toString()方法 十五、 Object类之 equals 方法 1. 2. 十六、 对象转型 父类引用指向子类对象解释: 37_对象转型 _ a instanceof Cat 判断 a 对象是不是 Cat 类型 十七、 动态绑定和多态 1. 在执行期间 (非编译期 )判断所引用对象实际类型,根据其实的类型调用其相应的方法 2. 多态存在的条件 :有继承,有重写,父类引用指向子类对象。一旦满足,当父类里被重写的方 法时,实际 new 的哪个33 / 85 子类对 象,就调用子类对象方法。 见 笔记手册 总结:多态继承重写父类引用指向子类的对象 . 3. 父类引用指向子类对象 要理解多态性,首先要知道什么是 “ 向上转型 ” 。 我定义了一个子类 Cat,它继承了 Animal类,那么后者就是前者是父类。我可以通过 Cat c = new Cat(); 实例化一个Cat的对象,这个不 难理解。 但当我这样定义时: Animal a = new Cat(); 这代表什么意思呢? 很简单,它表示我定义了一个 Animal 类型的引用,指向新建的 Cat 类型的对象。由于 Cat是继承自它的父类 Animal,所以 Animal 类型的引用是可以指向 Cat类型的对象的。 那么这样做有什么意义呢?因为子类是对父类的一个改进34 / 85 和扩充,所以一般子类在功能上较父类更强大,属性较父类更独 特, 定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。 所以,父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的; 同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用 调用; 对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。 十八、 抽象类、抽象方法 1. 2. 用 abstract 来修饰的类 /方法 规则 : 1) 2) 3) 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须重写 抽象类不能被实例化 抽象方法只需声明而不需实现 35 / 85 抽象类声明的语法形式为 abstract class Number . . . 抽象方法声明的语法形式为 public abstract (.); 十九、 Final 关键字 1. final 的变量的值不能够被改变 a) b) 2. 3. final 的成员变量 final 的局部变量 final 的方法不能够被重写 final 的类不能够被继承 public final void m( ) 方法 final int I = 9 成员 /局部变量 如: public final class String 类 36 / 85 二十、 接口 /interface 1. 2. 3. 接口是抽象方法和常量值的定义的集合 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 接口定义举例: public interface Runner (public static final) int id = 1; public (abstract) void start( );/抽象类,不需要实现 public (abstract) void run( ); public (abstract) void stop( ); 37 / 85 4. 接口特征 1) 2) 3) 接口可以多重实现 ; 接口中声明的属性必须为 public static final 的,可以不写 ; 接口中只能定义抽象方法 ,而且这些方法必须为 public abstract 的 ; 4) 5) 接口可以继承其他的接口,并添加新的属性和抽象方法 ; 与继承关系类似,接口与实现类之间存在多态性 *接口之间可以相互继承,类之间也可以相 互继承而类只能实现接口对 象实现接口的时候一定要把接口中的方法定义 接口实现 :就是实现接口,实现接口里面的所定义的抽象方法 38 / 85 5. 1) 2) 3) 接口规则 多个无关类可以实现同一接口 ,如例二 一个类可以实现多个无关接口 ,如例二 与继承关系类似接口与实现类之间存在多态性 目录 JAVA 自 学 之 路 一 : 学 会 选择 . 2 JAVA 自 学 之 路 二 : JAVA 自 学 路 线图 . 3 39 / 85 JAVA 自学之路 三 : 要动手 . 3 JAVA 自 学 之 路 四 : 要 事 为先 . 4 JAVA 自 学 之 路 五 : 问 题 解 决 之道 . 6 1 : 要 仔 细 的 观 察 错 误 的 现 象 , 是 的 , 要 仔细 . 6 2 : 要 仔 细 思 考 问 题 会 出 在 哪 些 环节 . 6 40 / 85 3:如何定位错误分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。 . 7 4 :如果还不行, google吧 . 7 5 : 什 么 ? 还 不 行 ? 那 么 就 BBS吧 . 8 6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。 . 9 7:还解决不了?是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。 . 9 JAVA 自 学 之 路 六 : 项 目 的 自学 . 9 41 / 85 JAVA 自 学 之 路 七 : 路 线 图 明细 . 10 一:J2SE . 10 二:数据库 . 10 三:JDBC . 10 四:HTML_CSS_JAVASCRIPT .42 / 85 . 11 五: Servlet & JSP . 11 六:Struts . 11 七:XML . 12 八:Hibernate . 12 43 / 85 九:Spring . 12 十: . 13 十一 :至于 SOA,对于自学的同学来说,暂时不用特别关注。 . 13 JAVA自学之路 一 : 学会选择 为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是 java,或是 .net,也有一些选择了手机、嵌入式、游戏、 3G、测试等。 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说44 / 85 法,当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。 每个培训机构都会宣传自己的好处,并不能说明大的趋势。 一些新闻文章很有可能是枪手写的,不必太过相信。国外背景的教师和课程,未 必适合你。那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路? 我讲一个通过招聘网站的观察方法。 可以到各种招聘的网站上查询信息,例如 : ,综合了各大招聘网站的数据。 这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。 比如说我在中搜索 java,全国大概提供了 3 万个职位。 位然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,而且还可以看清楚用人单位最关心的技能是什 么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,比如说swing,搜了一下,全国只有 700 个左右的职位,仔细读了45 / 85 一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,当然自己感兴趣或者为了研究的话另当别论。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。 同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,比如 .NET,我搜索到的职位数是万左右,比 java少,是不是就选 java 了呢?不一定,因为 java 职位虽然多,但是可能 竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如 J2ME。 我个人觉得 java/J2EE、 .net、嵌入式开发是不错的三个方向。 如果非要在 java和 .net中选择的话,我个人是推荐 java的,原因: 1: Java能够开发 linux、 unix服务器上的程序 2: JavaEE 和 .NET 在企业应用方面的关注点是差不多的,但是学习了 java 如果将来想转到 .net 上会比较简单,几天的46 / 85 学习然后上手开发应该是问题不大的,但是反之就不行了。 当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至少在目前, XX年 9 月,我推荐 java。 完全可以不同意我的观点,但是无庸置疑,如果是为了就业,多到招聘网站阅 读阅读职位的信息,对你将来的方向和学习是大有益处的。 选择是最痛苦的,看看天生购物狂中的刘青云就知道了,不过既然无法逃避,就作出自己的选择吧。 每个人都会受到别人的影响,在作出决定之前,要想尽各种办法让自己理性一些吧。这样,你的选择会离正确的方向更近一些。 JAVA自学之路 二 : JAVA自学路线图 有不少的同学发信给我,和我探讨 java 的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。47 / 85 这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的 JAVA 自学之路 七 :路线图明细。 首先要学 JavaSE,这是无庸置疑的。与此同时,是的,与此同时,和 JavaSE的学习同步,建议大家研 J2ME、或者 Java GUI、 Socket 编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉,好吧,暂时和它们诀别,还是向着 J2EE的方向前进吧。 在 JavaSE 完成之后,可以试着完成一些小项目,同时关注一下 掌握一种编程工具,比如说 Eclipse。 数据库,可以选择使用 JDBC,用 Java连接数据库。可以选择在这个地方切入 Struts 之后。 48 / 85 web项目必需的内容。 作一些小项目吧。比如 BBS、留言系统、学籍管理、商城等等,随便找一些业 务逻辑比较简单的来做一做: Struts, MVC 的典型应用, Hibernate, OR Mapping 的典范之作。 Spring IOC + AOP,面向对象 面向切面,完善的旅程。把以前自己的小项目加入 Struts、Spring、 Hibernate 的元素吧。去研究各种商业项目 java在走了很多弯路后的回归之作,值得研 在后面,我会告诉你每一步的学习方法和学习重点。 JAVA自学之路 三 : 要动手 无论如何,请坚持不懈的动手实验! 学习 Java 要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说 :老师我看了视频了 ,可是怎么一动手就没有任何思路呢 ? 对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这49 / 85 些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗? 作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自 己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。 所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克, 再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。 如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。 50 / 85 提 一个子母的写,这就不再是程序员了,成了打字员了。 纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。 JAVA自学之路 四 : 要事为先 对于一个以前从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高镍电池基础知识培训课件
- 济南市2025-2026学年七年级上学期语文期末模拟试卷
- 集安市2025-2026学年九年级上学期语文月考模拟试卷
- 电解池原理课件
- 电表费控开关课件
- 电表箱用电知识培训课件
- 高血压发病机理课件
- 电脑培训知识课件
- 第14课《回忆我的母亲》课件-2025-2026学年统编版语文七年级上册
- oraclesql考试题及答案
- 2024有限公司生产安全事故应急预案
- 2025四川农商联合银行笔试题库及答案
- 三级养老护理员职业技能鉴定理论考试题(附答案)
- 机场考试试题大全及答案
- 单位食堂劳务外包服务投标方案(技术方案)
- 建筑工程施工质量事故应急预案
- 颈椎科普小知识
- 电梯有限空间作业安全专项施工方案
- 川教版小学英语六年级上册全册教案
- 2025年福建南平市武夷山水茶业有限公司招聘笔试参考题库含答案解析
- 2025-2030年中国液压系统行业市场全景评估及未来趋势研判报告
评论
0/150
提交评论