------- android培训、java培训、期待与您交流! ----------
构造函数
构造函数中定义对象的初始化内容
格式:
名字(大写首字母)()
{
}
构造代码块中定义的是不同对象的共性的初始化内容
格式:
{
}
Static关键字
静态static
用法:是一个修饰符,用于修饰成员(成员变量,成员函数)。
如下所示将成员变量中国籍一项提取出来,不在存放于对象即实体即堆内存中(它放在了方法区,共享区,数据区(三个名字都指一个区域)中)
Class Person
{
String name;//成员变量,实例变量
static String country=”CN”;//静态成员变量,类变量
Public void show()
{
System.out.println(name+country);
}
class staticDemo
{
Public static void main(String[] args)
{
Person p=new person();
P.name=”zhangsan”;
P.show();
}
}
}
当成员被static静态后,就多了一种调用方式(static 第四个特点)-------即直接被类名调用格式类名.静态成员名
原来:s.o.p(p.country);
多的:s.o.p(Person.country);
Static 特点:
1:随着类的加载而加载;也就是说静态会随着类的消失而消失。说明它的生命周期最长。
2:优先于对象存在,静态先存在,对象后存在
3::被所有对象共享
4:可以被类名调用
实例变量和类变量的区别:
1:存放位置
类变量随着类的加载存放于共享区。
实例变量随着对象的加载存放于堆内存中。
2:生命周期
类变量生命周期最长,随着类的消失而消失
实例变量随着对象的消失而消失
静态的使用注意事项:
1:静态方法只能访问静态成员(包括变量和方法)
非静态方法可以访问非静态和静态(变量和方法)
2:静态方法中不可以定义this,super关键字
因为静态优先于对象存在。
3:主函数是静态的。
静态有利有弊:
利:对对象共享数据进行单独存储,节省空间。
可以直接被类名调用。
弊:生命周期过长。
访问出现局限性。(只能访问静态)
3:主函数是静态的。
主函数是一个特殊的函数,座位程序入口可以被jvm调用
主函数定义:
Public:代表改函数访问权限最大
Static:代表主函数随着类的加载就已经存在了。
Void:主函数没有具体的返回值。
Main:不是关键字,是特殊单词可以被jvm识别。
(String【】 arr)函数参数:参数类型是数组,数组元素是String(字符串)。
主函数是固定格式的:jvm识别
Jvm在调用主函数是传入的是new String[0].
什么时候使用静态
从两方面下手
因为静态修饰的内容有成员变量和函数。
什么时候定义静态变量(类变量)?
当对象中出现共享数据时。
对象中的特有数据定义成非静态。
什么时候定义静态函数
当功能内部没有访问到非静态数据时。
如下
Class Person { String name; Public static void show() { System.out.println(“haha”) } } Class personDemo { Public static void main(String[] args) { Person.show } }
当操作数组方法没有用到工具类中的数据时这个工具类中的方法都定义成static,直接通过类名调用即可。
工具类方法静态后,为防止该类被其他程序建立对象,强制让该类不能建立对象即通过构造函数私有化。
Tips:
set classpath=.;盘符:\文件夹 先找本目录,再找指定目录。
做说明书
.class文件被应用要知道其中定义了什么方法通过说明书加以告知
Java的说明书通过文档注释来完成
/**
这是一个可以实现什么什么功能的工具类,改类中提供了什么什么功能。
@author 谁
@version v1.1
*/
Javadoc 对文档注释进行提取生成说明书 cmd中 javadoc -d 文件 -author -verdion 类名.java(类必须被共有即前加public)
生成后打开index文件 私有的不显示
静态代码块
格式:
Static
{
静态代码块中的执行语句
}
特点:随着类的加载而执行,只执行一次。用于给类进行初始化
注意执行结果a只执行一次
设计模式
解决某一类问题最行之有效的方法,java中有23种
第一种:单例设计模式:解决一个类在内存中只存在一个对象。
保证对象唯一
1,为了避免其他程序过多建立该类对象。先控制禁止其他程序建立该类对象
2,还为了让其他程序可以访问到该类对象,在本类中自定义一个对象
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
用代码体现
1,将构造函数私有化
2,在类中创建一个本类对象
3,提供一个方法可以获取到该对象
加三句饿汉式
Private 名字(){}
Private static 名字 s=new mingzi();
Public static 名字gongneng()
{
Return s;
}
面试常用懒汉式
Private 名字(){}
Private static 名字 s=null;
Public static 名字gongneng()
{
If(s==null)
{
Synchronized(名字.class)
{
If(s==null)
s=new 名字();
}
}
Return s;
}