java面向对象值类属语句块
在我们之前学习语句的时候,我们讲过一种比较特殊的语句块,那就是局部代码块。局部代码块的作用是什么呢,就是把临时使用的变量放在里面,之后执行完之后,局部代码块中定义的变量会直接被释放,这样就避免了那些我们只用一次的变量的释放。那么类当中有么有一种比较特殊的代码块么?肯定是有的,我们现在就来看下,在类方法外部定义的类的代码块都有什么作用?
代码实例:
class ClassScop
{ int num;
String name;
/**
*类内部的代码块开始
*/
{
System.out.println("Hello World!");
} ClassScop(int num,String name)
{ this.num = num;
this.name = name; } static void sayLoud()
{ System.out.println("Say Loudly"); } } class ScopDemo
{ public static void main(String[] args) {
//初始化对象
ClassScop cs1 = new ClassScop(10,"Hello cs1");
ClassScop cs2 = new ClassScop(9,"Hello cs2"); } }
这个地方,当我们new两个对象的时候,我们会发现此时类内部的代码块被调用了两次,那么调用这个类内部的代码块到底跟谁有关系呢?这个我们是不是还不清楚呢?到底是跟类有关系还是跟类的对象有关系,为了验证以上我们的推测哪个是正确的,这里我们来写个代码验证下:
class ScopDemo
{ public static void main(String[] args) {
//初始化对象
//ClassScop cs1 = new ClassScop(10,"Hello cs1");
//ClassScop cs2 = new ClassScop(9,"Hello cs2");
//因为静态变量是先于对象而存在的,如果这个跟对象有关系,此时结果就不会出现,反之则出现
ClassScop.sayLoud(); } }
当编译运行这段代码之后,我们没有得到 hello world,所以说这个过程跟对象的构造有关系,也就是说这里说的类内方法之外的代码块,称他为构造代码块,更贴切一些。
那么我们再来思考一个问题,静态代码块--构造代码块--构造函数--局部代码块 这四个代码块产生的顺序是怎样的呢?
下面我们用一个完整的示例来猜测下:
class ClassScop
{ int num;
String name; {
System.out.println("Hello Construct Scop!");
} ClassScop(int num,String name)
{ this.num = num;
this.name = name;
System.out.println("Hello ClassScop"); } static void sayLoud()
{ System.out.println("Hello Static"); } void sayJuBu()
{ { System.out.println("Hello Jubu"); } } } class ScopDemo
{ public static void main(String[] args) { ClassScop.sayLoud();
ClassScop s1 = new ClassScop(10,"ddd"); } }
这个就是编译之后生成的结果,初始化顺序是:静态第一、构造代码块第二、构造函数第三、局部代码块第四(很多变,分在静态还有在动态方法中论述)。
以上就是对构造代码块的讲述,构造代码块的用途,待续....
java面向对象值类属语句块的更多相关文章
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- JAVA面向对象-----值交换(基本数据类型 数组类型 对象的值 字符串的)
JAVA面向对象-–值交换 基本数据类型交换 数组类型交换 对象的值交换 字符串的值交换 恩,没错,又是贴图,请大家见谅,我也是为了多写几个文章,请大家谅解. 字符串的值交换: 交换值失败. 这个文章 ...
- Java核心基础第5篇-Java面向对象_类和对象
Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...
- Java面向对象(类、封装)
面向对象 今日内容介绍 u 面向对象 u 封装 第1章 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. l 面向过程的程序设计方式,是遇到一 ...
- 左右 Java 于 finally 深度分析语句块
首先,让我们来问你一个问题:finally 声明块将运行? 很多人认为 finally 语句块是一定要运行.其中还包括了一些非常有经验的 Java 程序猿.不幸的是,没有像很多像人们想象,对于这个问题 ...
- 这次齐了!Java面向对象、类的定义、对象的使用,全部帮你搞定
概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备自 ...
- java面向对象之 类和对象
OOP:Object Oriented Programming(面向对象编程) 面向对象: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在 ...
- Java面向对象(一) 类和对象
一.软件开发进化史 摘自<从零开始学架构> 机器语言(1940年) 最早的软件开发使用的是“机器语言”,直接使用二进制码0和1来表示机器可以识别的指令和数据. 汇编语言(20世纪40年代) ...
- Java—面向对象、类与对象、封装
理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...
随机推荐
- linux内核学习-建议路线
三大经典书: LDD: Linux Device Driver 容易上手 LKD: Linux Kernel Development 通俗易懂 UDK: Understand Linux Kernel ...
- java.sql.SQLException: Invalid parameter object type. Expected 'java.util.Map' but found 'java.lang.String 转载
java.sql.SQLException: Invalid parameter object type. Expected 'java.util.Map' but found 'java.lang. ...
- Java SE 6 新特性: 编译器 API
新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: ...
- [转] 让ctags支持Javascript
mac下安装exuberant ctags mac 下自带ctags但是功能有限,要使用一些常用的功能需要安装exuberant ctags 下载exuberant ctags 安装exuberant ...
- viewpager+fragment学习笔记
有暇,总结一下viewpager+fragment的使用. 先来看看效果图: 有三个标题,三个fragment,滑动时标题的颜色会随着变化. MainActivity.java public clas ...
- css考核点整理(十一)-响应式开发经验,响应式页面的三种核心技术是什么
响应式开发经验,响应式页面的三种核心技术是什么
- Oracle高版本导出dmp导入Oracle低版本报错:"不是有效的导出文件、头部验证失败"解决方法
从Oracle高版本中导出dmp,然后导入到Oracle低版本时会报错:"不是有效的导出文件.头部验证失败",解决方法: 方法一:下载软件:AlxcTools,打开后选择要修改的文 ...
- SGU 226.Colored graph(最短路)
时间限制:0.25s 空间限制:4M 题意: 给出一个n个节点,m条边的图,每条边都有标记了编号为1,2,3三种颜色之一,现在求从1号节点到n号节点的一条最短路径的长度,要求该路径中相邻的边没有相同的 ...
- apple iphone 3gs 有锁机 刷机 越狱 解锁 全教程(报错3194,3014,1600,短信发不出去等问题可参考)
以自身经历列步骤如下:(基本思路就是刷6.1.6,越狱,降级基带,解锁) 一.准备工作 1.下载3gs 6.1.6官方固件.地址:http://act.feng.com/wetools/index.p ...
- html 标签的嵌套规则
1. 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素: <div><h1></h1><p></p> ...