java 面向对象(静态代码块):给类进行初始化
面向对象(静态代码块)
作用:给类进行初始化
特点:当类加载时,只执行一次,优先于主函数。
格式:
static
{
执行语句;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Q:返回结果是什么?
A:2413。虽然两次创建StaticCode对象,但StaticCode类的静态代码块只加载一次。
class StaticCode
{
//静态代码块
static
{
System.out.print(1);
}
}
class Test
{
static
{
System.out.print(2);
}
public static void main(String[] args)
{
new StaticCode();
new StaticCode();
System.out.print(3);
}
static
{
System.out.print(4);
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Q:返回结果是什么?
A:12
class StaticCode
{
//静态代码块
static
{
System.out.print(1);
}
//类中的静态方法
public static void show()
{
System.out.print(2);
}
}
class Test
{
public static void main(String[] args)
{
StaticCode.show();
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Q:返回结果是什么?
A:没有返回值。由于变量s没指向实体,没用到StaticCode类中的内容,所以StaticCode类没加载。
class StaticCode
{
//静态代码块
static
{
System.out.print(1);
}
//类中的静态方法
public static void show()
{
System.out.print(2);
}
}
class Test
{
public static void main(String[] args)
{
StaticCode s=null; //没返回
//s=new StaticCode(); //有返回,当new时,就用到了类中的构造函数StaticCode(){}
//StaticCode.show(); //有返回
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Q:返回结果是什么?
A:234。静态代码块 --> 构造代码块 --> 构造函数
class StaticCode
{
//构造函数
StaticCode()
{
System.out.print(1);
}
//静态代码块:给类初始化
static
{
System.out.print(2);
}
//构造代码块:给对象初始化
{
System.out.print(3);
}
//构造函数的重载:给对应对象初始化
StaticCode(char x)
{
System.out.print(4);
}
}
class Test
{
public static void main(String[] args)
{
new StaticCode('a');
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Q:返回结果是什么?
A:b9
class StaticCode
{
int num=9;
//静态代码块:给类初始化
static
{
//System.out.print("a"+num); //错误: 无法从静态上下文中引用非静态 变量 num
}
//构造代码块:给对象初始化
{
System.out.print("b"+num); //可以返回num,因为构造代码块就是给对象初始化的。
}
}
class Test
{
public static void main(String[] args)
{
new StaticCode();
}
}
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5603.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
