当前位置:编程学习 > JAVA >>

java 类中直接写方法

 
如题,在类中直接写方法,当创建对象时,自动会执行,想知道这样算是写在了构造器里么?

class inner{

 { System.out.println("in"); }

} --------------------编程问答-------------------- 不是
<init>先初始化变量,再执行初始化语句(即你写的那个),再调用构造函数 --------------------编程问答-------------------- 不是,你不写构造器,JAVA自动帮你弄一个无参数空构造器public inner(){} --------------------编程问答-------------------- 那初始化语句本身就是静态的么 --------------------编程问答--------------------
引用 2 楼 Cecil_911 的回复:
不是,你不写构造器,JAVA自动帮你弄一个无参数空构造器public inner(){}
看了这位大师的回复,我算理解你们说的构造器是什么了,首先你要理解什么是代码块,什么是构造器  。你写的只是普通的代码块 --------------------编程问答--------------------
引用 4 楼 vvqiu 的回复:
引用 2 楼 Cecil_911 的回复:不是,你不写构造器,JAVA自动帮你弄一个无参数空构造器public inner(){}看了这位大师的回复,我算理解你们说的构造器是什么了,首先你要理解什么是代码块,什么是构造器  。你写的只是普通的代码块

那么你认为的构造器是什么呢? --------------------编程问答--------------------
引用 5 楼 Cecil_911 的回复:
引用 4 楼 vvqiu 的回复:
引用 2 楼 Cecil_911 的回复:不是,你不写构造器,JAVA自动帮你弄一个无参数空构造器public inner(){}看了这位大师的回复,我算理解你们说的构造器是什么了,首先你要理解什么是代码块,什么是构造器  。你写的只是普通的代码块
那么你认为的构造器是什么呢?

只是代码块 不是在构造方法里 --------------------编程问答--------------------
引用 6 楼 eviljordan 的回复:
那么你认为的构造器是什么呢?
只是代码块……

我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊 --------------------编程问答--------------------
引用 7 楼 vvqiu 的回复:
引用 6 楼 eviljordan 的回复:
那么你认为的构造器是什么呢?
只是代码块……
我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊

一样的。只是不同的说法~ --------------------编程问答-------------------- 这个是初始化快。 --------------------编程问答--------------------
Quote: 引用 8 楼 eviljordan 的回复:

我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊
一样的。只是不同的说法~[/quot]
那么LZ的问题是不是如我所说那样? --------------------编程问答--------------------
引用 10 楼 vvqiu 的回复:
Quote: 引用 8 楼 eviljordan 的回复:

我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊
一样的。只是不同的说法~[/quot]
那么LZ的问题是不是如我所说那样?

在术语上争论有意识吗?
1楼的不是回答了lz的问题了吗 --------------------编程问答-------------------- 肯定不是。
不写构造方法的的类,在new实例化的时候系统默认的会自动加上一个无参的构造。
而System.out.println("in");是静态方法块,只有在对象被创建的时候才初始化,
构造方法和静态语句块明显是两码事情。有不同的使用方法和场景
静态代码块要早于构造方法执行。 --------------------编程问答-------------------- 要明白这些你需要先了解jvm初始化对象的顺序。首先在class加载的时候你初始化静态变量和静态初始化块,然后是实例变量和构造函数。当然这些也都是从上往下的顺序执行的。

public class HelloWorld{
  public String s = "hello world";   //3 
  public static int i; //1
  public HelloWorld(){
    //...   //4
  }
  static{
    //...              //2
  }
}
--------------------编程问答-------------------- 静态代码块>代码块>构造方法 --------------------编程问答--------------------  { System.out.println("in"); } 这句前边没有static,肯定就不是静态代码块了,那这种代码块什么时候初始化、执行呢。
感觉好像不能被执行一样。。。 --------------------编程问答-------------------- 这是初始化块,在new对象的时候执行,执行顺序在构造方法之前。 --------------------编程问答--------------------
引用 11 楼 Masket874 的回复:
引用 10 楼 vvqiu 的回复:
Quote: 引用 8 楼 eviljordan 的回复:

我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊
一样的。只是不同的说法~[/quot]
那么LZ的问题是不是如我所说那样?
在术语上争论有意识吗?
1楼的不是回答了lz的问题了吗
  是没意思   翻译问题  大家别纠结了  知道是一个意思就行 --------------------编程问答--------------------
引用 15 楼 hucp2007 的回复:
{ System.out.println("in"); } 这句前边没有static,肯定就不是静态代码块了,那这种代码块什么时候初始化、执行呢。
感觉好像不能被执行一样。。。


public class DiffTime {
public static int sta=1;
static{
sta=2;
System.out.println("fdsafdsafds");
}
        public static void main(String[] args) {
           System.out.println(DiffTime.sta);
        }
}

输出是2  自己理解去 --------------------编程问答-------------------- 错了使出是:fdsafdsafds
          2  --------------------编程问答--------------------
public class Test {
public  int a = 10 ;
{
System.out.println("aaaa");
System.out.println(a);
}
public Test(){
a = 11 ;
}

 public static void main(String[] args)  {    
 new Test() ;
        } 
}

可以看出这种执行顺序,其实你把他想成一个类的的属性赋值就好了 --------------------编程问答-------------------- 静态代码块,也就是写在任何函数体外的以static修饰的代码块。
类似
static{
}

普通代码块,就是写在任何函数体外的代码块
{
}

对象初始化顺序:
1、静态代码块(对象的类第一次被加载时,会被执行,如果之前加载过,则不会被执行)
2、普通代码块(每次创建对象时,都会被执行)
3、构造函数
下面是个例子:

public class MySolution {
{
System.out.println("This is Common Code Block");
}
static
{
System.out.println("This is Static Code Block");
}
public MySolution(){
System.out.println("This is a constructor");
}
public void test(){
System.out.println("Only For Test");
}
public static void main(String[] args) {
MySolution my = new MySolution();
my.test();
MySolution my2 = new MySolution();
my2.test();
}
}

结果为:
This is Static Code Block
This is Common Code Block
This is a constructor
Only For Test
This is Common Code Block
This is a constructor
Only For Test --------------------编程问答--------------------
引用 8 楼 eviljordan 的回复:
引用 7 楼 vvqiu 的回复:
引用 6 楼 eviljordan 的回复:
那么你认为的构造器是什么呢?
只是代码块……
我理解的构造器:构造函数(貌似也叫构造方法)  不知楼上觉得如何啊
一样的。只是不同的说法~

一般来说函数既是方法,方法便是函数 --------------------编程问答-------------------- 写一个无参的构造方法
如:
public inner(){
   //把你实例时,想要执行的代码,放在这个构造方法里就行了
} --------------------编程问答-------------------- 这是构造代码块吧 --------------------编程问答--------------------
引用 21 楼 boblxj 的回复:
静态代码块,也就是写在任何函数体外的以static修饰的代码块。
类似
static{
}

普通代码块,就是写在任何函数体外的代码块
{
}

对象初始化顺序:
1、静态代码块(对象的类第一次被加载时,会被执行,如果之前加载过,则不会被执行)
2、普通代码块(每次创建对象时,都会被执行)
3、构造函数
下面是个例子:
Java code?12……

++ --------------------编程问答-------------------- 其实我想说的是:LZ你的问题很模糊。。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,