1、在声明中赋值
/**
* Created by N3verL4nd on 2016/11/19.
*/
class Test{
private String str = "Hello World";
public void show(){
System.out.println(str);
}
}
public class HelloWorld {
public static void main(String[] args) {
Test t = new Test();
t.show();
}
}
2、在构造器中设置值
/**
* Created by N3verL4nd on 2016/11/19.
*/
class Test{
private String str;
Test(){
str = new String("Hello World");
}
public void show(){
System.out.println(str);
}
}
public class HelloWorld {
public static void main(String[] args) {
Test t = new Test();
t.show();
}
}
3、使用初始化块
/**
* Created by N3verL4nd on 2016/11/19.
*/
class Test{
private String str;
{
str = new String("Hello World");
}
public void show(){
System.out.println(str);
}
}
public class HelloWorld {
public static void main(String[] args) {
Test t = new Test();
t.show();
}
}
只要构造类的对象,初始化块就会被执行。
/**
* Created by N3verL4nd on 2016/11/19.
*/
class Test{
{
str = new String("111");
}
private String str = "222";
Test(){
str = new String("333");
}
public void show(){
System.out.println(str);
}
}
public class HelloWorld {
public static void main(String[] args) {
Test t = new Test();
t.show();
}
}
以上代码,调整初始化顺序,单步调试发现,构造函数最后被执行。
在声明中赋值与在初始化块中设置值则按照顺序执行。
/**
* Created by N3verL4nd on 2016/11/19.
*/
class Test{
Test(){
str = new String("333");
}
{
str = new String("111");
}
private String str = "222";
static {
System.out.println(555);
}
public void show(){
System.out.println(str);
}
}
public class HelloWorld {
public static void main(String[] args) {
Test t = new Test();
t.show();
}
}
static块在类加载的时候被执行,也就是优先于main函数执行。顺序:进入main函数-->static块-->返回main函数。
无main函数的Hello World
public class HelloWorld {
static {
System.out.println("Hello World");
System.exit(0);
}
/*public static void main(String[] args) {
Test t = new Test();
t.show();
}*/
}