`
- 浏览:
71766 次
- 性别:
- 来自:
杭州
-
1、所有的对象都是在堆中构造的。
2、不要在构造器中定义与实例域重名的局部变量。
3、只要方法是私有的,类的设计者就可以确信:它不会被外部的其它类操作调用,可以将其删除。如果方法是公有的,就不能删去,因为其它的代码可能调用它。
4、在下面两种情况下使用静态方法:
(1) 一个方法不需要访问对象状态,其所需参数都是通过显示参数提供(例如:Math.pow)。
(2) 一个方法只需访问类的静态域
5、返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型的方法。
6、初始化数据域的方法
(1) 在构造器中设置值。
(2) 在声明中赋值。
(3) 初始化块。
7、首先运行初始化块,然后才运行构造器的主体部分。
8、调用构造器的具体处理步骤:
(1) 所有数据域初始化为默认值(0,false或null)。
(2) 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
(3) 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
(4) 执行这个构造器主体。
9、类设计技巧
(1) 一定将数据设计为私有。
(2) 一定要对数据初始化。
(3) 不要在类中使用过多的基本数据类型。
(4) 不是所有的域都需要独立的域访问器和更改器。
(5) 使用标准格式进行类的定义。
(6) 将职责过多的类进行分解。
(7) 类名和方法名要体现它们的职责。
10、动态绑定与静态绑定
对象方法的执行过程
(1) 编译器查看对象的声明类型和方法名。
(2) 接下来,编译器将查看调用方法时提供的参数类型。
(3) 如果是private方法、static方法、final方法或者构造器,那么编译器将可以准确地知道该调用哪个方法,我们将这种调用方法称为静态绑定。与此对应的是,调用方法依赖于隐式参数的实际类型,并且在运行时实现动态绑定。
(4) 当程序运行,并且采用动态绑定调用方法时,虚拟机一定调用与所引用对象的实际类型最合适的那个类的方法。
[color=red]Note:虚拟机预先为每个类创建了一个方法表,其中列出了所有方法的签名和实际调用的方法。在真正调用方法的时候,虚拟机仅查找这个表就行了。
11、反射:能够分析类能力的程序被称为反射。可以用反射机制作如下事情:
(1) 在运行中分析类。
(2) 在运行中查看对象,例如,编写一个toString供所有类使用。
(3) 实现数组的操作代码。
(4) 利用Method对象,这个对象很像C++中的函数指针。
12、程序的内存分配:一个由C/C++编译的程序占用的内存分以下几个部分:
(1) 栈区(stack)----由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
(2) 堆区(heap)----一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。它与数据结构中的堆是两回事,分配类似于链表。
(3) 全局区(静态区)----全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
(4) 文字常量区----常量字符串就是放在这里的。程序结束后由系统释放。
(5) 程序代码区----存放函数体的二进制代码。
13、Map<Integer, Object> map = new HashMap<Integer, Object>();
ArrayList<Object> list = new ArrayList<Object>();
将list的值映射到map中,若想改变list的值而不影响map的值,map映射的时候保存list的克隆。
即map.peu(1,list.clone());
14、继承设计的技巧
(1) 将公共操作和域放在超类。
(2) 不要使用受保护的域。
(3) 使用继承实现"is-a"关系。
(4) 除非所有继承的方法都有意义,否则不要使用集成。
(5) 在覆盖方法时,不要改变预期的行为。
(6) 使用多态,而非类型信息。
(7) 不要过多的使用反射。
15、Arrays类中的sort方法承诺可以对对象数组进行排序,但对象所属的类必须实现了Comparable接口,并且元素之间必须是可比较的。
16、任何实现了Comparable的类都需要包含compareTo方法,并且这个方法的参数是一个Object对象,返回一个整型数值。
17、对象克隆
(1) 为了实现深拷贝,必须实现所有可变的实例域。
(2) 对于每一个类,都需要作出下列判断:
<1> 默认的clone方法是否满足要求。
<2> 默认的clone方法是否能够通过调用可变子对象的clone得到修补。
<3> 是否应该是有clone
实际上,选项<3>是默认的。如果要选择<1>或<2>,类必须实现:1>实现cloneable接口;2>使用public访问修饰符重新定义clone方法。
18、使用内部类的原因有以下三点:
(1) 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
(2) 内部类可以对同一个包中的其它类隐藏起来。
(3) 当想定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。
19、代理
(1) 要想创建一个代理对象,需要使用Proxy类的newProxyInstance方法。这个方法有三个参数:
1> 一个类加载器。目前用null表示默认的类加载器。
2> 一个class对象数组,每个对象都是需要实现的借口。
3> 一个调用处理器。
(2) 使用代理的原因:
1> 路由对远程服务器的方法调用。
2> 在程序运行期间,将用户接口事件与动作关联起来。
3> 为调试,跟踪方法调用。
20、集合List,Set,Queue,Map(后面将发表文章,JAVA数据结构与算法的学习心得,更加深入地理解)
(1) List属于线性结构,它里边有ArrayList和LinkedList两个分支,ArrayList主要用于查询(一般用于不经常添加删除的程序),LinkedList主要用于添加和删除较频繁的程序。
(2) Set包含的元素没有重复的,里边主要有HashSet,TreeSet,LinkedHashSet。HashSet查询速度快,但顺序是被打乱的,TreeSet按照字典排序排列但速度较慢,LinkedHashSet按照添加的顺序排列元素并且具有HashSet一样的查询速度。
(3) Queue,先进先出,一般用LinkedList实现。
(4) Map是映射集,一般形式为Map<key,value>。[/color]
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
笔记记录分享-笔记记录分享网站-笔记记录分享网站源码-笔记记录分享网站java代码-笔记记录分享网站设计与实现-基于springboot的笔记记录分享网站-基于Web的笔记记录分享网站设计与实现-笔记记录分享项目-笔记记录...
笔记记录分享-笔记记录分享网站-笔记记录分享网站源码-笔记记录分享网站java代码-笔记记录分享网站设计与实现-基于springboot的笔记记录分享网站-基于Web的笔记记录分享网站设计与实现-笔记记录分享项目-笔记记录...
笔记记录分享-笔记记录分享系统-笔记记录分享系统源码-笔记记录分享管理系统-笔记记录分享管理系统java代码-笔记记录分享系统设计与实现-基于springboot的笔记记录分享系统-基于Web的笔记记录分享系统设计与实现-...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。...这种格式的优点在于简洁、...同时,Markdown格式使得笔记易于编辑和分享,是个人学习和团队协作的理想选择。
最后,笔记还可能包含了实际项目开发中的经验分享,如MVC框架Spring的使用、数据库操作、Web开发、单元测试等。这些实战经验能让读者了解如何将理论知识应用到实际项目中,提升解决实际问题的能力。 总而言之,...
这份"18天Java笔记"提供了一个快速学习Java的核心内容精华,适合初学者和有一定经验的开发者进行回顾和巩固。txt版的格式使得笔记易于阅读和在不同设备上分享。 Java的基础知识包括语法、数据类型、控制流、类与...
【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...
3. **Markdown支持**:许多笔记应用允许使用Markdown语法来格式化文本,Java中可以使用库如Pandoc或CommonMark来解析和渲染Markdown。 4. **代码编辑器组件**:构建一个编程笔记本,需要一个强大的代码编辑器组件,...
Java重点学习笔记
【Java云笔记代码与文档】项目是一个以Java技术为核心的云端笔记应用实现,旨在提供一个便捷、高效的在线笔记存储和管理平台。在这个项目中,开发者利用Java的特性与强大的开源库,构建了一个支持多用户、多设备同步...
Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...
“java笔记”意味着这是一份关于Java编程的详细记录,可能包含了代码示例、问题解析和实战经验分享;“学生管理系统”则表明了这是一个具体的项目案例,可以帮助学习者将理论知识应用于实际场景。 【压缩包子文件的...
而将Java代码整理后存入有道云笔记的过程,既可以帮助开发者整理学习和工作中的代码,也能便于和其他开发者分享交流。 在这个过程中,首先需要使用一个能够处理和格式化代码的工具,如在线代码高亮工具,它能够将...
传智播客毕向东java笔记,比较全面,毕向东老师上课的代码,总结基本都有,分享给大家。
最后,"java笔记"这部分,可能是作者在学习和开发过程中所做的详细笔记,可能包含了一些独特的见解和技巧,或者是对某些难点的深入解析。这种实践经验的总结往往能给出许多书本上找不到的宝贵提示,对于解决实际问题...
【Java云笔记】是一款基于Java技术开发的在线云笔记应用,它允许用户在任何设备上创建、存储和共享他们的...这些知识点共同构建了Java云笔记的架构和技术栈,使得用户能够方便地在云端创建、管理和分享自己的知识财富。
【标题】:“达内学习笔记,java笔记” 这篇学习资源主要涵盖了在达内教育机构学习Java编程的相关笔记,包括但不限于基础语法、面向对象编程、集合框架、异常处理、多线程、I/O流、网络编程等方面。达内教育作为...
java 前端 数据库 ssm笔记,java 前端 数据库 ssm笔记,java 前端 数据库 ssm笔记,java 前端 数据库 ssm笔记,java 前端 数据库 ssm笔记