实验4:静态变量、静态方法与包
- 格式:doc
- 大小:49.50 KB
- 文档页数:3
静态变量和静态方法静态变量和静态方法是面向对象编程中常用的概念,它们在程序设计中起到了重要的作用。
本文将从静态变量和静态方法的概念、特点、使用方法和注意事项等方面进行详细介绍。
一、静态变量的概念和特点静态变量,也叫类变量,是指在类中以静态修饰符声明的变量。
与普通变量不同的是,静态变量属于类而不属于对象,它在整个程序运行期间只有一份拷贝,被所有对象共享。
静态变量的特点可以总结如下:1.1 生命周期长:静态变量的生命周期与整个程序的运行周期相同,当程序启动时被创建,直到程序结束才被销毁。
1.2 共享性强:静态变量被所有对象所共享,一旦被修改,所有对象都会受到影响。
1.3 存储位置固定:静态变量在内存中的存储位置固定,不会随着对象的创建和销毁而改变。
1.4 初始化一次:静态变量在类加载时进行初始化,只会执行一次。
二、静态变量的使用方法2.1 声明和定义:静态变量的声明和定义与普通变量类似,只需在变量名前加上static关键字即可。
2.2 访问和赋值:可以通过类名加点操作符来访问和赋值静态变量,也可以通过对象名加点操作符来访问静态变量。
2.3 静态变量的访问权限:与普通变量类似,静态变量可以设置不同的访问权限,如public、private、protected等。
三、静态方法的概念和特点静态方法,也叫类方法,是指在类中以静态修饰符声明的方法。
与普通方法不同的是,静态方法不依赖于任何对象,可以直接通过类名调用,它的特点可以总结如下:3.1 不依赖于对象:静态方法在执行时不需要创建对象,可以直接通过类名调用。
3.2 不能访问非静态成员:静态方法只能访问静态成员,不能访问非静态成员,因为非静态成员是依赖于对象的。
3.3 不能使用this和super关键字:静态方法中不能使用this和super关键字,因为它们需要依赖于对象。
3.4 可以重载:静态方法和普通方法一样,可以进行重载,即在同一个类中可以定义多个同名的静态方法,只要它们的参数列表不同即可。
静态变量和静态函数
静态变量和静态函数是C++中非常有用的概念。
静态变量是在程序运行期间始终保持其值不变的变量,而静态函数则是在整个程序中共享的函数。
这两个概念常常被使用在类和结构体中。
静态变量的声明使用关键字“static”,其在声明时会分配一次内存,而在程序生命周期内一直存在。
在函数内部声明的静态变量,它们的值会一直保持不变,直到下一次调用该函数。
静态变量还可以用于在函数调用之间保留状态信息,例如计算函数的平均值或记录函数调用次数。
静态函数的声明同样使用关键字“static”,其通常用于在类或结构体中创建一些全局函数。
这些函数不会被绑定到特定的对象上,而是可以在整个程序中被调用,从而方便共享和重用。
静态函数通常用于实现一些通用的算法或共享一些数据。
总之,静态变量和静态函数是C++中非常重要的概念。
它们可以帮助我们保留状态信息和共享数据和算法,从而提高程序的效率和可维护性。
- 1 -。
实验一熟悉Java开发环境(验证性2学时)一、实验目的与要求:1 掌握Java Application程序的开发过程并编写第一个Java Application程序*2 掌握Java Applet程序的开发过程并编写第一个Java Applet程序。
*3 练习简单的HTML文件配合Java Applet使用。
4 熟悉jdk的使用二、实验内容:1 编写一个Java Application程序,在屏幕上显示”This is my first java program!”.*2 编写第一个Java Applet 程序,在屏幕上显示”This is my first Java Applet!”三、实验步骤:1、jdk的使用jdk开发工具包可以从网站下载,jdk不是集成编译环境,须手动运用命令行程序进行编译和解释执行1)编辑.java文件可以在记事本或其他纯文本编辑器中编辑,保存时把文件扩展名定为.java即可,当然要注意文件名命名的要求2)编译生成.class文件进入dos系统进行编译(如图1.1所示),格式如javac MyFirstApplication.java,要注意图1.1进入命令行看javac.exe的路径并且MyFirstApplication.java文件路径和javac.exe路径一样。
编译成功后就能在浏览器中看见多了一个MyFirsApplication.class或更多的.class文件。
如图1.2所示图1.2使用jdk编译MyFirstApplication.java文件3)解释执行Application程序:同样是在dos系统下解释执行,格式如java MyFirstApplication,注意.class后缀别加,如图1.3所示。
图1.3解释执行MyFirstApplication.class程序* applet程序进入dos系统进行编译,格式如javac MyFirstApplet.java,要注意看javac.exe的路径并且MyFirstApplet.java文件路径和javac.exe路径一样。
实验1 开始python编程目的和要求(1)了解什么是python?(2)了解python的特性(3)学习下载和安装python(4)学习执行python命令和脚本文件的方法(5)学习python语音的基本语法(6)下载和安装Anaconda的方法(7)学习使用python的集成开发环境Anaconda&spyder的方法实验准备了解python(1)简单易学(2)Python是开源的、免费的(3)Python是高级语言(4)高可移植性(5)Python是解释型语言(6)Python全面支持面向对象的程序设计思想(7)高可扩展性(8)支持嵌入式编程(9)功能强大的开发库实验内容本实验主要包含以下内容(1)练习下载python(2)练习安装python(3)练习执行python命令和脚本文件(4)练习下载和安装pywin32(5)练习使用python的文本编辑juper Notebook(6)练习使用python的集成开发环境spyder1.下载python访问如下网址:https:///downloads/选择下载python3.4系列最新版本2.安装python☐在Windows 7中安装后,在开始菜单的所有程序中会出现一个Python2.7分组。
单击其下面的Python 2.7 (command line - 32 bit)菜单项,就可以打开python命令窗口,如图1-5所示。
也可以打开Windows命令窗口,然后运行python命令,来打开python命令窗口。
3.执行python命令和脚本☐创建一个文件MyfirstPython.py,使用记事本编辑它的内容如下:# My first Python programprint('I am Python')☐保存后,打开命令窗口。
切换到MyfirstPython.py所在的目录,然后执行下面的命令:python MyfirstPython.py☐运行结果如下:I am Python4.下载和安装Pywin32☐访问下面的网址可以下载Pywin32安装包。
常量定义静态变量静态方法关键字及特点常量定义:在程序中,常量是不可变的值,即在程序运行过程中不会
被修改的变量。
常量一般使用关键字final来定义,通常以全大写的方式
命名。
静态变量:静态变量是在类中使用关键字static修饰的变量,它被
所有类的对象共享,即使没有创建类的对象,也可以访问静态变量。
静态
变量在类加载时被初始化,在整个程序运行期间都保持不变。
静态方法:静态方法是在类中使用关键字static修饰的方法,它属
于类本身,而不是类的实例。
静态方法可以直接通过类名调用,不需要创
建类的对象。
静态方法中只能访问静态变量和调用静态方法,不能直接访
问非静态变量和非静态方法。
关键字:关键字是编程语言中具有特殊意义的单词,不能用作标识符。
关键字用来定义变量、方法、类以及控制程序流程等。
Java中的关键字
包括public、static、void、final、class等。
特点:
1.常量定义:常量一旦被赋值,其值就不能被修改。
2.静态变量:静态变量是在类加载时被初始化,属于类本身,被所有
类的对象共享。
3.静态方法:静态方法属于类本身,可以直接通过类名调用,不能直
接访问非静态变量和非静态方法。
4.关键字:关键字具有特殊意义,不能作为标识符使用。
5.常量、静态变量和静态方法可以通过类名直接访问,不需要创建对象。
6.常量、静态变量和静态方法可以用来实现共享和全局访问的功能。
静态变量static的用法一、概述静态变量是一种变量类型,在编程语言中广泛应用。
它具有特殊的作用和特点,可以用来存储和共享数据。
静态变量在程序运行之初就被分配内存,并在整个程序运行期间保持不变。
本文将详细探讨静态变量的用法及其特点。
二、静态变量的定义和声明静态变量是使用static关键字定义的变量。
静态变量可以在类中或者函数中声明和定义,具体取决于其使用范围的需求。
类中的静态变量在类中声明的静态变量是类的成员,所有此类的对象都会共享这个静态变量。
使用静态变量可以在多个对象之间共享数据,这在一些场景中非常有用。
public class MyClass {static int count;}以上代码中,count是MyClass类的一个静态变量,所有MyClass的对象都可以读取和修改这个变量。
函数中的静态变量在函数中定义的静态变量仅在函数内部可见,但是它的生命周期延长至整个程序运行期间。
函数中的静态变量只会被初始化一次,即在第一次调用函数时。
void myFunction() {static int num = 0;num++;System.out.println("变量num的值为:" + num);}以上代码中,num是函数myFunction()中的一个静态变量,它在每次调用函数时都会自增并打印出来。
三、静态变量的特点和优势静态变量具有以下几个特点和优势:1. 共享数据静态变量在多个对象之间共享数据。
这意味着所有对象可以访问和修改同一个静态变量,从而达到数据的共享和统一管理。
2. 生命周期长静态变量的生命周期从程序开始到结束。
它在程序启动时被初始化,在整个程序运行期间可以被多次访问和修改,直到程序结束时才被释放。
3. 可以直接访问静态变量可以直接通过类名访问,无需创建对象。
这样可以方便地使用静态变量,而无需创建对象实例。
4. 方便管理全局数据静态变量可以作为全局数据的容器,在程序中存储一些全局配置或者状态信息。
Java中的静态变量、静态方法、静态块与静态类在Java中,static是一个关键字,我们不能用它来作为类名或包名,static主要有四种用途,即作为静态变量、静态方法、静态块和静态类。
1、静态变量Java static variables静态变量就是类变量,它并不属于类的实例,仅属于类本身。
在所有能访问该类的地方,也就可能访问或修改该变量,它是非线程安全的,因此,静态变量通常是和final关键字结合在一起,用来标识该变量是一个公共资源和常量。
只要静态变量不是private私有的,那么我们可通过ClassName.variableName的方式进行访问。
2、静态方法Java static methods静态方法与静态变量一样,也是属于类本身而不属于类的实例对象。
在一个静态方法中,除了局部变量外,它能访问的外部变量也必须是静态的,能访问的外部方法也必须是静态的,实例变量和实例方法均不能访问。
3、静态块Java static Block静态块是由一些语句组成的段落,它在类被加载进内存时执行,且无论类被使用多少次它都只会执行一次。
一个类的静态块可以有多个,其执行顺序由它在代码中的顺序决定。
4、静态类Java static methods静态类都是内部类,static不能用于修饰顶级的类。
对于单例模式用静态类来实现就是一个很不错的选择。
5、完整示例//static variable exampleprivate static int count; //kept private to control it's value through setter public static String str;public int getCount() {return count;}//static method examplepublic static void setCount(int count) {if(count > 0)StaticExample.count = count;}//static util methodpublic static int addInts(int i, int...js){int sum=i;for(int x : js) sum+=x;return sum;}//static class example - used for packaging convenience onlypublic static class MyStaticClass{public int count;}}。
实验五:配置静态、动态路由1.实验目的:掌握IP子网划分的方法,掌握配置路由器来实现不同子网之间的通信2.实验器材:网线、计算机(学生自带)、交换机、路由器3.实验形式:6人为一个小组,以小组为单位,每个小组使用2台交换机和2台路由器,在老师指导下完成实验。
4.实验内容:实验内容为静态路由和动态路由互联网络●配置路由器静态路由,互联网络1.参照附图1利用交换机组建局域网,设置IP地址,子网掩码●小组1的3台主机利用交换机1组建局域网1,并设置IP地址为192.168.1.X,子网掩码为255.255.255.0●小组1的其余主机利用交换机2组建局域网2,并设置IP地址为192.168.2.X,子网掩码为255.255.255.0●将交换机1与交换机2利用网线连接起来2.测试连通性●局域网1的主机互相ping,看是否能ping通●局域网2主机互相ping,看是否能ping通●局域网1的主机与局域网2的主机相互ping,看是否能ping通3.加入路由器并配置路由,实现局域网1和局域网2的连通●参照附图2重新组建网络●用CONSOLE线连接路由器的CONSOLE口和PC的串口,在PC上运行超级终端程序,登录路由器●路由器1的1号以太网接口的IP地址设为192.168.1.X,子网掩码为255.255.255.0,2号以太网接口的IP地址设为192.168.3.X,子网掩码为255.255.255.0(见附图2)●路由器2的1号以太网接口的IP地址设为192.168.3.X,子网掩码为255.255.255.0,2号以太网接口的IP地址设为192.168.2.X,子网掩码为255.255.255.0(见附图2)●设置局域网1和局域网2之间的路由●重新执行第2步测试连通性,比较结果。
附图1:1 2 6 1 2 6附图2:锐杰f1/0 f1/1 f1/0 f1/11 2 6 1 2 6192.168.1.0 192.168.2.0路由器1配置过程参考(实验时以实际接口和连接情况为准,需作相应改动):1.>en2.#config t3.(config)#interface f0/04.(config-if)#ip address 192.168.1.1 255.255.255.05.(config-if)#no shut6.(config-if)#interface f0/17.(config-if)#ip address 192.168.3.1 255.255.255.08.(config-if)#no shut9.(config-if)#exit10.(config)#ip route 192.168.2.0 255.255.255.0 192.168.3.211.#show ip route路由器2配置过程参考:(实验时以实际接口和连接情况为准,需作相应改动):1.#config t2.(config)#interface f0/03.(config-if)#ip address 192.168.3.2 255.255.255.04.(config-if)#no shut5.(config-if)#interface f0/16.(config-if)#ip address 192.168.2.1 255.255.255.07.(config-if)#no shut8.(config-if)#exit9.(config)#ip route 192.168.1.0 255.255.255.0 192.168.3.110.#Show ip route配置动态路由(RIP路由信息协议),互联网络路由器1配置过程中修改1.(config)#no ip route 192.168.2.0 255.255.255.0 192.168.3.2 2.(config)#Router rip3.(config-router)#Network 192.168.1.04.(config-router)#Network 192.168.3.0路由器2配置过程中修改:1.(config)#no ip route 192.168.1.0 255.255.255.0 192.168.3.12.(config)#router rip3.(config-router)#network 192.168.2.04.(config-router)#network 192.168.3.05.# show ip route配置动态路由(OSPF),互联网络路由器1配置过程中修改1. (config)#no route rip2. (config)#router ospf 120 (锐杰的路由器没有进程号)3. (config-router)#Network 192.168.1.0 0.0.0.255 area 04. (config-router)#Network 192.168.3.0 0.0.0.255 area 0路由器2配置过程中修改:1. (config)#no route rip2. (config)#router ospf 1 (锐杰的路由器没有进程号)3. (config-router)#network 192.168.2.0 0.0.0.255 area 04. (config-router)#network 192.168.3.0 0.0.0.255 area 05.# show ip route。
静态变量static的用法静态变量(static variable)是一种在程序运行期间保持不变的变量。
它的用法可以在不同的编程语言中有所差异,但核心概念是相同的。
在本文中,我们将探讨静态变量的用法,并且了解它在软件开发中的重要性。
我们需要明确静态变量的定义。
静态变量是在程序运行期间只分配一次内存,并且在整个程序执行过程中保持不变的变量。
与之相对的是普通变量,它在每次使用时都会重新分配内存。
静态变量的生命周期从程序开始运行到程序结束,它的作用范围可以是全局的或者是限定在某个特定的函数或类中。
在大多数编程语言中,我们可以使用关键字static来声明一个静态变量。
下面是一个使用C++语言示例的静态变量声明:```cppstatic int counter = 0;```上述代码中,我们声明了一个静态变量counter,并且将其初始化为0。
在程序执行期间,该变量的值将保持不变。
静态变量有许多用途。
首先,它可以用于在函数调用之间共享数据。
考虑以下示例:```cpp#include <iostream>void incrementCounter() {static int counter = 0;counter++;std::cout << "Counter: " << counter << std::endl;}int main() {incrementCounter(); // 输出 Counter: 1incrementCounter(); // 输出 Counter: 2incrementCounter(); // 输出 Counter: 3return 0;}```在上述示例中,我们定义了一个名为incrementCounter的函数,并在其中声明了一个静态变量counter。
每次调用incrementCounter 函数时,counter的值都会增加,并输出当前的计数器值。
static静态变量的理解静态变量(static variable)是在程序中被声明为静态的变量,它与普通变量有所不同。
本文将从静态变量的定义、特点、使用场景和注意事项等方面进行阐述,以帮助读者更好地理解和应用静态变量。
我们来看一下静态变量的定义。
静态变量是在程序中声明为静态的变量,它与普通变量不同之处在于,静态变量的生存周期与程序的整个运行周期相同,而普通变量的生存周期则与其所在的函数或代码块相关联。
在C、C++、Java等编程语言中,我们可以通过在变量声明前加上关键字static来将其定义为静态变量。
静态变量具有一些特点,首先是它的生存周期较长。
由于静态变量的生存周期与程序运行周期相同,所以它在程序启动时被初始化,在程序结束时才被销毁。
这使得静态变量可以在不同的函数或代码块中共享数据,从而方便在程序的不同部分使用和修改。
其次,静态变量的作用域默认为文件作用域,即在声明它的源文件中全局可见,但在其他源文件中不可见。
这意味着静态变量可以在一个源文件中定义,并在其他函数中使用,但在其他源文件中无法直接访问。
最后,静态变量的存储位置通常是在数据区,而不是栈或堆上,这使得它的访问速度相对较快。
静态变量在实际的编程中有着广泛的应用场景。
首先,静态变量可以用来统计某个函数被调用的次数。
通过在函数内部定义一个静态变量,每次函数被调用时将静态变量加一,就可以很方便地统计函数的调用次数。
其次,静态变量可以用来保存全局状态。
当多个函数需要共享一些状态信息时,可以使用静态变量来保存这些信息,以便在不同的函数中使用和修改。
此外,静态变量还可以用来实现单例模式。
通过将类的构造函数定义为私有的,并在类中定义一个静态变量来保存类的唯一实例,就可以确保一个类只有一个实例存在。
使用静态变量需要注意一些事项。
首先,由于静态变量的作用域默认为文件作用域,所以在不同的源文件中定义同名的静态变量是合法的,但会导致命名冲突和不可预测的结果。
静态应变实验报告静态应变实验报告引言:静态应变实验是材料力学实验中的一种重要实验方法,通过施加外力或加载,观察材料的应变变化,以了解材料的力学性能。
本实验旨在通过对不同材料进行静态应变实验,研究材料的应变特性,并对实验结果进行分析和讨论。
实验目的:1. 了解静态应变实验的原理和方法。
2. 掌握材料的应变特性的测量和分析方法。
3. 研究不同材料的应变特性差异,探讨其原因。
实验装置与材料:本实验采用了常见的静态应变实验装置,包括应变测量仪、加载装置和不同材料的试样。
试样选取了金属材料、塑料材料和橡胶材料,以代表不同的材料类型。
实验步骤:1. 准备工作:清洁试样表面,确保试样无明显缺陷。
2. 安装试样:将试样安装在加载装置上,确保试样与加载装置的接触良好。
3. 进行加载:通过加载装置施加外力,使试样发生变形。
4. 测量应变:使用应变测量仪,测量试样在加载过程中的应变变化。
5. 记录数据:记录实验数据,并进行初步分析。
实验结果与分析:通过对不同材料的静态应变实验,我们得到了如下结果:1. 金属材料:金属材料在加载过程中表现出线性应变特性,即应变与应力成正比。
2. 塑料材料:塑料材料在加载过程中表现出非线性应变特性,即应变与应力不成正比。
3. 橡胶材料:橡胶材料在加载过程中表现出较大的应变量,且应变与应力关系复杂。
对于金属材料的线性应变特性,可以通过胡克定律进行描述,即应力等于弹性模量乘以应变。
而塑料材料和橡胶材料的非线性应变特性则需要使用其他的力学模型进行描述,如流变学模型。
在实验过程中,我们还观察到了不同材料的断裂点和变形形态差异。
金属材料通常具有较高的强度和韧性,断裂点较晚,变形形态为塑性变形。
而塑料材料和橡胶材料的强度较低,断裂点较早,变形形态为弹性变形或破裂。
结论:通过本次静态应变实验,我们对不同材料的应变特性有了更深入的了解。
金属材料具有线性应变特性,塑料材料和橡胶材料具有非线性应变特性。
不同材料的断裂点和变形形态也存在差异。
static静态类和静态方法静态类和静态方法是面向对象编程中的重要概念,它们在程序设计中起着重要的作用。
本文将针对这两个概念进行详细解释和说明。
一、静态类在面向对象编程中,类是对象的模板,而静态类则是一种特殊的类。
静态类是指不能被实例化的类,它主要用于提供一组相关的静态成员,包括静态字段、静态属性和静态方法等。
与普通类不同的是,静态类的成员可以直接通过类名来访问,无需创建实例。
静态类通常用于封装一些常用的工具方法或全局变量,它们与具体的对象实例无关,可以在整个程序中被直接调用。
静态类的成员在程序启动时会被加载到内存中,并且只会被加载一次。
这样可以节省内存空间并提高程序的执行效率。
静态类的定义方式与普通类类似,只需要在类的声明前加上关键字"static"即可。
下面是一个示例:```public static class MathUtils {public static int add(int a, int b) {return a + b;}}```在上述示例中,我们定义了一个名为MathUtils的静态类,并在其中定义了一个静态方法add。
该方法用于计算两个整数的和,并返回结果。
二、静态方法静态方法是指在类中以静态方式声明的方法。
与普通方法不同的是,静态方法可以直接通过类名来调用,无需创建对象实例。
静态方法通常用于完成一些与具体对象无关的操作,例如工具类中的常用方法等。
静态方法的定义与普通方法类似,只需要在方法的声明前加上关键字"static"即可。
下面是一个示例:```public class StringUtils {public static boolean isEmpty(String str) {return str == null || str.length() == 0;}}```在上述示例中,我们定义了一个名为StringUtils的普通类,并在其中定义了一个静态方法isEmpty。
python的静态变量和静态⽅法⼀、静态变量和静态⽅法1、静态变量和静态⽅法都属于类的静态成员,它们与普通的成员变量和成员⽅法不同,静态变量和静态⽅法只属于定义它们的类,⽽不属于某⼀个对象。
2、静态变量和静态⽅法都可以通过类名和对象进⾏访问。
⼆、静态变量⽰例class StaticMenthod: count = 0 #静态变量,不需要显⽰的声明def __init__(self):StaticMenthod.count += 1def __del__(self):StaticMenthod.count -= 1sMenthod = StaticMenthod() #创建对象实例sMenthod.count += 1 #通过对象实例操作静态变量print(“sMenthod:%d”%(sMenthod.count)) #通过对象实例调⽤静态变量print(“StaticMenthod:%d”%(StaticMenthod.count)) #通过类名调⽤静态变量运⾏结果如下:通过上⾯的测试结果可以看出通过对象实例访问静态变量和通过类名访问静态变量的结果是不⼀样的,由此也证明了通过对象访问实例和通过类名访问实例是互相不⼲扰的。
三、静态⽅法1、静态⽅法相关描述1》、静态⽅法中不需要传⼊self参数,因此⽆法访问在静态⽅法中访问静态实例变量。
2》、静态⽅法中不可以直接访问类的静态变量,但可以通过类名引⽤静态变量。
3》、可以通过装饰符定义静态变量。
2、静态⽅法⽰例class StaticFunc: str = “this is static variable!” @staticmethod def static_func(): print("this is static function!") StaticFunc.static_func() sFunc = StaticFunc() sFunc.static_func() print(StaticFunc.str)运⾏结果如下:通过结果分析可以知道:通过对象名调⽤静态⽅法和通过类名调⽤静态⽅法的结果是没有什么区别的。
静态方法与静态变量静态方法和静态变量是面向对象中非常重要的概念,它们的作用和用法在不同的编程语言中可能有所不同。
在下面的回答中,我将详细介绍静态方法和静态变量的含义、特点和使用方法,并解释它们在不同环境中的应用场景。
1. 静态方法的含义和特点:静态方法是属于类而不属于实例对象的方法,它不需要通过对象的实例来调用,可以直接通过类名来调用。
静态方法与实例方法的最大区别在于,静态方法不需要创建对象实例,因此无法访问实例对象中的非静态成员。
一个方法可以被声明为静态方法,这样它就可以在不创建类的对象实例的情况下被直接调用。
静态方法的主要特点如下:- 静态方法属于类而不属于对象,可以通过类名来调用。
- 静态方法无法直接访问类中的非静态成员,因为它没有实例对象的引用。
- 静态方法中不能使用this关键字,因为静态方法是属于类的,不属于实例对象。
- 静态方法中只能调用其他静态方法和静态变量。
- 静态方法可以在不创建对象实例的情况下被调用,因此在许多情况下可以节省内存和性能。
2. 静态变量的含义和特点:静态变量是属于类而不属于对象的变量,它在类被加载时就会分配内存,不需要创建对象实例。
静态变量只有一份拷贝,被所有的对象实例共享。
静态变量的主要特点如下:- 静态变量属于类而不属于对象,被所有的对象实例共享。
- 静态变量在类加载时就会分配内存,所以它的生命周期与类的生命周期一样长。
- 静态变量可以通过类名直接访问,也可以通过对象实例来访问,但访问的是同一个变量。
- 静态变量一般声明为public或private,通过公共的静态方法来访问。
3. 静态方法和静态变量的使用方法:静态方法和静态变量的使用方法与普通的方法和变量略有不同,下面是一些常见的用法示例:- 静态方法可以作为实用工具方法,不需要创建对象实例就可以直接调用。
例如,Math类中的一些数学计算方法就是静态方法。
- 静态变量可以用来表示全局状态或配置信息,可以在程序各个地方访问并共享。
Kotlin使⽤静态变量与静态⽅法详解前⾔在⽇常开发过程中,静态变量和静态⽅法是我们常见的⽤法,Java中相信⼤家并不陌⽣了,那么在 Kotlin 中该如何使⽤呢?其实很简单,只需要⼀个将变量和⽅法包含在 companion object 域中即可,⽐如这样:class Constant {companion object {// 接⼝根地址const val BASE_URL = "http://xxxx.xxx.xxx/"// 友盟const val UMENG_APP_KEY = "xxxxxxxxxx"const val UMENG_CHANNEL = "umeng"// 微博const val WEIBO_APP_KEY = "xxxxxxxx"const val WEIBO_SECRET = "xxxxxxxxxx"fun getVideoFactor(){// do some work}}}看后是不是很简单?在纯kotlin代码中可以直接这样使⽤://初始化各平台的APIKeyPlatformConfig.setWeixin(Constant.WECHAT_APP_ID, Constant.WECHAT_APP_SECRET)PlatformConfig.setSinaWeibo(Constant.WEIBO_APP_KEY, Constant.WEIBO_SECRET, Constant.WEIBO_AUTH_RETURN_URL)然⽽,如果我们使⽤的是Java和kotlin混合开发,在Java代码中就⽆法通过 Constant.静态变量的⽅式来使⽤静态变量或者⽅法来,⽽是通过如下⽅式://初始化各平台的APIKeyPlatformConfig.setWeixin(panion.WECHAT_APP_ID, Constant.WECHAT_APP_SECRET)PlatformConfig.setSinaWeibo(panion.WEIBO_APP_KEY, Constant.WEIBO_SECRET, Constant.WEIBO_AUTH_RETURN_URL)如果我们想像kotlin那样直接通过类名.静态变量⽅式使⽤呢?我们可以借助于注解 @JvmField 和 @JvmStatic 来分别标注静态变量和静态⽅法,之后我就能在Java代码中像以前⽅式那样直接使⽤静态的成员啦!例如这样:/*** @author moosphon on 2018/12/12* desc: 异常的统⼀处理者*/class ExceptionHandler {companion object {@JvmFieldvar errorCode = NetRequestStatus.UNKNOWN_ERROR@JvmFieldvar errorMessage = "请求失败,请稍后重试"@JvmStaticfun handleException(e : Throwable): String{e.printStackTrace()when(e){is SocketException -> {Logger.e("ExceptionHandler", "⽹络连接异常: " + e.message)errorCode = WORK_ERRORerrorMessage = "⽹络连接异常"}is JsonParseException -> {Logger.e("ExceptionHandler", "数据解析异常: " + e.message)errorCode = NetRequestStatus.PARSE_ERRORerrorMessage = "数据解析异常"}else -> {try {Logger.e("ExceptionHandler", "其他错误: " + e.message)} catch (e1: Exception) {Logger.e("ExceptionHandler", "未知错误: " + e.message)}errorCode = NetRequestStatus.UNKNOWN_ERRORerrorMessage = "未知错误,⼀起祷告快点好起来吧~"}}return errorMessage}}}前段时间⽐较忙,之后会继续为⼤家带来kotlin⽅⾯的⽂章,⼤家拭⽬以待。
实验4:静态变量、静态方法与包实验目的
1、熟练静态变量、静态方法、实例变量、实例方法的概念
2、掌握包的概念与应用。
实验内容
一、静态变量
1.阅读下列程序,并按照要求完成后续功能。
class Point
{
private int x,y;
Point (int xValue, int yValue)
{
x=xValue;
y=yValue;
};
public int GetX()
{
return x;
}
public int GetY()
{
return y;
}
public void SetY(int value)
{
y=value;
}
public void SetX(int value)
{
x=value;
}
}
class Managerpoint
{
static int count=0;
Point createPoint(int x,int y)
{
提示:在此处加入代码,完成程序的输出要求
}
}
public class one {
public static void main(String[] args) {
// TODO Auto-generated method stub
Managerpoint mPoint =new Managerpoint();
for(int i=0;i<9;i++){
Point p=mPoint.createPoint(i,20);
System.out.print("当前点的总数为:"+Managerpoint.count);
System.out.println("当前点的x值为:"+p.GetX());
}
}
}
注意:本例中使用的“20”仅仅是作为一个测试数据。
在提示处加入代码,要求:
●除提示处代码,其他代码保持不变
●Main方法的执行结果为:
当前点的总数为:1当前点的x值为:0
当前点的总数为:2当前点的x值为:1
当前点的总数为:3当前点的x值为:2
当前点的总数为:4当前点的x值为:3
当前点的总数为:5当前点的x值为:4
当前点的总数为:6当前点的x值为:5
当前点的总数为:7当前点的x值为:6
当前点的总数为:8当前点的x值为:7
当前点的总数为:9当前点的x值为:8
2.改错。
理解静态方法可访问静态变量,但在静态方法中不能直接访问实例变量。
提示:
阴影处为需要修改的代码。
public class one
{
int x=8;
int y=9;
final int i=10;
static int getY(){
return y;
}
static int getI(){
return i;
}
public static void main(String[] args)
{
System.out.println(one.y);
System.out.println(one.i);
}
}
修改程序,输出结果应为
8
9
10
二、包
新建2个包:
一个是dao,一个是logic
在dao包中编写2个类,分别为point、circle,,具体设计要求可参照前述实验
在logic包中编写1个类,为Test,在Test的main方法中测试上述2个类,应能有相关测试代码。