`
lgx2351
  • 浏览: 175354 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

java知识总结之三:初始化与清理

阅读更多

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 反而更加简洁。

分享到:
评论

相关推荐

    Java编程思想初始化与清理PPT教案学习.pptx

    总结来说,Java编程思想中的初始化与清理主要涉及构造器的使用,方法的重载,以及`this` 关键字的应用。这些概念对于理解和编写有效的Java代码至关重要,因为它们直接影响到对象的创建、状态设置以及代码的可读性...

    java知识体系总结

    Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...

    JAVA基础知识精华总结

    本文详细介绍了Java基础中的关键知识点,包括初始化、数据类型、类与对象、访问控制、抽象类与接口、内部类以及异常处理等内容。这些概念是学习Java语言的重要基石,掌握了它们不仅能帮助开发者更好地理解和使用Java...

    《Java编程思想》学习笔记1(操作符、控制语句、对象、初始化与清理).doc

    ### Java编程思想学习笔记知识点...以上是《Java编程思想》学习笔记中关于操作符、控制语句、对象、初始化与清理等关键知识点的总结。通过理解这些基础概念和技术细节,可以更好地掌握 Java 编程的核心原理和技术实践。

    找工作java知识总结

    根据给定的信息,我们可以整理出一份关于Java求职者所需掌握的核心知识点总结,主要涉及JVM的基础知识、垃圾回收机制以及线程池等关键概念。 ### 1. JVM基础 #### JVM架构与内存区域 JVM(Java虚拟机)是运行Java...

    java知识总结

    本文将对Java的基础知识进行深入的探讨,包括注释的使用、初始化与清除等关键概念。 一、Java注释 注释在Java代码中扮演着至关重要的角色,它们用于解释代码的功能,提高代码的可读性和可维护性。Java支持三种类型...

    java知识点总结

    ### Java知识点总结 #### 第1章 Java基础 ##### 1.1 SUN,JAVA,ECLIPSE相关常识 - **James Gosling** 被誉为“Java之父”,他是Java语言的主要设计者之一。 - **Oracle** 收购了Sun Microsystems之后,获得了...

    java基础知识总结

    ### Java基础知识总结 #### 1. 类与对象 在Java中,类是对象的模板,定义了一组数据和方法的集合。对象则是类的具体实例,每个对象都有自己的状态和行为。类提供了创建对象的蓝图,而对象则是在运行时根据这个蓝图...

    基础 知识点/面试题总结 : (必看:+1: ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试

    在本文中,我们将深入探讨Java的基础知识和面试中常见的问题,以帮助你更好地理解和准备Java相关的面试。 一、Java语言特性 1. 面向对象:Java支持类、对象、封装、继承和多态等面向对象特性。类是对象的蓝图,...

    java个人总结,觉得还不错

    ### Java核心机制与基础知识梳理 #### Java虚拟机(JVM) Java虚拟机是Java的核心机制之一,它是一种抽象计算机,负责执行Java字节码。Java程序编译后的字节码文件(.class)可以在任何安装了Java运行环境的平台上...

    JAVA重点知识总结.pdf

    在提供的文件内容中,我们可以看到许多与Java语言相关的知识点,这些内容涉及到基本数据类型、异常处理、集合框架、Java集合类、同步机制、基本的JVM原理、Java中的排序、文件操作、Servlet和JSP、以及MVC模式等方面...

    Servlet基础知识总结

    ### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...

    Java基础总结基础部分

    - 属性一旦初始化就不能更改。 - 方法一旦声明为final就不能被子类重写。 - 类一旦声明为final就不能被继承。 - **finally**: - 是异常处理语句结构的一部分。 - 无论是否发生异常,finally块中的代码都会被...

    Thinking in Java.

    - **第4章:初始化与清理**:讨论对象的创建过程、初始化顺序以及资源释放的最佳实践。 ##### 第二部分:面向对象进阶 - **第5章:隐藏实现细节**:介绍抽象与封装的概念,学习如何设计具有良好隐藏机制的类。 - *...

    java实现opc服务客户端代码

    总结来说,Java 实现 OPC 服务客户端涉及到的知识点包括 OPC 协议标准、第三方库的使用、OPC 连接和数据操作、事件处理以及异常管理。在实际项目中,还需要关注性能优化、安全性以及与现有系统的集成。

    JAVA核心知识点整理.pdf

    Java虚拟机类加载机制是整个Java体系中的核心之一,包括类加载的五个基本步骤:加载、验证、准备、解析和初始化。 - **加载**:类加载的第一个阶段,完成从文件系统或网络中加载class文件到内存中。 - **验证**:...

    thinking_in_java 第四版(英文)

    ### Thinking in Java 第四版 — 初始化与清理 #### 核心知识点概述 - **初始化的重要性**:在程序设计中,确保变量和对象被正确初始化至关重要,可以避免运行时错误和安全漏洞。 - **C 语言中的初始化问题**:C ...

    java面试知识点总结(接收建议和修改中...)

    5. 对象清理:在Java中,对象的清理通常由垃圾回收器自动进行,但在必要时,可以手动通过`System.gc()`请求垃圾回收,但不保证立即执行。对象的清理顺序与创建顺序相反。 6. static与final关键字: - static修饰的...

    JAVA笔试题目及JAVA常考知识点总结.pdf

    - Java类的构造器(constructor)用于初始化对象,一个类可以有多个构造器,构造器名称必须与类名相同。 - Java的访问修饰符包括public、protected、private,用于控制类、方法和变量的访问权限。 - Java支持封装...

Global site tag (gtag.js) - Google Analytics