黑马程序员技术交流社区
标题: java中代码块,谁能解释下 [打印本页]
作者: xiejun 时间: 2015-12-30 14:34
标题: java中代码块,谁能解释下
什么是代码块
作者: 李永佳 时间: 2015-12-30 14:38
就是一段大括号包含的代码
作者: Java1211张美红 时间: 2015-12-30 21:30
用{}括起来的,写代码的地方啊!
作者: 段家老病号 时间: 2015-12-30 21:59
所谓的代码块就是在程序中所有的用{}包含起来的代码,分类大概有局部代码块,静态代码块,构造代码块,同步代码块(这个跟多线程有关,我还没学到)
作者: 段家老病号 时间: 2015-12-30 22:03
局部代码块:理解上可以和局部变量一致,{。。。}这个块是定义在方法中的,作用是为了改变其中的如变量等的生命周期,有利于系统的内存,调用和释放的时间是和方法保持一致,但是局部内部类中有关的局部变量例外,你现在先理解这几大块内容就行;
作者: Garnet92 时间: 2015-12-30 22:07
学会了 ,多谢指教
作者: 段家老病号 时间: 2015-12-30 22:07
2,构造代码块:位置是在类中,在方法外,(这个所在的位置很清楚的),因为他的生命周期是随着构造方法,紧随其后,而且没创建一次对象就要调用一次构造函数,这个构造代码块就紧随着构造方法调用,我理解的是为了初始化变量用(和构造方法的作用一样,起着补充完善的作用);
作者: 段家老病号 时间: 2015-12-30 22:09
3:静态代码块:这个相对好理解一些,建议你先看下创建对象时候的内存图,课堂笔记里都有的,静态代码块对我们现在没什么太大的用处(主要是加载驱动的时候用,这也是为什么只需要他再加载类的时候只调用一次),作用是给类进行初始化,生命周期随着类走。
作者: 段家老病号 时间: 2015-12-30 22:11
别的想起来会继续补充的,希望能够帮到你,面向对象这块,先理解定义,如变量,类,方法,局部,这些理解了把调用方法,创建对象等几个流程图看明白记住就没问题了。
作者: 段家老病号 时间: 2015-12-30 22:13
希望能够帮到你,一起进步,加油!
作者: 李永佳 时间: 2015-12-31 15:20
本帖最后由 李永佳 于 2015-12-31 15:21 编辑
局部代码块:
作用:控制变量的生命周期;
在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。
表现形式,以代码体现如下:
- class TestDemo
- {
- public static void main(String[] args)
- {
- {
- int x = 9;
- System.out.println(x);
- }
- System.out.println("Hello World !");
- }
- }
复制代码
构造代码块:
作用:它可以给所有对象进行初始化
存在于:类中。
当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!
- class Person
- {
- private String name;
- private int age;
- {
- System.out.println("cons code run !");
-
- }
- Person() // 给对应的对象进行初始化
- {
- System.out.println("Person Now:RUN !");
- System.out.println("eat————");
- }
- Person (String name , int age)
- {
- this.name = name ;
- this.age= age;
- System.out.println(this.name + "————" + this.age);
- System.out.println("eat————");
- }
-
- }
- class ConsCodeDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person();
- Person p1 = new Person("LiSi" , 23);
- }
- }
复制代码
静态代码块:
特点:
1. 随着类的加载而执行,而且只一次。
2. 优先于主函数执行。
作用:给类进行初始化。
当类中的方法都被静态了化,并且构造方法被private了,这是我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块:
表现形式,以代码体现如下:
- class StaticCode
- {
- static
- {
- System.out.println("A");
- }
- public void show()
- {
- System.out.println("Hello World !");
- }
- }
- class StaticCodeDemo
- {
- static
- {
- System.out.println("B");
- }
- public static void main(String[] args)
- {
- new StaticCode().show();
- }
- static
- {
- System.out.println("C");
- }
- }
复制代码
作者: Forwhat 时间: 2015-12-31 16:39
我理解的代码块就是面向对象的基本结构,有了代码块才能实现面向对象,不然就是面向过程了,那还要java干啥啊,还不如C编程来得实在
作者: 洋葱头头 时间: 2015-12-31 21:42
大括号里的就叫代码快
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |