------- 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就不说了。你懂得。
成员型变量和非静态函数这里不做考虑在内。