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—面向对象、类与对象、封装
理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...
随机推荐
- 使用 asp.net mv4开发企业级办公OA
大家好!这是我第一次写asp.net 开发笔记,哪里写的不好,请见谅! 本程序是一个在线办公(OA)系统 B/S项目: 项目开发环境:Microsoft Visual Studio 2012 + Sq ...
- 关于在MDK4.5以上版本不能使用JLINK V8的解决办法
如果安装MDK4.50版本以上不能使用jlink8的话,请安装jlink 4.36k版本(或以下)驱动,安装完成后,把\SEGGER\JLinkARM_V436k目录下的JLinkARM.dll拷贝到 ...
- C#学习第一天
主要看了一些关于C#的发展期情况,对这门语言有了初步的了解,下面慢慢道来. 首先是C#语言的特点,相比较其他的语言,C#具有以下突出的特点: 1.语法简洁,不允许直接操作内存,去掉了指针操作: 2.彻 ...
- android listview 替代品recyclerview详解
安卓v7支持包下的ListView替代品————RecyclerView RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术 ...
- HashMap深度解析(二)
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/16890151 上一篇比较深入的分析了HashMap在put元素时的整体过 ...
- postgre sql 字符串转为integer类型
select cast(setting_value as integer) from ud_organization_setting. select cast('123123' as integer) ...
- Oracle主键自动生成_表and存储过程
-- Create table create table T_EB_SYS_DN_SEQUENCE_CONFIG ( sequence_id VARCHAR2(36) default sys_guid ...
- Java封装的与当前时间比较,得到多少年,多少月,多少天前,多少小时前,多小分钟前
public class CalendarCal { /** * 与当前时间比较,得到多少年,多少月,多少天前,多少小时前,多小分钟前 * * @param calendar * ...
- C# 多线程详解
1.使用多线程的几种方式 (1)不需要传递参数,也不需要返回参数 ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值. 复制代码 代码如下: cl ...
- free 堡垒机
环境: centos6.5 mini安装 iptables selinux已经关闭 jumpserver: 192.168.1.209 testserver: 192.168.1.210 一. 部署l ...