上一次留的作业做的如何了,下面我们来一起讨论一下
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); } }
我们声明了一个类常量,看看结果
既然是类常量,永久不变,所以我们有一个便利,那就是可以直接引用,不需要先构建出来一个对象;怎么用,自己先考虑考虑,后面我们就会遇到了;
好了,这篇到此为止,下一篇,我们会来了解下运算符!
留个小问题,你所知道的运算符有哪些,他们可以按类型就行划分么?
相关推荐
现在,我们将从零开始,深入探讨Z-Stack的相关知识点。 1. **Z-Stack的基础概念** - **Z-Stack架构**:Z-Stack通常由设备层、网络层和应用层构成,每一层都有特定的任务和功能,确保设备之间的高效通信。 - **...
Z-Stack ZCL API 是德州仪器(Texas Instruments, 简称TI)发布的一份技术文档,主要涉及ZigBee技术中的ZigBee Cluster Library(ZCL)API。ZigBee是一种基于IEEE 802.15.4标准的无线通信协议,常用于个人区域网络,...
ISE IP核使用说明涉及了多个数字电路设计中使用的基础IP(Intellectual Property,知识产权)核组件。这些IP核组件通常被集成在FPGA(Field Programmable Gate Array,现场可编程门阵列)设计中,以简化硬件设计流程...
纯 Java ZigBee 应用程序框架 Bekko提供用于开发 ZigBee 应用程序的 Java API,并允许用户应用程序与标准 ZigBee 设备进行通信。 与其他“XBee API Java-Wrapper”不同,Bekko 具有 ZDO/ZDP 实现和标准化的 APS 数据...
### 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" 提供了一个关键信息,即文档是使用Spire.PDF for Java工具创建或处理的。Spire.PDF for Java是一款由E-iceblue公司开发的PDF库,它允许Java开发者在应用...
1. **时间戳**(41位):从2015年1月1日(UTC/GMT的00:00:00)开始至未来的毫秒数。这部分可以表示大约69年的时间,足以覆盖大部分业务场景。 2. **工作节点ID**(10位):用来区分不同的工作节点,可以配置为数据...
- ZPR和ZCL:手动回零后自动设定工件坐标系及是否取消局部坐标系。 - 第一至第四参考点的坐标值:设定参考点的位置,便于工件定位。 5. **行程限位参数**: - 第一至第三行程限位的正向和反向值:定义行程边界,...
所有测试类的类别为ZCL_CI_CATEGORY_DSAG 。 ZCL_CI_TEST_DSAG_PRETTY_PRINT 用于检查Pretty Print是否已应用于源代码的类。 ZCL_CI_TEST_COMP_PROCS 用于执行各种基于代码的测试的类(有关详细信息,请参见docu)。...
注意:生成的代码当前使用ZCL_OAPI_JSON,建议将实现复制到生成的全局类中的本地类 生成旨在在v702上运行 生成的客户端代码旨在在v702上运行 建筑/开发 prerequsites = 12+ 安装npm install npm test =运行单元...
- 应用层(APL):讲解ZigBee应用框架,包括ZigBee PRO和ZigBee Cluster Library(ZCL),以及如何实现自定义应用。 3. **ZigBee网络构建** - 设备角色:节点类型如协调器、路由器和终端设备的角色和职责。 - ...
- **类名**: ZCL_CRM_GENIL_QUERY。 - **超类**: CL_WCF_GENIL_ABSTR_COMPONENT。 - **目的**: 定义一个自定义的组件类来支持后续的复杂查询逻辑。 ##### 2. 维护视图簇 - **T-Code**: SM34。 - **视图簇**: CRMVC_...
- **READ**:从屏幕读取用户输入。 - **ALV**(Application List Viewer):用于创建复杂的表格输出。 #### 三、ABAP高级特性 ##### 3.1 面向对象编程 ABAP支持面向对象编程,包括类的定义、继承、封装等特性。...
蓝桥杯单片机——09 定时器设计秒表,这个是我学习蓝桥杯单片机时,通过B站上的各种视频资源整理出来的代码。...相关链接《蓝桥杯单片机竞赛各模块总结》:https://blog.csdn.net/ZCL__/article/details/109250325
- **OSI/RM参考模型与TCP/IP体系结构**:了解这两者之间的区别和联系,OSI模型分为七层,而TCP/IP模型则分为四层。两者都是为了描述网络通信的过程和规范,但实际应用中TCP/IP更为广泛。 - **以太网技术和传统传输...
蓝桥杯单片机——20 定时器,这个是我学习...模式三:数码管前三位显示-3- 设定的数字开始倒计时,数字为0时蜂鸣器响。 相关链接《蓝桥杯单片机竞赛各模块总结》:https://blog.csdn.net/ZCL__/article/details/1
- 使用`ZCL_ADOBE_FILL_SFLIGHT`类的静态方法`GET_DATA`获取数据,其中`i_carrid`作为输入参数。 - 数据存储在`isflight`变量中。 4. **调用功能模块** - 使用步骤2中得到的功能模块名称`i_funcname`来调用功能...
#### 四、ZigBee Cluster Library的应用场景 ZigBee Cluster Library 主要应用于智能家居、智能建筑、工业自动化等领域。通过ZCL,不同的设备可以共享一组通用的功能和行为,从而实现无缝集成。 - **智能家居**:...
在Java开发中,生成PDF文件并添加公章图片是一项常见的任务,尤其在电子文档处理和企业自动化流程中。这里,我们探讨如何使用Java实现这一功能,并将生成的文件上传至阿里云存储服务。以下是一些关键知识点: 1. **...
两份文档: zigbee-cluster-library-specification Document: 07-5123-06 zigbee-cluster-library-specification Document:ZigBee Document 075123r04ZB 2012