- 浏览: 175354 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
mncc:
太好了!!!Mark一下!不过貌似那个冒泡的还少个右下角吧? ...
Google Maps 图标地址收藏 -
ivorytower:
去年5月捡了命回来,现在不评论那些豆腐渣工程……
汶川地震留给我们什么?单单建什么地震纪念馆是没有用的 -
lgx2351:
wtusmchen 写道blog写的不错啊,以后多过来学习:) ...
js学习笔记2-函数 -
wtusmchen:
blog写的不错啊,以后多过来学习:)
js学习笔记2-函数
1 、 为对象在使用前,都需要初始化。所以我们在写一类时,必须有一个构造函数。如果没有写,那么编绎器会自动用默认的构造器。但是,如果你有定义构造函数,那么编绎器是不会给你产生默认构造函数的。
2 、 我们常常需要继承一个类,而这个新的类也可能需要有自己的构造函数,这时候对于构造函数来讲,就有了重载的概念。
3 、 在新类的构造器中也常常要调用基类的构造器,这时候就要用到 this ,那么,我们就要讲讲 this :
public calss GisClass{ GisClass(int width,int height){ this.width = width; this.height = height; } void doPan(){}; } public class UseGisClass{ public static void main(String[] args){ GisClass aGis = new GisClass(1,2); GisClass bGis = new GisClass(1,2); aGis.doPan(); bGis.doPan(); } }
在以上的代码中,我们怎么知道 doPan() 方法到底是被 aGis 对象还是被 bGis 对象调用了呢?其实, doPan() 方法被在被对象调用时会暗中把调用它的对象传入到方法体内 。所以,如果你想在方法的内部得到对调用它的当前对象的引用,可以用 this 。
this 只能用在方法的内部,表示“调用方法的那个对象” 的引用 。
注意的是,在一个类的内部,一个方法要调用类的另一个方法,并不需要写 this ,直接调用即可。当前方法中的 this 引用会自动应用于同一类中的其它方法。
this 也常常用到一个类的一个方法的返回对象值,如下:
public class Leaf{ int i = 0; Leaf increment(){ i++; return this; } void methodprint(){System.out.print(i);} public static void main(String[] args){ Leaf l = new Leaf(); l.increment().increment().increment().increment().methodprint(); } }
在以上我们说的 this 都是指对象,而构造器里的 this 明确地表明是对基类的构造器的引用。这里注意的一点是,构造器里不能用两次 this 。
或者,我们常常用如下语句来写构造函数:
public class GisClass{ GisClass(int width,int height){ this.width = width; this.height = height; } }
这种方式用的 this ,是说明传入的参数与类成员名字相同,而我们为了产生歧义,使用 this 来代表数据成员。
4 、讲完了 this ,讲讲与它关系比较紧密的 static 。
Static 方法就是没有 this 的方法,在 static 方法内部不能调用非静态方法,反过来就可以。对于 static 方法,在没有创建对象前,只能通过类开访问调用它。这衽是 static 方法的所有内容。这有点像全局方法, java 中禁止使用全局方法,但是你在类中用了 static 方法,就可以用它来访问其它的 static 方法和 satic 域。
5 、讲了初始化,具体讲讲数组的初始化。
数组就是相同类型、用一个标识符名称封装在一起的一个对象序列或基本类型数据序列。
数组我们最常用的是用 [ ] 来访问它的元素。
定义数组如下:
int[] a = new int[length]; int[] a = {1,2,3} int[] a = {new Integer(1),new Integer(2),new Integer(3)}
注意的是:如果一个数组引用赋值给了另一个数组引用,当其中一个改变数组元素时,访问另一个数组引用时元素的值也是改变了的。如下:
public class TestArray{ public static void main(String[] args){ int[] a1 = {1,2,3}; int[] a2; a2 = a1; for(int I=0;I<3;I++){a2[i]=I*2;} for(int I : a1){print(a[i])} } }
以上代码中,因为 a1 与 a2 指向相同的数组,所以通过 a2 改变了数组,所做的修改在 a1 里也能够看得到。
下面讲讲数组的可变参数列表。
public Class TestVarArgs{ static void printArgs(Object[] args){ for(Object o : args){ print(o + “”); } } public static void main(String[] args){ printArgs(new Object[]{1,2,3}); printArgs(new Object[]{new Integer(1),new Integer(2),new Integer(3)}); } }
以上代码 printArgs 中传入的参数是一个数组,如果我们不想使用数组,而用可变参数,如下:
public Class TestVarArgsNoArray{ static void printArgs(Object… args){ for(Object o : args){ print(o + “”); } } public static void main(String[] args){ printArgs(1,2,3); printArgs(new Integer(1),new Integer(2),new Integer(3)); printArgs(new Object[]{1,2,3});//array is also ok printArgs();//empty is ok } }
有了可变参数,就不用去用数组了,因为实质上编绎器会自动地去填充数组。从以上可知,用可变参数,就算是数组、不是数组、空都行。可见,当要用可选的参数时,可变参数是一种很好的解决方案。
然而对于方法的重载,因为可变参数的原因,我们只能在重载方法的一个版本上使用可变参数列表,或是压根就不用它。
6 、枚举:
当我们需要群组处理时可以用枚举。
public enum EnumDegree{ LOWEST,LOW,MEDIA,HIGH,HIGHEST }
枚举的 ordinal() 方法表明特定的 enum 常量的顺序。以及它的 static values() 方法得到常量值构成的数组:
public class TestEnum{ public static void main(String[] args){ for(EnumDegree e : EnumDegree.values()){ printl(e + “” + e.ordinal()); } } }
我们可以把枚举当作一种数据类型来使用,也可以当作类来使用。
枚举有个很常用的特性,它常与 switch 一起来使用。
public class TestSwitchEnum{ private String degree; public TestSwitchEnum(degree){ this. degree = degree; } void methodSwitch(){ switch(degree){ case LOWEST: case LOW: } } public static void main(String[] args){ TestSwitchEnum twe01 = new TestSwitchEnum(TestEnum. LOWEST); TestSwitchEnum twe02 = new TestSwitchEnum(TestEnum. LOW); TestSwitchEnum twe03 = new TestSwitchEnum(TestEnum. MEDIA); twe01 .methodSwitch(); twe02 .methodSwitch(); twe03 .methodSwitch(); } }
由于 switch 在有限的值里选择,因此它与 enum 一起配合是很好的组合。
其实,我们用 enum ,是可以用 enum 创建数据类型,这个数据类型里存放着一些常量,然后直接把它们拿来用就行了。
7 、 foreach 语句:
最后,因为我们用到了很多的 foreach ,讲讲它。
Foreach 什么时候用呢?一般我们用它来访问数组和容器。用了它就不用像以前一样用计数器来计数,它将产生每一项元素。不要产生每一项,说明了我们只是得到每一个元素,并不需要得到每个元素的一些细节,这时候用 foreach 反而更加简洁。
发表评论
-
判断一个url是否连接正常
2012-01-13 19:45 180try { ... -
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
2012-01-06 10:03 0http://blog.csdn.net/myloon/art ... -
安装Oracle运行pl/sql developer(转)
2011-06-09 16:48 972Sql客户端中,虽然最便捷的是万能而且轻量无比的Sql Wor ... -
boss部署时出现的 Bad version number in .class file错误
2011-03-11 17:32 1013http://blog.sina.com.cn/s/blog_ ... -
ireport制作报表
2011-01-19 16:34 1189ireport制作报表好早以前用过,过了一段时间再做,发现都忘 ... -
Eclipse+MyEclipse安装及环境配置
2010-12-14 10:22 958为了方便更多的人,写了这个! MyEclipse是 ... -
上传下载总结
2010-07-19 11:40 172这里的上传是上传到数据库的blob字段中。前台的代码省略 ... -
对java对象和jsp的理解
2010-07-19 11:10 0一:对jsp的理解 jsp其实就是servlet ... -
Eclipse快捷键
2010-06-19 16:20 858编辑相关快捷键 Eclipse的编辑功能非常强大 ... -
eclipse快捷键
2010-05-15 11:02 803作用域 功能 快捷键 ... -
关于java的一些公共方法总结(不断更新)
2010-03-05 11:06 239工作总结,不说多,直接上代码 public class Ut ... -
HttpServletResponse的处理封装(将不断更新)
2010-03-05 11:04 370工作总结,不说多,直接上代码: public class H ... -
HttpServletRequest的处理封装(将不断更新)
2010-03-05 11:03 1700不多说了,时常工作整理的,直接上代码吧,欢迎大家多提意见。 ... -
对java web工程的个人理解
2010-03-02 10:50 4031、在多工程下对session的理解: 一个浏览器打开一 ... -
个人实施工作总结(只是个人实施工作总结)
2010-01-21 16:31 693这次升级出了好多问题,记录如下: 一、 更新了high ... -
基于struts的web应用开发总结(三)
2010-01-13 16:08 2241.应用开发常常从数据库取出数据来处理。而数据库的数据有可能是 ... -
json在服务端取值
2010-01-07 15:19 1070我们一般在servlet里返回一个json的toString( ... -
action端发请求并且处理
2010-01-07 15:13 120我们一般是在前端发请示,然后在struts的action端来处 ... -
修改Eclipse/MyEclipse项目的默认编码(转)
2009-12-26 15:35 3535... -
servlet端取前台参数值方法探讨
2009-12-20 21:24 636servlet取前端传过来的参数值,我们一般用HttpServ ...
相关推荐
总结来说,Java编程思想中的初始化与清理主要涉及构造器的使用,方法的重载,以及`this` 关键字的应用。这些概念对于理解和编写有效的Java代码至关重要,因为它们直接影响到对象的创建、状态设置以及代码的可读性...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
本文详细介绍了Java基础中的关键知识点,包括初始化、数据类型、类与对象、访问控制、抽象类与接口、内部类以及异常处理等内容。这些概念是学习Java语言的重要基石,掌握了它们不仅能帮助开发者更好地理解和使用Java...
### Java编程思想学习笔记知识点...以上是《Java编程思想》学习笔记中关于操作符、控制语句、对象、初始化与清理等关键知识点的总结。通过理解这些基础概念和技术细节,可以更好地掌握 Java 编程的核心原理和技术实践。
根据给定的信息,我们可以整理出一份关于Java求职者所需掌握的核心知识点总结,主要涉及JVM的基础知识、垃圾回收机制以及线程池等关键概念。 ### 1. JVM基础 #### JVM架构与内存区域 JVM(Java虚拟机)是运行Java...
本文将对Java的基础知识进行深入的探讨,包括注释的使用、初始化与清除等关键概念。 一、Java注释 注释在Java代码中扮演着至关重要的角色,它们用于解释代码的功能,提高代码的可读性和可维护性。Java支持三种类型...
### Java知识点总结 #### 第1章 Java基础 ##### 1.1 SUN,JAVA,ECLIPSE相关常识 - **James Gosling** 被誉为“Java之父”,他是Java语言的主要设计者之一。 - **Oracle** 收购了Sun Microsystems之后,获得了...
### Java基础知识总结 #### 1. 类与对象 在Java中,类是对象的模板,定义了一组数据和方法的集合。对象则是类的具体实例,每个对象都有自己的状态和行为。类提供了创建对象的蓝图,而对象则是在运行时根据这个蓝图...
在本文中,我们将深入探讨Java的基础知识和面试中常见的问题,以帮助你更好地理解和准备Java相关的面试。 一、Java语言特性 1. 面向对象:Java支持类、对象、封装、继承和多态等面向对象特性。类是对象的蓝图,...
### Java核心机制与基础知识梳理 #### Java虚拟机(JVM) Java虚拟机是Java的核心机制之一,它是一种抽象计算机,负责执行Java字节码。Java程序编译后的字节码文件(.class)可以在任何安装了Java运行环境的平台上...
在提供的文件内容中,我们可以看到许多与Java语言相关的知识点,这些内容涉及到基本数据类型、异常处理、集合框架、Java集合类、同步机制、基本的JVM原理、Java中的排序、文件操作、Servlet和JSP、以及MVC模式等方面...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
- 属性一旦初始化就不能更改。 - 方法一旦声明为final就不能被子类重写。 - 类一旦声明为final就不能被继承。 - **finally**: - 是异常处理语句结构的一部分。 - 无论是否发生异常,finally块中的代码都会被...
- **第4章:初始化与清理**:讨论对象的创建过程、初始化顺序以及资源释放的最佳实践。 ##### 第二部分:面向对象进阶 - **第5章:隐藏实现细节**:介绍抽象与封装的概念,学习如何设计具有良好隐藏机制的类。 - *...
总结来说,Java 实现 OPC 服务客户端涉及到的知识点包括 OPC 协议标准、第三方库的使用、OPC 连接和数据操作、事件处理以及异常管理。在实际项目中,还需要关注性能优化、安全性以及与现有系统的集成。
Java虚拟机类加载机制是整个Java体系中的核心之一,包括类加载的五个基本步骤:加载、验证、准备、解析和初始化。 - **加载**:类加载的第一个阶段,完成从文件系统或网络中加载class文件到内存中。 - **验证**:...
### Thinking in Java 第四版 — 初始化与清理 #### 核心知识点概述 - **初始化的重要性**:在程序设计中,确保变量和对象被正确初始化至关重要,可以避免运行时错误和安全漏洞。 - **C 语言中的初始化问题**:C ...
5. 对象清理:在Java中,对象的清理通常由垃圾回收器自动进行,但在必要时,可以手动通过`System.gc()`请求垃圾回收,但不保证立即执行。对象的清理顺序与创建顺序相反。 6. static与final关键字: - static修饰的...
- Java类的构造器(constructor)用于初始化对象,一个类可以有多个构造器,构造器名称必须与类名相同。 - Java的访问修饰符包括public、protected、private,用于控制类、方法和变量的访问权限。 - Java支持封装...