<pre name="code" class="java">package com.xdl.bean;
/**
* @author xudaolong
*讨论变量与命名约定(可读性)
*类名:每个单词首字母大写
*接口名:若名词,同类名;若形容词,able/ible结尾
*方法名:同类名但首单词小写
*枚举名:同类名,枚举集合全大写
*实例和静态变量:名词,同方法名;
*参数和局部变量名:首字母缩写词,同方法名;
*泛型类型参数名称:大写单个字母,T(类型),E(集合元素),S(服务加载器),K(映射键),V(映射值)
*常量名:全大写,辅下划线
*包名:全小写,辅下划线,不宜java/javax开头
*/
public class XuDaoLong_Various {
/**
* 变量:成员变量和局部变量
* 成员变量:类变量(即静态变量,由static修饰)和实例变量(非静态变量,没有static修饰)
* 局部变量:形参,方法内,代码块内;
*
* 状态变量包含实例变量和静态变量
*
*static:表示不用实例就可以使用,通过类名访问
*final:不可被修改,或者覆盖.
*static+final:不可修改的不可覆盖的全局变量.
*
*类变量:<!--当对象之间共享值时或者方便访问变量时可使用-->
*标志:(静态代码块)static,static{},先后顺序执行(多代码块时),在类的初始化之前初始(最早初始?)
*①向前引用,即引用在前,定义在后
*②属于类本身
*③,初始化只分配一次内存,即单次拷贝,为了节省内存,与实例的次数无关
*④全局一致性,随改变而改变
*
*静态方法:
*①不能使用this或者super,且不能访问所属类的实例变量或者实例方法,要实例化
*②因为static方法独立任何实例,static的方法必须被实现,不能单纯的abstract
*
*实例变量:
*标志:(非静态代码块){},先后顺序执行(多代码块时),提取到类的构造器中执行,但比构造器中的代码块更优先
*①不可向前引用,属于非法向前引用
*②属于类的实例对象
*③随实例被创建而分配空间
*/
static{
name="许道龙-static";
System.out.println("我是类变量");
}
public static String name="许道龙-定义";
//以上为类变量
private String numberString="1205532142-定义";
public XuDaoLong_Various() {
setNumberString("1205532142-构造器");
System.out.println("我是构造器");
}
{
setNumberString("1205532142-静态代码块");
System.out.println("我是非静态代码块");
}
public String getNumberString() {
return numberString;
}
public void setNumberString(String numberString) {
this.numberString = numberString;
}
}
<span style="font-family: Arial, Helvetica, sans-serif;">@Test</span>
public void variable(){
System.out.println(XuDaoLong_Various.name);
/*
console:
我是类变量
许道龙-定义
我是非静态代码块
我是构造器
分析:
先执行static{}-->name输出结果不是"许道龙-static"的原因在于static是按顺序执行->{}->XuDaoLong_Various()构造器
*/
XuDaoLong_Various xdl = new XuDaoLong_Various();
System.out.println(XuDaoLong_Various.name);//许道龙-定义
System.out.println(xdl.name);//许道龙-定义
XuDaoLong_Various.name="许道龙-更改后";
System.out.println(XuDaoLong_Various.name);//许道龙-更改后
System.out.println(xdl.name);//许道龙-更改后
System.out.println(xdl.getNumberString());//1205532142-构造器
}