`
哈达f
  • 浏览: 120352 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

构造方法,静态代码块,单例模式

    博客分类:
  • j2se
阅读更多

1,构造函数:
	a,函数名和类名相同。
	b,没有返回值类型。
	c,函数中不写return语句。
	
	作用:可以对对象进行初始化。

	比如:Person p = new Person();这句代码都做什么事情?
		a,加载Person.class 文件。
		b,在堆内存中开辟空间,创建实例对象。
		c,对对象中的属性进行默认初始化。
		d,对对象中的属性进行显示初始化。
		e,对对象进行自定义的初始化,通过构造函数来完成的。
		f,在栈内存中定义变量存入对象的地址值,指向该对象。
	什么时候定义构造函数呢?
	在分析事物的时候,这个事物在一建立就需要一些属性或者执行一些行为。
	这时就将这些属性和行为在构造函数中操作。

	构造函数和一般函数在运行上的不同:
		构造函数:在对象建立时,立刻调用与对应的构造函数。
		一般函数:在对象建立后,需要执行时,在会被对象所调用。
	
	注意:
	在用class定义的类中,jvm会自动的在该类添加一个默认的构造函数,该函数是空参数的 。
	如果类中自定义了构造函数,那么默认的构造函数消失。

	构造函数在类中存在多个,是以重载的形式体现的。

	构造函数之间互相调用,是通过this语句来完成的。
	this语句一定定义在构造函数第一行,因为初始化动作要先执行。

------------------------------

this关键字:
	this代表本类对象,this在函数内部,代表着该函数所属对象的引用。
			其实就是哪个对象调用this所在的函数,this就代表哪个对象。

	什么时候定义这个this?
	当定义功能时,该功能内存使用到了本类对象时,就用this来表示。


	用法:可以用来区分局部变量和成员变量同名的情况。
	class Person
	{
		int age;
		Person(int age)
		{
			this.age = age;
		}
		public boolean compare(Person p)
		{
			return this.age == p.age;
		}
	}

	main()
	{
		Person p1 = new Person(30);
		Person p2 = new Person(20);
		p1.compare(p2);

		p2.compare(p1);
	}

--------------------------------------------
static关键字:
	特点:
	  -- 随着类的加载而加载,随着类的消失而消失,静态成员的声明周期最长。
	  -- 优先于对象存在。
	  -- 被所有对象所共享。
	  -- 可以直接被类名所调用。类名.静态成员。

	注意事项:
	  -- 静态方法只能访问静态成员。
	  -- 静态方法中不可以写this,super关键字。
	  -- 主函数是静态的。

	static是一个修饰符,只能修饰成员。被它所修饰的成员在共享区(方法区)中。

	可以想想饮水机的例子。

------------------------------------------
主函数:可以被jvm所调用也直接用类名所调用,jvm到底给主函数传递了什么样的实际参数呢?
	jvm传递是new String[0].
	java Demo haha hehe
------------------------------------------

设计模式:解决某类问题行之有效的方法。
java 23种设计模式。

单例设计模式:保证了类在内存中的对象唯一性。
步骤:
	1,私有化构造函数,不让其他类建立该类对象。
	2,定义一个私有并静态的本类对象。
	3,定义一个静态的方法对外提供该对象。

class Single
{
	private static Single s = new Single();
	private Single(){}
	public static Single getSingle()
	{
		return s;
	}
}

class Single
{
	private static Single s = null;
	private Single(){}
	public static /*synchronized*/ Sinlge getSingle()
	{
		if(s==null)
			s = new Single();
		return s;
	}
}

-----------------------------------------

静态代码块:
	特点:随着类的加载而执行,执行一次,优先于主函数执行。
	作用,用于给类进行初始化的。

-----------------------------------------

内部类:
	其实就是将类定义在另一个类的里面,内部类可以定义在外部类的任意位置上。
	内部类可以直接访问外部类中的成员,那是因为内部类只有一个外部类的引用,外部类名.this
	而外部类要访问内部类必须建立内部类对象。
	
	什么时候用内部类呢?
		描述事物时,该事物内部还有事物,那么可以通过内部类来描述。

	当内部类在成员位置上的时候,可以被成员修饰符所修饰。比如,private static 。
	当内部类中定义了静态成员时,内部类必须是静态的,但是静态内部类就出现了访问局限性。

	当内部类在具备位置上的时候,只可以访问被final修饰的局部变量。
	被final修饰的局部变量是一个常量,只可以被赋值一次。

-----------------------------------------

 
分享到:
评论

相关推荐

    设计模式之单例模式(结合工厂模式)

    单例对象的创建可以在静态初始化块中完成,或者在getInstance方法中通过DCL模式实现。 在项目中,`src`目录可能包含了这些设计模式的源码示例,可以用来学习和理解如何实际应用单例模式和工厂模式。通过阅读和分析...

    Java单例模式实现静态内部类方法示例

    今天,我们主要介绍了Java单例模式实现静态内部类方法示例,涉及构造函数私有化等相关内容。 单例模式的定义 单例模式是指确保某个类只有一个实例,并且提供一个全局访问点来访问该实例。这种模式可以确保在整个...

    单例模式代码

    2. 饿汉式(静态代码块) 与静态常量类似,只是实例化发生在类加载时,但不是在初始化阶段。 ```java public class Singleton { private static Singleton INSTANCE; static { INSTANCE = new Singleton(); } ...

    C#创建窗体的单例模式

    单例模式的核心在于限制类的实例化过程,通常通过私有构造函数和静态工厂方法来实现。在C#中,我们可以创建一个静态私有变量来保存类的唯一实例,然后提供一个公共的静态方法来获取这个实例。如果实例不存在,那么就...

    Java单例模式深入理解

    2. 饿汉式(静态代码块): 与静态常量类似,只是初始化时机不同,但同样是线程安全的。 ```java public class Singleton { private static Singleton INSTANCE; static { INSTANCE = new Singleton(); } ...

    关于单例模式的知识要点

    总的来说,单例模式是一种重要的设计模式,理解并熟练运用它可以帮助我们编写更加高效、可维护的代码。在Java等面向对象语言中,单例模式是经常被提及和使用的。在不同的场景下,我们可以选择合适的实现方式,以达到...

    几种单例模式说明(并有实例)

    根据给定的信息,本文将详细解释几种常见的单例模式,并通过具体的Java代码示例来阐述每种模式的特点和实现方式。 ### 单例模式简介 单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局...

    单例模式(Singleton)的6种实现

    它通过减少同步代码块的范围,只在instance为null时才同步,这样既解决了多线程问题,又提高了性能。 4. 静态内部类(Initialization on Demand Holder) 静态内部类实现单例模式的方式是利用了类的加载机制来保证...

    设计模式——单例模式

    与静态常量类似,只是将对象的初始化放在静态代码块中。 ```java public class Singleton { private static Singleton INSTANCE; static { INSTANCE = new Singleton(); } private Singleton() {} public ...

    软件体系结构单例模式

    2. 饿汉式(静态代码块):与静态常量类似,只是将实例化放在静态代码块中,保证线程安全。 ```java public class Singleton { private static Singleton INSTANCE; static { INSTANCE = new Singleton(); } ...

    单例模式的介绍(含程序代码)

    单例模式是一种设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例存在。这种模式在很多场景下非常有用,比如资源管理、日志记录、配置管理等,因为这些类通常只需要一个全局共享的实例来协调操作。 ...

    多线程单例模式并发访问

    - **解决办法**:常见的解决方案包括使用`synchronized`关键字标记同步代码块或同步方法、使用显式的锁如`Lock`接口等。 #### 六、死锁现象 死锁是指两个或两个以上的线程在执行过程中因争夺资源而造成的一种相互...

    java单例模式连接数据库源码

    Java单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在数据库连接管理中,使用单例模式能有效控制资源,避免频繁创建和关闭数据库连接导致的性能损失和资源浪费。以下是对Java单例模式...

    深入浅出单例Singleton模式

    【深入浅出单例Singleton模式】 ...总的来说,单例模式是一种强大的设计模式,但需要谨慎使用,避免滥用导致设计复杂性增加和代码难以维护。理解其背后的原理和潜在问题,才能在适当的情境下有效地利用它。

    具体的单例模式事例 很有帮助的单例模式

    单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制共享资源的访问,或者创建昂贵的对象时,通过重用已存在的实例来提高性能...

    JAVA设计模式之单例模式

    2. 饿汉式(静态代码块):与静态常量类似,但初始化发生在类加载时,而非构造函数调用。 ```java public class Singleton { private static Singleton INSTANCE; static { INSTANCE = new Singleton(); } ...

    设计模式_单例模式.zip

    单例模式的核心思想在于限制类的实例化过程,通常通过私有构造函数和静态工厂方法来实现。这样可以防止其他部分的代码直接通过 `new` 关键字创建新的实例。以下是一个简单的Java单例模式实现: ```java public ...

    java 多线程单例模式详解

    双重检测锁是一种在懒汉模式基础上优化的线程安全实现方式,通过减少同步代码块的数量来提高性能。 ```java public class SingletonDemon4 { private volatile static SingletonDemon4 instance; private ...

    Singleton 单例模式的介绍以及解析

    单例模式的核心在于限制类的实例化,通常通过私有化构造函数和静态工厂方法来实现。当类的实例第一次被请求时,会创建一个对象并将其存储在一个静态变量中,后续的请求都会返回这个已经创建的对象,而不是创建新的...

    优秀的设计模式示例-单例模式

    但在单例模式中,类的构造函数被私有化,防止外部直接实例化。这样就确保了没有其他方式可以创建类的新实例,除非通过预先定义好的公共静态方法。 单例模式的实现通常分为懒汉式和饿汉式两种方式。 1. **懒汉式**...

Global site tag (gtag.js) - Google Analytics