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

怎么理解类里面的这样一个方法

如题:代码如下:

{
System.out.println(b);
System.out.println("o");
System.out.println("o");
System.out.println("k");
}


在类里面写这样一段代码,所有的代码仅仅包含在一对大括号,也没有方法名,请问下高手如何理解这样一段代码,难道它是构造函数的一种吗? --------------------编程问答-------------------- 劝楼主好好学习下java基础知识 --------------------编程问答-------------------- 输出一行 b是b对应的赋值,其他是输出一行“”里的字符 --------------------编程问答--------------------
引用 1 楼 jzf523203725 的回复:
劝楼主好好学习下java基础知识

谢谢,我的java基础确实不行。呵呵 --------------------编程问答-------------------- “在类里面写这样一段代码,所有的代码仅仅包含在一对大括号,也没有方法名”
----这样的代码能编译通过么楼主?楼主把全部代码贴出来看看 --------------------编程问答-------------------- 【修饰符】 class 类名【extends 父类名】【implements 接口名】
 {   成员变量;//表明类的状态
     成员方法;//描述类的行为
 }

水果类
{  颜色;//属性
   价格;//属性
   吃()//方法
   { 
   }
}
上面的写法是不对的,一个类可以不定义属性,但必须要有方法,个人理解。如有不对,欢迎纠正。建议你写一个完整的程序出来,可以将问题描叙清楚。 --------------------编程问答-------------------- 应该是一个语句块 --------------------编程问答-------------------- 虽然不知道是对是错。。但是没见过,类名、方法名能省吗?? --------------------编程问答-------------------- 就叫 块

还有一种是前面加static的

static {

}


这种见得应该更多一些 --------------------编程问答-------------------- 例如:
class A {
  sysout...
  sysout...
}
这的定义一个类,类没有main方法,也就是说不能独立运行,
或者是8 楼说的
class A {
  static {
   //这叫静态代码块
  }
   
  {
   //这叫代码块
   }


}

你说的构造方法和这个无关。
如果你不显示地定义构造方法,系统会默认地提供无参数的,名字由类型而定的无参数构造方法。
静态代码块是Java虚拟机加载类的时候执行的,
代码块是对 对象的初始化。
--------------------编程问答-------------------- static代码块,static块执行的速度比类的执行速度快,类和static块同时加载在JVM上,但是类加载在JVM上要实例化,因此static块的执行速度快 --------------------编程问答--------------------
引用 5 楼 mkaser 的回复:
【修饰符】 class 类名【extends 父类名】【implements 接口名】
 {   成员变量;//表明类的状态
     成员方法;//描述类的行为
 }

水果类
{  颜色;//属性
   价格;//属性
   吃()//方法
   { 
   }
}
上面的写法是不对的,一个类可以不定义属性,但必须要有方法,个人理解。如有不对,……
瞎说!上面的写法叫做初始化块,类可以不定义属性,也可以没有方法。建议你自己先敲几行代码看看。 --------------------编程问答-------------------- 这个就是构造初始化块吧,只不过lz提供的代码没做什么事情,在new这个类的对象的时候,这个初始化块都会执行的,而且是先执行这个,然后执行构造函数的。作用的话其实我认为意义不是很大,因为平时写代码的时候都没这么用过 --------------------编程问答--------------------
引用 11 楼 csh602583095 的回复:
引用 5 楼 mkaser 的回复:【修饰符】 class 类名【extends 父类名】【implements 接口名】
 {   成员变量;//表明类的状态
     成员方法;//描述类的行为
 }

水果类
{  颜色;//属性
   价格;//属性
   吃()//方法
   { 
   }
}
上面的写法是不对的,一个类可以不定义属性,……

瞎说!上面的写法叫做初始化块,类可以不定义属性,也可以没有方法。建议你自己先敲几行代码看看。
 你说的是对的,确实是可以不定义方法,不过感觉这种类的实用性好像不是很强吧?第一次看到这样的类。 --------------------编程问答-------------------- 谢谢大家的讨论,有多少个这样的代码块,new初始化对象的时候都会调用。 --------------------编程问答-------------------- java编程思想里叫非静态实例初始化.
在类的空间分配完后执行,只能为类变量赋值,而不能直接引用类变量.
楼主可以试验一下. --------------------编程问答-------------------- 只能说建议楼主好好看看java语言细则吧,,这个明显是基础啊!!! --------------------编程问答-------------------- 是代码块,常见静态块
static{....} //优先于构造方法执行,他在JVM加载类的时候就一并执行了。 --------------------编程问答--------------------
引用 5 楼 mkaser 的回复:
【修饰符】 class 类名【extends 父类名】【implements 接口名】
 {   成员变量;//表明类的状态
     成员方法;//描述类的行为
 }

水果类
{  颜色;//属性
   价格;//属性
   吃()//方法
   { 
   }
}
上面的写法是不对的,一个类可以不定义属性,但必须要有方法,个人理解。如有不对,……




一个类可以不定义属性,但必须要有方法,亲,我顶一个class A 什么都不写不可以啊,你这话我看不懂 --------------------编程问答-------------------- 这就是一个非静态块而已,在ClassLoader加载类时执行。和方法有本质区别,方法是可以被调用的,它就加载时运行一次,没有句柄,无法被别的对象调。 --------------------编程问答-------------------- 崩溃了,大家看一下堆栈怎么存放代码在说好吗,分几个区!静态区、常量区、代码区等! --------------------编程问答--------------------
引用 19 楼 forgetsam 的回复:
这就是一个非静态块而已,在ClassLoader加载类时执行。和方法有本质区别,方法是可以被调用的,它就加载时运行一次,没有句柄,无法被别的对象调。


精辟
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,