`
fox_mt
  • 浏览: 24028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从零开始学java-(四)for ZCL:java变量

 
阅读更多

   上一次留的作业做的如何了,下面我们来一起讨论一下

1,我们今天写了这么多实例。他们的共同点是什么?

 我们的这些事例,共同点我们来总结一下,首先就是 public class [类名]

这个public是什么呢?是java 的访问控制,打个比方。跟权限似得,我是一个类,我把自己标记为public,那么,谁都可以来访问我,因为public就是公共的,所以随便来,如果是其他的那就不行了;java一共定义了11中修饰符,分别是什么,作用是什么,大家自己去寻找答案,下次我们再来讨论;

这次要说的就是目前我们写的类都是用public来修饰,对于现在的我们来说,public class [类名] 就是固定的

第二个共同点,就是方法; public static void main(String[] args){***}

public不用解释,公共的,谁都可以访问,static,是11种修饰符中的一种,俗称静态,void代表没有返回值,因为有的时候我们的方法可能需要返回一些东西,而测试的时候都打印在控制台了。所以我们没有返回值,main,就是方法名,为什么用这个呢,因为他是java应用程序的入口,换句话说,java 的应用程序必须要有main方法,java虚拟机就是通过这个方法来运行我们的程序。那么总结一下,我们定义方法的时候就是 public [是否静态] [返回值] [方法名] 是否静态这里,如果方法不是静态的,那么就没有修饰符。暂且我们先记下,后面会发现,public的位置,可以换成其他的控制修饰符

第三个共同点,每行都有分号,这个分号简单而重要,没有他,编译是不可能过去的,java是用分号来分隔每个句柄,句柄可以理解为每行,每个变量。

2,知道什么是变量么?我们今天得知识里面有么?哪些是呢?

上一篇的实例中有很多的变量,例如 int realInt = 22;类似的都是变量,变量的解释就是程序运行中会发生变化的量。这个概念对于我们来说很重要,程序是死的,但变量是活的,这样程序才能做不同的操作,完成不同的功能,查出不同的结果。回想下之前学过的内容,java是强类型语言,那么声明一个变量的时候必须的是什么东西呢?类型,每次声明,都必须制定变量的类型,否则会编译出错,因为java不知道他是谁了。从上一篇的例子中我们可以发现,声明的变量的时候就是

[类型] 变量名 = 变量值;

我们声明了类型之后,虚拟机就会申请一块内存空间,空间的名字就是变量名,如果我们没有对变量初始化,那么空间就是空的,没有值,如果初始化了,那么内存中保存的就是我们的变量值。

如果是同一类型的变量,我们也必须要写两行么?答案是否定的, 可以写在一行,如int a1,a2;用逗号分隔,不过建议还是分开写,清晰很多.

 

下面我就来详细的了解下变量

变量按照作用范围来划分,分为全局变量,局部变量

从字面看,第一个范围肯定大,这个全局就是指在整个类的范围之内都是有效的,局部就是在某个局部的范围内有效,这个局部范围,是变量所在的局部位置

这个概念并不复杂,在上代码之前,先来个小问题,main方法是static,也就是静态的,而声明的变量不是静态,下面代码就能看到,那么在main方法中能直接使用这个变量么?不能使用,怎么办呢?

好了,看代码

public class Variable{
	int var1 = 10;
	int var2 = 22;
	public static void main(String[] args){
		Variable var = new Variable();
		System.out.println("全局变量var1: " + var.var1);
		var.print();
	}

	public void print(){
		int var3 = 12;
		System.out.println("这个是局部变量var3: " + var3);
	}
}

  

再来看看结果



 

 

仔细观察我们的实例代码,在main方法中我们没有直接使用变量var1,为什么呢?自己去试试,直接使用var1,或者var2看看会发生什么?

来试试:看看编译的结果



         看到了,错误很明显,静态的上下文(main方法),引用了非静态的变量var1,所以,以后要记得了。

例子中,我们是使用Variable var = new Variable(); 来得到了var这个对象,然后使用了这个对象的属性var1

这里就出现两个概念了,对象,和属性;理解这两个概念,离不开类。类就是一类,经典的解释就是,人,是一个类,学生也是一个类,你,就是一个人,就是一个对象,你的眼睛,就是你的属性,这个属性,是在人这个类中定义出来,没眼睛那就是怪物了;那么new是干嘛的,这个就关键了,没有new就没有对象了,说的玄乎一点儿,母亲生孩子的时候,可以理解为new的过程,你的母亲的大人把你给new出来了。。然后你就有很多人类的属性。眼睛,鼻子,耳朵,等等,,,‘

下面我来看个错误的例子,那就是在不该引用的位置引用局部变量,这个不该引用的位置,就是不在局部变量的作用范围之内

看代码

public class Variable{
	static int var1 = 10;
	static int var2 = 22;
	public static void main(String[] args){
		System.out.println("全局变量var1: " + var1);
		System.out.println("局部变量var3: " + var3);
	}

	public void print(){
		int var3 = 12;
		System.out.println("这个是局部变量var3: " + var3);
	}
}

 

来,编译看看



 

看到了错误信息是:找不到符号?很明显就是他了,var是局部变量,定义在了print方法中,也就是说,除了print方法,谁都不能访问;

 好了,说完了根据作用范围划分,下面换个维度,根据变量类型划分,之前我们有提到过,八种基本数据类型,他们算作是一类,叫做基本类型,还有另外一类,叫做对象类型,对象类型,暂且先记下这个对象类型,之前讲了一点儿,后面会继续研究。基本类型的定义我们之前已经体会过了,这里就不再赘述

现在说了按两种维度来划分,下面来说第三种维度,这个维度和第一个维度,作用范围有点儿近似。第一个维度是作用范围,而第三个,是说按照所属范围来划分

变量按照所属范围来划分,也是两种; 类变量和成员变量,。他们很好区分,就是看变量声明的时候有没有static这个修饰符,例如,变量1:static int start = 1; 变量2: int end = 1; 很显然的看出,变量1是类变量,2是成员变量,这是看上去的区别,那么程序运行的时候他们有什么区别呢?是这样的,类变量是在类中直接定义的,不会随着类产生的对象变化而变化,上面我们说过,对象由类产生,一个类可以产生很多很多个对象,每个对象都是单独的个体,而类变量就是不管有多少个对象,也不管这些对象怎么变化,这个值都不会变,而成员变量则不然,他会随着对象的变化而变化,会有不同的值。

这个就不给代码了。大家感受一下就好了;

说完了变量的概念,那么变量怎么初始化呢?不知道初始化是什么?初始化就是赋个初值给变量了~\(≧▽≦)/~

直接来两段代码。大家猜猜结果,然后再说;接代码

第一段如下:

public class VariableVal{
	
	byte varByte;
	short varShort;
	int varInt;
	long varLong;
	float varFloat;
	double varDouble;
	char varChar;
	boolean varBoolean;

	public static void main(String[] args){
		VariableVal val = new VariableVal();
		System.out.println("数据varByte =" + val.varByte);
		System.out.println("数据varShort =" + val.varShort);
		System.out.println("数据varInt =" + val.varInt);
		System.out.println("数据varLong =" + val.varLong);
		System.out.println("数据varFloat =" + val.varFloat);
		System.out.println("数据varDouble =" + val.varDouble);
		System.out.println("数据varChar =" + val.varChar);
		System.out.println("数据varBoolean =" + val.varBoolean);
	}

}

 

 这个程序会输出什么?仔细思考下,思考不到,那么猜一猜,蒙一蒙。

在看过下面这段程序之后我们再说结果,go on

代码段二:

public class VariableVal{
	

	public static void main(String[] args){
		byte varByte;
		short varShort;
		int varInt;
		long varLong;
		float varFloat;
		double varDouble;
		char varChar;
		boolean varBoolean;
		System.out.println("数据varByte =" + varByte);
		System.out.println("数据varShort =" + varShort);
		System.out.println("数据varInt =" + varInt);
		System.out.println("数据varLong =" + varLong);
		System.out.println("数据varFloat =" + varFloat);
		System.out.println("数据varDouble =" + varDouble);
		System.out.println("数据varChar =" + varChar);
		System.out.println("数据varBoolean =" + varBoolean);
	}

 

 对比下这两端代码,第一个结果是这些变量,第一段程序的变量都是全局变量,第二段程序的变量都是局部变量

代码看完了,自己动手写一写,来看结果

结果1;

 

看到了,除了char没有值,其他的都被按照自己的类型输出了默认值

再看第二段结果

 

 额,第二段编译报错了,看看错误信息,说什么?变量没被初始化,也就是说全局变量不需要初始化,而局部变量必须初始化;其实全局变量不是不需要初始化,作为全局变量,java是由特殊照顾的,会偷偷的进行初始化。所以才能通过编译,正常运行。

 

好了,现在我们知道了很多概念,全局变量,局部变量;基本变量, 对象变量;类变量,成员变量;这些统称变量。是说java程序运行过程中需要的变量,事物都是两面的,有变的,那么就一定有不变的,程序运行中可能有的值一辈子都不会变,这种值我们就叫做常量;常量很特殊,从程序开始,到程序结束,恒久不变,手动改代码的不算啊!常量如果声明呢?

用关键字final来修饰的量就是常量,下面我们来声明个常量试试;看代码

public class VariableFinal{
	
	static final int finalVar = 10;
	public static void main(String[] args){
		
		System.out.println("数据finalVar =" + finalVar);
	}

}

     我们声明了一个类常量,看看结果



 

既然是类常量,永久不变,所以我们有一个便利,那就是可以直接引用,不需要先构建出来一个对象;怎么用,自己先考虑考虑,后面我们就会遇到了;

 

好了,这篇到此为止,下一篇,我们会来了解下运算符!

留个小问题,你所知道的运算符有哪些,他们可以按类型就行划分么?

  • 大小: 12.6 KB
  • 大小: 16 KB
  • 大小: 16.2 KB
  • 大小: 18.8 KB
  • 大小: 86.2 KB
  • 大小: 7.4 KB
分享到:
评论

相关推荐

    从零开始学习Z-Stack

    现在,我们将从零开始,深入探讨Z-Stack的相关知识点。 1. **Z-Stack的基础概念** - **Z-Stack架构**:Z-Stack通常由设备层、网络层和应用层构成,每一层都有特定的任务和功能,确保设备之间的高效通信。 - **...

    Z-Stack ZCL API.PDF

    Z-Stack ZCL API 是德州仪器(Texas Instruments, 简称TI)发布的一份技术文档,主要涉及ZigBee技术中的ZigBee Cluster Library(ZCL)API。ZigBee是一种基于IEEE 802.15.4标准的无线通信协议,常用于个人区域网络,...

    ISE IP核使用说明

    ISE IP核使用说明涉及了多个数字电路设计中使用的基础IP(Intellectual Property,知识产权)核组件。这些IP核组件通常被集成在FPGA(Field Programmable Gate Array,现场可编程门阵列)设计中,以简化硬件设计流程...

    bekko:ZigBee 应用层(APS、ZCL、ZDP)Java 实现

    纯 Java ZigBee 应用程序框架 Bekko提供用于开发 ZigBee 应用程序的 Java API,并允许用户应用程序与标准 ZigBee 设备进行通信。 与其他“XBee API Java-Wrapper”不同,Bekko 具有 ZDO/ZDP 实现和标准化的 APS 数据...

    Z-Stack ZCL API

    ### Z-Stack ZCL API 知识点解析 #### 一、引言 ##### 1.1 目的 本文档旨在提供Z-Stack ZigBee Cluster Library (ZCL) API 的详细介绍,帮助开发者理解并利用这些API进行ZigBee设备的应用程序开发。 ##### 1.2 ...

    The document was created with Spire.PDF for Java

    标题 "The document was created with Spire.PDF for Java" 提供了一个关键信息,即文档是使用Spire.PDF for Java工具创建或处理的。Spire.PDF for Java是一款由E-iceblue公司开发的PDF库,它允许Java开发者在应用...

    生成数字的全局唯一Id.zip

    1. **时间戳**(41位):从2015年1月1日(UTC/GMT的00:00:00)开始至未来的毫秒数。这部分可以表示大约69年的时间,足以覆盖大部分业务场景。 2. **工作节点ID**(10位):用来区分不同的工作节点,可以配置为数据...

    日本fanuc system parameter.doc

    - ZPR和ZCL:手动回零后自动设定工件坐标系及是否取消局部坐标系。 - 第一至第四参考点的坐标值:设定参考点的位置,便于工件定位。 5. **行程限位参数**: - 第一至第三行程限位的正向和反向值:定义行程边界,...

    ist的matlab代码-ATC-Best-Practice-Guide:ABAP测试驾驶舱最佳实践指南

    所有测试类的类别为ZCL_CI_CATEGORY_DSAG 。 ZCL_CI_TEST_DSAG_PRETTY_PRINT 用于检查Pretty Print是否已应用于源代码的类。 ZCL_CI_TEST_COMP_PROCS 用于执行各种基于代码的测试的类(有关详细信息,请参见docu)。...

    abap-openapi-client:ABAP中的ABAP OpenAPI客户端生成器

    注意:生成的代码当前使用ZCL_OAPI_JSON,建议将实现复制到生成的全局类中的本地类 生成旨在在v702上运行 生成的客户端代码旨在在v702上运行 建筑/开发 prerequsites = 12+ 安装npm install npm test =运行单元...

    ZigBee中级培训.rar

    - 应用层(APL):讲解ZigBee应用框架,包括ZigBee PRO和ZigBee Cluster Library(ZCL),以及如何实现自定义应用。 3. **ZigBee网络构建** - 设备角色:节点类型如协调器、路由器和终端设备的角色和职责。 - ...

    CRM GENIL模型开发

    - **类名**: ZCL_CRM_GENIL_QUERY。 - **超类**: CL_WCF_GENIL_ABSTR_COMPONENT。 - **目的**: 定义一个自定义的组件类来支持后续的复杂查询逻辑。 ##### 2. 维护视图簇 - **T-Code**: SM34。 - **视图簇**: CRMVC_...

    ABAP开发资料,基础学习资料,有兴趣的了解.pptx

    - **READ**:从屏幕读取用户输入。 - **ALV**(Application List Viewer):用于创建复杂的表格输出。 #### 三、ABAP高级特性 ##### 3.1 面向对象编程 ABAP支持面向对象编程,包括类的定义、继承、封装等特性。...

    蓝桥杯单片机——09 定时器设计秒表.rar

    蓝桥杯单片机——09 定时器设计秒表,这个是我学习蓝桥杯单片机时,通过B站上的各种视频资源整理出来的代码。...相关链接《蓝桥杯单片机竞赛各模块总结》:https://blog.csdn.net/ZCL__/article/details/109250325

    学习计划模板合集7篇.docx

    - **OSI/RM参考模型与TCP/IP体系结构**:了解这两者之间的区别和联系,OSI模型分为七层,而TCP/IP模型则分为四层。两者都是为了描述网络通信的过程和规范,但实际应用中TCP/IP更为广泛。 - **以太网技术和传统传输...

    蓝桥杯单片机——20 定时器.rar

    蓝桥杯单片机——20 定时器,这个是我学习...模式三:数码管前三位显示-3- 设定的数字开始倒计时,数字为0时蜂鸣器响。 相关链接《蓝桥杯单片机竞赛各模块总结》:https://blog.csdn.net/ZCL__/article/details/1

    SAP adobe 打印代码

    - 使用`ZCL_ADOBE_FILL_SFLIGHT`类的静态方法`GET_DATA`获取数据,其中`i_carrid`作为输入参数。 - 数据存储在`isflight`变量中。 4. **调用功能模块** - 使用步骤2中得到的功能模块名称`i_funcname`来调用功能...

    zigbee-cluster-library-specification

    #### 四、ZigBee Cluster Library的应用场景 ZigBee Cluster Library 主要应用于智能家居、智能建筑、工业自动化等领域。通过ZCL,不同的设备可以共享一组通用的功能和行为,从而实现无缝集成。 - **智能家居**:...

    Java 生成pdf文件加盖公章图片,上传阿里云

    在Java开发中,生成PDF文件并添加公章图片是一项常见的任务,尤其在电子文档处理和企业自动化流程中。这里,我们探讨如何使用Java实现这一功能,并将生成的文件上传至阿里云存储服务。以下是一些关键知识点: 1. **...

    zigbee-cluster-library-specification 2012版和最新版

    两份文档: zigbee-cluster-library-specification Document: 07-5123-06 zigbee-cluster-library-specification Document:ZigBee Document 075123r04ZB 2012

Global site tag (gtag.js) - Google Analytics