对于Java开发学习者来说,基础掌握的知识点有以下几种:
1. Java面向对象的优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
2. Java虚拟机的概念,任何一种可以运行Java字节码的软件均可看成是Java的虚拟机(JVM)
3. JDK顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的。它除了包括完整的JRE(Java Runtime Environment),Java运行环境,还包含了其他供开发者使用的工具包。
4. JRE的概念,普通用户而只需要安装JRE(Java Runtime Environment)来运行Java程序。而程序开发者必须安装JDK来编译、调试程序。
5. Java中覆盖(Override)是指子类对父类方法的一种重写,子类只能抛出比父类更少的异常,且访问权限不能比父类的小。被覆盖的方法不能是 private 的,否则只是在子类中重新定义了一个方法。
Java中重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同。
第2章 一切都是对象2.1 用句柄操纵对象2.2 必须创建所有对象2.2.1 保存在什么地方2.2.2 特殊情况:主类型2.2.3 Java中的数组2.3 绝对不要清除对象2.3.1 作用域2.3.2 对象的作用域2.4 新建数据类型:类2.4.1 字段和方法2.5 方法、自变量和返回值2.5.1 自变量列表2.6 构建Java程序2.6.1 名字的可见性2.6.2 使用其他组件2.6.3 static关键字2.7 我们的第一个Java程序2.8 注释和嵌入文档2.8.1 注释文档2.8.2 具体语法2.8.3 嵌入HTML2.8.4 @see:引用其他类2.8.5 类文档标记2.8.6 变量文档标记2.8.7 方法文档标记2.8.8 文档示例2.9 编码样式2.10 总结2.11 练习 第3章 控制程序流程3.1 使用Java运算符3.1.1 优先级3.1.2 赋值3.1.3 算术运算符3.1.4 自动递增和递减3.1.5 关系运算符3.1.6 逻辑运算符3.1.7 按位运算符3.1.8 移位运算符3.1.9 三元if-else运算符3.1.10 逗号运算符3.1.11 字串运算符+3.1.12 运算符常规操作规则3.1.13 造型运算符3.1.14 Java没有“sizeof”3.1.15 复习计算顺序3.1.16 运算符总结3.2 执行控制3.2.1 真和假3.2.2 if-else3.2.3 反复3.2.4 do-while3.2.5 for3.2.6 中断和继续3.2.7 切换3.3 总结3.4 练习 第4章 初始化和清除4.1 由构建器保证初始化4.2 方法过载4.2.1 区分过载方法4.2.2 主类型的过载4.2.3 返回值过载4.2.4 默认构建器4.2.5 this关键字4.3 清除:收尾和垃圾收集4.3.1 finalize()用途何在4.3.2 必须执行清除4.4 成员初始化4.4.1 规定初始化4.4.2 构建器初始化4.5 数组初始化4.5.1 多维数组4.6 总结4.7 练习 第5章 隐藏实施过程5.1 包:库单元5.1.1 创建独一无二的包名5.1.2 自定义工具库5.1.3 利用导入改变行为5.1.4 包的停用5.2 Java访问指示符5.2.1 “友好的”5.2.2 public:接口访问5.2.3 private:不能接触5.2.4 protected:“友好的一种”5.3 接口与实现5.4 类访问5.5 总结5.6 练习 第6章 类再生6.1 合成的语法6.2 继承的语法6.2.1 初始化基础类6.3 合成与继承的结合6.3.1 确保正确的清除6.3.2 名字的隐藏6.4 到底选择合成还是继承6.5 protected6.6 递增开发6.7 上溯造型6.7.1 何谓“上溯造型”?6.8 final关键字6.8.1 final数据6.8.2 final方法6.8.3 final类6.8.4 final的注意事项6.9 初始化和类装载6.9.1 继承初始化6.10 总结6.11 练习 第7章 多形性7.1 上溯造型7.1.1 为什么要上溯造型7.2 深入理解7.2.1 方法调用的绑定7.2.2 产生正确的行为7.2.3 扩展性7.3 覆盖与过载7.4 抽象类和方法7.5 接口7.5.1 Java的“多重继承”7.5.2 通过继承扩展接口7.5.3 常数分组7.5.4 初始化接口中的字段7.6 内部类7.6.1 内部类和上溯造型7.6.2 方法和作用域中的内部类7.6.3 链接到外部类7.6.4 static内部类7.6.5 引用外部类对象7.6.6 从内部类继承7.6.7 内部类可以覆盖吗?7.6.8 内部类标识符7.6.9 为什么要用内部类:控制框架7.7 构建器和多形性7.7.1 构建器的调用顺序7.7.2 继承和finalize()7.7.3 构建器内部的多形性方法的行为7.8 通过继承进行设计7.8.1 纯继承与扩展7.8.2 下溯造型与运行期类型标识7.9 总结7.10 练习 第8章 对象的容纳8.1 数组8.1.1 数组和第一类对象8.1.2 数组的返回8.2 集合8.2.1 缺点:类型未知8.3 枚举器(反复器)8.4 集合的类型8.4.1 Vector8.4.2 BitSet8.4.3 Stack8.4.4 Hashtable8.4.5 再论枚举器8.5 排序8.6 通用集合库8.7 新集合8.7.1 使用Collections8.7.2 使用Lists8.7.3 使用Sets8.7.4 使用Maps8.7.5 决定实施方案8.7.6 未支持的操作8.7.7 排序和搜索8.7.8 实用工具8.8 总结8.9 练习 第9章 违例差错控制9.1 基本违例9.1.1 违例自变量9.2 违例的捕获9.2.1 try块9.2.2 违例控制器9.2.3 违例规范9.2.4 捕获所有违例9.2.5 重新“掷”出违例9.3 标准Java违例9.3.1 RuntimeException的特殊情况9.4 创建自己的违例9.5 违例的限制9.6 用finally清除9.6.1 用finally做什么9.6.2 缺点:丢失的违例9.7 构建器9.8 违例匹配9.8.1 违例准则9.9 总结9.10 练习 第10章 Java IO系统10.1 输入和输出10.1.1 InputStream的类型10.1.2 OutputStream的类型10.2 增添属性和有用的接口10.2.1 通过FilterInputStream从InputStream里读入数据10.2.2 通过FilterOutputStream向OutputStream里写入数据10.3 本身的缺陷:RandomAccessFile10.4 File类10.4.1 目录列表器10.4.2 检查与创建目录10.5 IO流的典型应用10.5.1 输入流10.5.2 输出流10.5.3 快捷文件处理10.5.4 从标准输入中读取数据10.5.5 管道数据流10.6 StreamTokenizer10.6.1 StringTokenizer10.7 Java 1.1的IO流10.7.1 数据的发起与接收10.7.2 修改数据流的行为10.7.3 未改变的类10.7.4 一个例子10.7.5 重定向标准IO10.8 压缩10.8.1 用GZIP进行简单压缩10.8.2 用Zip进行多文件保存10.8.3 Java归档(jar)实用程序10.9 对象串联10.9.1 寻找类10.9.2 序列化的控制10.9.3 利用“持久性”10.10 总结10.11 练习 第11章 运行期类型鉴定11.1 对RTTI的需要11.1.1 Class对象11.1.2 造型前的检查11.2 RTTI语法11.3 反射:运行期类信息11.3.1 一个类方法提取器11.4 总结11.5 练习 第12章 传递和返回对象12.1 传递句柄12.1.1 别名问题12.2 制作本地副本12.2.1 按值传递12.2.2 克隆对象12.2.3 使类具有克隆能力12.2.4 成功的克隆12.2.5 Object.clone()的效果12.2.6 克隆合成对象12.2.7 用Vector进行深层复制12.2.8 通过序。
建议你看本书《Think in java》。上边的讲解很容易懂。
学java:
先把基本语法搞懂,你学过C++,java的语法和C++很像。你只要着重把他们不同的地方学清楚就行。
然后搞懂类。java纯面向对象的。所有的代码都在类中。所以你要把java中重要的类学一遍。比如流类,集合类,数据库操作类,网络编程的类等。当然,在这之前你要把java面向对象的思想弄懂,和C++有什么区别。这样你学习类的时候就容易多了。
最后多实践点,学了类之后,就用你学的类写点小程序,加深理解。
API说白了就是别人写好的类。像上边说的流类,集合类等都是API。API都有相应的文档供我们学习。你学java基础,一般在下载JDK时会同时下载下相应的文档。没有的话你可以到官方网站上去下载。
1、对象的初始化(1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。
基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。
※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。
(2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。
2、继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。
(3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。
(4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。
3、关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是 第一条语句。
4、有关public、private和protected (1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个类 在同一文件夹中,c.两个类在同一软件包中。 (2) protected:继承类和同一软件包的类可访问。
(3) 如果构造方法为private,那么在其他类中不能创建该类的对象。 5、抽象类 (1) 抽象类不能创建对象。
(2) 如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。 (3) 继承抽象类的类在类中必须实现抽象类中的抽象方法。
(4) 抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private。
(5) 间接继承抽象类的类可以不给出抽象方法的定义。 6、final关键字 (1) 一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操作。
(2) 常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化 。 (3) final修饰的方法不能被重置(在子类中不能出现同名方法)。
(4) 如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据 成员可为final也可不是。 7、接口interface (用implements来实现接口) (1) 接口中的所有数据均为 static和final即静态常量。
尽管可以不用这两个关键字修饰 ,但必须给常量赋初值。 (2) 接口中的方法均为public,在实现接口类中,实现方法必须可public关键字。
(3) 如果使用public来修饰接口,则接口必须与文件名相同。 8、多重继承 (1) 一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗 号分隔。
(2) 接口之间可多重继承,注意使用关键字extends。 (3) 一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口 继承的接口的方法,接口中的所有方法均须在类中实现。
9、接口的嵌入 (1) 接口嵌入类中,可以使用private修饰。此时,接口只能在所在的类中实现,其他类不 能访问。
(2) 嵌入接口中的接口一定要为public。 10、类的嵌入 (1) 类可以嵌入另一个类中,但不能嵌入接口中。
(2) 在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来取得。 手段有两种: class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); } (3) 一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构造方法不能自动 被调用,这样就需要在子类的构造方法中明确的调用超类的构造方法。
接上例: class C extends A.B { C() { new A().super(); // 这一句就实现了对内部类构造方法的调用。 } } 构造方法也可这样写: C(A a) { a.super(); } // 使用这个构造方法创建对象,要写成C c = new C(a); a是A的对象。
11、异常类 JAVA中除了RunTimeException 类,其他异常均须捕获或抛出。至于数据库,WEB,JSP,JS之类的那是高级部分了。
java基础知识如下:
1.继承、类extends,只能有一个父类,super调用父类,
2.方法重构(名字相同参数不同),
3.多态(子类的多样), final不能继承-可以被匿名类引用,
上转型。
4.接口、interface 名,没有方法体,只能implement实现接口,可以多实现,为实现类提供实现方法的模板规范,可以有成员变量,接口回调。
5.抽象类、abstract 类,含有抽象方法的类,可以含有非抽象方法,只能继承不能new,和接口的功能类似。
6.泛型类、class 名称<;泛型列表>;(不能是基本类型),声明泛型 。
7.内部类、在类内部定义的类,只能被这个类使用。
8.匿名类、将一个类的实现作为一个参数。
9.异常类、自定义一个类 MyException继承Exception类,当执行 StringBuffer类,可以操作字符串的内容(截取,代替,获取);StringTokenizer类,可以解析字符串,有两个构造方法StringTokenizer(字符串,分隔符),分隔符的任意排列组合,返回结果集,hasMoreTokenizer是否为false来判断,nextTokens()来获取下一个对象。
10.正则表达式、字符串对象调用matches(正则表达式),判断是否和正则表达式匹配,返回boolean类型;字符串对象调用replaceAll(正则表达式,替换的字符串)产生一个将匹配正则表达式的字串替换后的新的字符串对象;字符串调用split(正则表达式),返回一个字符串数组,以正则表达式作为分隔符。
11.字符串解析、用Scanner(字符串)类来分隔字符串,Scanner对象调用useDelimiter(正则表达式)来设置分隔符,返回一个结果集,可以精细化的获取数字型的结果,和非数字型的结果,hasNext()判断,next/nextInt/nextDouble获取下一个。
12.模式匹配、建立模式对象Pattern.compile(正则表达式),建立匹配对象 Pattern对象.matcher(目标字符串),返回结果集,Matcher对象调用方法find()寻找返回Boolean(类似next()+hasNext()),group()返回匹配的字符串,replaceAll(替换的字符串)返回一个替换了所以匹配的字串的新的字符串,模式可以用|来连接,即正则表达式1|正则表达式2。
-A- AJAX: (建议不译,原因:专有名词) [Asynchronous JavaScript and XML,异步JavaScript及XML] annotation: 注解 Ant: (建议不译,原因:专有名词) AOP: (建议不译,原因:专有名词) [aspect-oriented programming, 面向层面编程] application: 应用 argument: 参数 -B- B2B: (建议不译,原因:专有名词) [Business-to-Business, 业务对业务] BAM: (建议不译,原因:专有名词) [Business Activity Monitoring, 业务活动监测] BMP: (建议不译,原因:专有名词) [bean-managed persistence, Bean管理的持久化] BPEL: (建议不译,原因:专有名词) [Business Process Excution Language, 业务流程执行语言] BPM: (建议不译,原因:专有名词) [Business Process Modeling, 业务流程建模] build: 建立;编译 -C- C2B: (建议不译,原因:专有名词) [Consumer-to-Business, 客户对业务] CAD: (建议不译,原因:专有名词) [Computer Aided Design, 计算机辅助设计] CAM: (建议不译,原因:专有名词) [Computer Aided Modeling, 计算机辅助建模] case-insensitive: 大小写不敏感 case-sensitive: 大小写敏感 container: 容器 cluster: 集群 CMP: (建议不译,原因:专有名词) [container-managed persistence, 容器管理的持久化] component: 组件,部件 configuration: 配置 context: 上下文,环境 control: 控件 convention: 约定 CORBA: (建议不译,原因:专有名词) [Common Object Request Broker Architecture,公共对象请求代理体系] COS: (建议不译,原因:专有名词) [Common Object Services,公共对象服务] couple: 耦合 CRUD: 专指数据库操作create, read, update, delete,可以不译 -D- Daemon: (建议不译,原因:专有名词) [Internet中用于邮件收发的后台程序] DAO: (建议不译,原因:专有名词) [Data Access Object, 数据访问对象] data: 数据 DBMS: (建议不译,原因:专有名词) [Database Management System, 数据库管理系统] DDL: (建议不译,原因:专有名词) [Data Definition Language, 数据定义语言] Declarative Programming: 声明式编程 delegate: 委托 Dependency Injection: 依赖注入 deploy: 部署 deserialize: 反序列化(也可译为反串行化),即取出 dialect: (行业)术语 directive: 指令 DIT: (建议不译,原因:专有名词) [Directory Information Tree, 目录信息树] DML: (建议不译,原因:专有名词) [Data Manipulation Language, 数据操作语言] DNS: (建议不译,原因:专有名词) [Internet Domain Name System, 因特网域名系统] domain: 域 DSL: (建议不译,原因:专有名词) [Domain-Specific Languages, 特定领域语言] DTOs: (建议不译,原因:专有名词) [data transfer objects, 数据传输对象] -E- EAI: (建议不译,原因:专有名词) [Enterprise Application Integration: 企业应用集成] ECC: (建议不译,原因:专有名词) [error correcting codes: 错误纠正代码] EIS: (建议不译,原因:专有名词) [Enterprise Information System: 企业信息系统] EJB: (建议不译,原因:专有名词) [Enterprise JavaBean, 企业JavaBean] encapsulate: 封装 ESB: (建议不译,原因:专有名词) [Enterprise Service Bus, 企业服务总线] event: 事件 -F- FAQs: (建议不译,原因:专有名词) [Frequently Asked Questions, 经常提问的问题] FIFO: 先进先出 [First in, First out] fire: 触发 firewall: 防火墙 framework: 框架 function: 函数 -G- GoF: "四人帮",对名著Design Patterns-Elements of Reusable Object-Oriented Software的四名作者的"戏"称。
[Gang of Four] granularity: 颗粒性,颗粒度 GUI: (建议不译,原因:专有名词) [Graphic User Interface: 图形用户接口] GUID: (建议不译,原因:专有名词) [Globally Unique Identifier: 全球唯一标识符] -H- hard-coding: 硬碥码 Hibernate: (建议不译,原因:专有名词) [一种为应用程序提供持久化服务的框架] -I- IDE: 集成开发环境 [Integrated Development Environment] implement: 实现 internet: 因特网 (也可以不译,原因:在中文环境下已经得到充分理解及认同) intranet: 企业内部网 IoC: (建议不译,原因:专有名词) [Inversion of Control, 控制反转] -J- JavaBean: (建议不译,原因:专有名词) JCP: (建议不译,原因:专有名词) [Java Community Process, Java社区研究] JDBC: (建议不译,原因:专有名词) [Java DataBase Connectivity, Java数据库连接] JDO: (建议不译,原因:专有名词) [Java Data Objects, Java数据对象] JES: Java企业系统 [Java Enterprise System] JOnAS: (建议不译,原因:专有名词) [ Java Open Application Server, Java开放应用服务器] JNDI: (建议不译,原因:专有名词) [Java Naming and Directory Interface, Java命名与目录接口] JTA: (建议不译,原因:专有名词) [Java Transaction API: Java事务API] JVM: (建议不译,原。
实现排序有好几种,我随便写一种给你参考下吧。
EXP:实现Comparator接口来比较对象,实现排序功能。1.定义一个学生类Student .java,须重写toString()方法。
public class Student { private String name; private int age; private int score; public Student(String name, int age, int score) { super(); this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public String toString() { return "Student [name=" + name + ", age=" + age + ", score=" + score + "]"; }}2.写一个比较类MyComparator.java,须实现Comparator接口public class MyComparator implements Comparator<Student> { public int compare(Student s1, Student s2) { if (s1.getScore() > s2.getScore()) { return 1; } else if (s1.getScore() < s2.getScore()) { return -1; } else { return 0; } }}3.写一个测试类Test.javapublic class Test { public static void main(String args[]) throws IOException { new Test().sort(); } private void sort() { Student s1 = new Student("小明", 20, 150); Student s2 = new Student("小艾", 20, 100); Student s3 = new Student("小白", 20, 190); Student s4 = new Student("小黑", 20, 90); Student s5 = new Student("小黄", 20, 130); List<Student> list = new ArrayList<Student>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); list.add(s5); Collections.sort(list, new MyComparator()); System.out.println(list); }} 4.输出结果:[Student [name=小黑, age=20, score=90], Student [name=小艾, age=20, score=100], Student [name=小黄, age=20, score=130], Student [name=小明, age=20, score=150], Student [name=小白, age=20, score=190]]。
可以直接学,先学习变量,语法,面向对象,看完书就多练习,有个半年就可以继续学习后面的了,基础部分多下点功夫,以后省很多功夫,当然我现在学习java只需要3天就可以完成这部分,因为我已经有c++的基础了
然后是可以考虑学习下JSP,不学也可以,不学的话就应该学习java的程序设计了,就是桌面程序的!SWT和AWT是什么,什么是SWING,这些都要知道~
然后是学下TCP/IP和UDP,做个小程序,然后就随便了,要有项目才能提高,光看书不行的
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:4.176秒