黑马程序员-----一些杂类知识

------- android培训java培训、期待与您交流! ----------


/*以下均为本人按理解手打。仅代表个人观点,如果有错误请联系我加以改成。谢谢!无任何拷贝,摘抄等行为,转载请注明地址*/

一、单例设计模式:

class personal//饿汉式
{
	private personal()
	{

	}

	static personal p = new personal();

	public static personal getObject()
	{
		return p;
	}

}


class personal_1                       //懒汉式
{
	private personal_1()
	{

	}
	static personal_1 p = null;

	public static personal_1 getObj()
	{
		if(p==null)
			p = new personal_1();

		return p;
	}

}


class day067				//主函数体
{
	public static void main(String[] args)
	{
		personal s = personal.getObject();
		personal_1 s1 = personal_1.getObj();
	}
}

简单介绍:

        饿汉式设计模式,简单来说就是代码简单,效率高,提前创建好本类对象当主函数调用时直接返回对象。

        懒汉式,功能作用和饿汉式一样,但是区别在于内存中的创建先后顺序及安全性。懒汉式在函数调用的时候才创建对象并返回对象。而且在多核CPU中处理数据也不安全。虽然几率比较小,但是要以防万一。尽量避免使用懒汉式这种定义方式。

总结:以后尽量使用饿汉式单例设计模式。在返回对象时尽量采用这种代码紧凑的思想来编写


二、关于匿名函数

class nonameObj
{
	int number = 1;
	String str = "绿色";
	void Change(int recv)
	{
		for(int i=1;i<recv;i++)
		{
			number = i;
			System.out.print("我是匿名函数,我循环了" + i + "次!\n");
		}
		if(number%2 == 1)
				result("紫色");		//把我最爱的紫色传递过去
	}

	void result(String str)
	{
		System.out.print("我最爱的颜色是" + str + "  我可以改变成员变量的内容,所以说我不是没有丝毫用处!");
	}
}


class day054
{
	public static void main(String[] args)
	{
		new nonameObj().Change(22);
		System.out.println("-------------------------------------------");
		new nonameObj().Change(21);
	}
}

代码简单介绍:

         创建对象时通过new.类名的方式来创建对象,建立的对象只有短暂的生存期。并且执行到下一条语句,建立的对象便会被JAVA虚拟机当垃圾内存清理掉了。但是这种定义的方式,并不一定完全没有好处,也有一定的好处在一些不必要的操作中可以节省内存。。等


匿名函数总结:在一些不必要的操作中可以使用匿名函数来完成。这种方式虽然很有局限性,但是执行完便在内存中成为垃圾给JAVA虚拟机清理掉了,节省了内   存空间。所以定义的时候想好是否还需要匿名函数做其它事情。


三、this和super的简单理解

        this和super在类中的第一条语句,通常是JVM自动加上去的。一般在调用本类的成员变量、成员函数时一般省略this。除非在一些成员变量和局部变量或者全局变量,变量名称相同的时候,加上this以标示为本类成员变量。

        super是访问父类的对象。当出现A,B,C三个类。B继承A,C继承B时,在C类中使用super.类名可以访问,B继承A包含B本身中的部分成员变量。当B、A有成员变量名称一样的时候,则A中的成员变量则被复写。在C类中访问的其实就是B类中的数据。


四、命令带参数运行:

class mainDemo
{
	public static void main(String[] args)
	{
		System.out.println(args.length);
		if(args.length == 0)
		{
				System.out.println("No argments");
		}
		System.out.println(args[0]);
	}
}



class day062
{
	
	public static void main(String[] args)
	{
		String [] arr = {"heiheihei","2","3"};
		mainDemo.main(arr);
	}

}


代码简单介绍:

        因为在public static void main(String[] args)中,虚拟机会自动给主函数new一个大小。所以这里我们用。参数.length就可以获取到带来的参数多少以及分别是什么。通过这种方法,可以方便执行某些命令语句,例如执行“net uesr s s /add”,这种命令。代码过于简单,就不详细说明了。


个人总结:这种带参数运行的程序,一般是黑洞洞窗口程序,没有任何窗体设计,会给不懂电脑的人带来很多不明白的问题,也许高手都喜欢用这种方式吧!反正我是喜欢这种的。简单高效,而且运行速度快,便于重新开发、添加功能。


面向对象之注意事项1:

class fu
{
	void method1()
	{
		System.out.println("fu method1");
	}

	void method2()
	{
		System.out.println("fu method2");//2
	}
}

class zi extends fu
{
	void method1()
	{
		System.out.println("zi method1");//1
	}

	void method3()
	{
		System.out.println("zi method3");//3
	}
}

class day084
{
	public static void main(String[] args)
	{
		fu f = new zi();

		f.method1();
		f.method2();
		//f.method3();
	}
}

程序简单介绍:

     本程序在面向对象时进行测试JAVA虚拟机运行时的重写、覆盖。

      当取消最后一行注释时,编译不能通过,故先加上注释。

程序运行结论:在取消最后一行语句注释时,编译不能通过是由于父类没有method3这个函数。但是我new 的是子类并不是父类,所以先加上注释。然后编译运行出现zi method1和fu method2运行结果。所以得出结论。

用父类new子类对象编译时虚拟机会检查父类是否存在该类。没有则编译不通过。当子类创建后,子类会覆盖父类的同名函数。当然需要有权限private就不说了。你懂得。

成员型变量和非静态函数这里不做考虑在内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值