1.static 关键字:
用法:是一个修饰符,用于修饰成员函数、成员变量
调用方法:1.对象.成员变量/函数
2.直接用类名调用。 类名.静态成员
static特点:1.随着类的加载而加载
2.优先于对象的存在:静态现存在,对象后存在
3.被所有对象所共享
4.可以被类名调用
static注意:1.静态方法只能访问静态成员
2.静态方法不能使用this、super关键字,因为静态优先于对象的存在;
3.主函数是静态的
2.主函数:public static void main(String[] args)
public:代表该函数访问权限最大
static:代表主函数随着类的加载而加载
(String[] args):字符串类型数组
3.静态工具类
每一个工具都有共同的功能特性,可以封装在同一个类中,并将其中的功能定义为static
class Tool
{
public static void Max(...)
{
...
}
public static void Min(...)
{
...
}
}
class ToolDemo
{
Tool.Max();
Tool.Min();
}
当类中的方法全为静态时,可以将该类进行构造函数私有化:即将Tool类中的构造函数:private Tool(){ };
因为该类中的方法全为静态,且无特有数据,该类就没有必要去创建对象了,但是仍可以被外部创建对象,为了强制不让去创建对象,可通过
构造函数私有化的方式
4.帮助文档制作 java.doc
文档注释:
@author 作者
@version 版本
@param 参数
@return 返回值
javadoc只提取public修饰的
默认构造函数的权限是随着类的变化而变化
javadoc必须是被修饰的
javadoc -d myhelp -author ArrayTool.java
目录 当前目录
5.静态代码块:
class static Code
{
static
{
System.out.println("HELLO");
}
}
特点:随着类的加载而加载,只执行一次,并优先于主函数。
静态代码块》构造代码块》构造函数
6.对象的初始化过程:
Person p=new Person("ZhangSan",20)
1.new Person():开辟空间,并给特有属性赋默认值;
2.静态代码块执行
3.构造代码块执行
4.构造函数执行
7.单例设计模式:
设计模式:解决某一类问题行之有效的方法
单例模式:解决一个类在内存只有一个对象
class Single
{
private int num;
public void setNum(int num)
{
this.num=num;
}
public int getNum()
{
return num;
}
private Single(){ };
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
class SingleDemo
{
public staic void main(String[] args)
{
Single s1=Single.getInstance();
Single s2=Single.gesInstance();
s1.setNum(11);
System.out.println(s2.getNum(22));
}
}
饿汉式:先初始化对象
Single类一进内存,对象就被创建
class Single
{
private static Single s=new Single();
private Single(){ };
public static Single getInstance()
{
return s;
}
}
懒汉式:对象是方法被调用时,才初始化
Single类进内存,对象还没有存在,只有调用了getInstance() 方法时才创建对象
class Single
{
private static Single s=null;
private Single(){ };
public static Single getInstance()
{
// if(s==null)
第一种 // {
// s==new Single();
// }
// return s;
}
}
// if(s==null)
// {
// synchronized(Single class)
第二种 // {
(加锁)// if(s==null)
// s=new Single();
// }
// }