成员变量和局部变量

合集下载

变量的有效范围

变量的有效范围

变量的有效范围变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域访问变量,则编译时会出现错误。

有效范围决定了变量的生命周期,变量的生命周期是指从声明一个变量并分配内存空间开始,到释放该变量并清除所占用的内存空间结束。

进行变量声明的位置,决定了变量的有效范围,根据有效范围的不同,可以将变量分为以下两种。

成员变量:在类中声明,在整个类中有效。

局部变量:在方法内或方法内的某代码块(方法内部,“{”与“}”之间的代码)中声明的变量。

在代码块声明的变量,只在当前代码块中有效;在代码块外、方法内声明的变量在整个方法内都有效。

下面先来通过如下代码初步了解成员变量和局部变量的声明及使用范围。

public class Olympics {private int medal_All=800; //成员变量public void China(){int medal_CN=100; //方法的局部变量if(true){ //代码块int gold=50; //代码块的局部变量medal_CN+=50; //允许访问medal_All-=150; //允许访问}gold=100; //编译出错medal_CN+=100; //允许访问medal_All-=200; //允许访问}public void Other(){medal_All=800; //允许访问medal_CN=100; //编译出错, 不能访问其他方法中的局部变量gold=10; //编译出错}}1.成员变量类的成员变量又可分为两种:静态变量和实例变量。

静态变量是指通过static关键字进行修饰的成员变量,没有被static关键字修饰的变量为实例变量。

它们的区别如下。

静态变量的有效范围是整个类,并且可以被类的所有实例共享。

可以通过“类名.变量名”的方式来访问静态变量。

静态变量的生命周期取决于类的生命周期,当类被加载时,为类中的静态变量分配内存空间,当卸载类时,释放静态变量占用的空间,静态变量被销毁。

chap2_JSP语法-student

chap2_JSP语法-student

1. JSP页面的变量和方法
总结1:局部变量和成员变量的区别1

语法区别(位置)

局部变量定义在<% %>之间,而且与位置有关,定义后,
在页面定义后面部分的代码中都可使用。

成员变量定义在<%!%>之间,而且与位置无关,在整个 JSP页面内有效,但是开发规范要求写在页面的前面。(如 <body>标记后)

方法的调用:直接在程序片中使用java语法调用方法即可 ,方法的调用语句可以在方法定义之前或者之后
1. JSP页面的变量和方法
方法

示例:观察如下例子,说出程序功能
<%@ page contentType="text/html;charset=gb2312"%> <%! int a = 0; public void test(){ 用户乙的线程 a=100; a=a+100; } %> 调用函数输出a的值:<%=a%> 用户甲的线程
%> 计算4999加5888的和: <% int a = add(4999,5888); out.print(a); %>
1. JSP页面的变量和方法
方法

注意:方法内的变量只在该方法内有效
<%! int a = 100; public void test(){ int b = 200; } %> 打印变量值 <% out.print(a); out.print(b);(编译错误) %>
思考1:更改程序,使用html将程序片分割的方法实现?
学生练习
<body> <h1>输出一个5行4列的表格</h1> <table width=“800" border="1"> <%for(int i=1;i<=5;i++) {%> <tr> <%for(int j=1;j<=4;j++){ %> <td>第<%out.println(i);%>行第 <%out.println(j);%>列的单元格</td> <%} %> </tr> <% }%> </table> </body>

面向对象的三大特性(封装-继承-多态)

面向对象的三大特性(封装-继承-多态)

一丶封装1 权限修饰符可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。

被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。

权限由大到小:public protected default(不写) private被private修饰的成员只能在本类中访问,外界不能访问2 set()/get()方法(1)this关键字a.可以用来调用变量,方法,构造方法;b.this.xx 理解为调用当前类的xx。

(2)成员变量和局部变量1)在类中的位置不同a:成员变量:在类中,方法外b:局部变量:在方法声明上(形式参数),或者是在方法定义中2)在内存中的位置不同a:成员变量:在堆内存b:局部变量:在栈内存3)生命周期不同a:成员变量:随着对象的创建而存在,随着对象的消失而消失b:局部变量:随着方法调用而存在,随着方法的调用结束而消失4)初始化值不同a:成员变量:有默认值b:局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化) (3)set()/get()方法当成员变量被private修饰时,不在本类中无法直接访问,便需要set()/get()方法来解决这个问题3 封装性封装:是面向对象的第一大特性,所谓封装,就是值对外部不可见(一般而言被private修饰),外部只能通过对象提供的接口(如set()/get()方法)来访问。

封装的好处:a.良好的封装能够减少耦合;b.类内部的结构可以自己修改,对外部影响不大;c.可以对成员进行更精准的控制(防止出现与事实不符的情况);d.影藏实现细节。

注意:在开发中,类的成员变量全部要进行封装,封装之后通过set()/get()方法访问。

二丶继承extends1 实现:通过 class Zi extends Fu{} 实现类的继承(1)子类继承父类,父类中声明的属性,方法,子类都可以获取到;当父类中有私有的属性方法时,子类同样可以获取到,由于封装性的设计,使得子类不能直接调用访问。

CC++中局部全局变量初始值或默认值问题

CC++中局部全局变量初始值或默认值问题

CC++中局部全局变量初始值或默认值问题转载⽂章,仅供学习⽤,https://nd/2015/10/05/cpp-variable-init.html在C语⾔中的全局变量和静态变量都是会⾃动初始化为0,堆和栈中的局部变量不会初始化⽽拥有不可预测的值。

C++保证了所有对象与对象成员都会初始化,但其中基本数据类型的初始化还得依赖于构造函数。

下⽂来详细探讨C风格的”默认初始化”⾏为,以及C++中成员变量的初始化规则。

初始化的语法很多⼈⾄今不知道C++中如何正确地初始化⼀个变量,我们⾸先来解决语法的问题。

C语⾔中在声明时⽤=即可完成初始化操作。

但我们偏向于使⽤C++风格(本⽂中均指⾯向对象程序设计风格)来初始化内置类型:// C 风格int i = 3;int arr[] = {1, 2, 3};// C++ 风格int i(3);int i = int(3);int *p = new int(3);int* arr = new int[3] {1, 2, 3};在C语⾔中int a;表⽰声明了整型a但未初始化,⽽C++中的对象总是会被初始化的,⽆论是否写了圆括号或者是否写了参数列表,例如:int basic_var; // 未初始化:应⽤"默认初始化"机制CPerson person; // 初始化:以空的参数列表调⽤构造函数默认初始化规则定义基本数据类型变量(单个值、数组)的同时可以指定初始值,如果未指定C++会去执⾏默认初始化(default-initialization)。

那么什么是”默认初始化”呢?栈中的变量(函数体中的⾃动变量)和堆中的变量(动态内存)会保有不确定的值;全局变量和静态变量(包括局部静态变量)会初始化为零静态和全局变量的初始化所以函数体中的变量定义是这样的规则://C++中int i; // 不确定值int i = int(); // 0int *p = new int; // 不确定值int *p = new int(); // 0静态和全局变量的初始化未初始化的和初始化为零的静态/全局变量编译器是同样对待的,把它们存储在进程的BSS段(这是全零的⼀段内存空间)中。

JAVA篇:修饰符与接口、类、方法、成员变量、局部变量、方法块

JAVA篇:修饰符与接口、类、方法、成员变量、局部变量、方法块

JAVA篇:修饰符与接⼝、类、⽅法、成员变量、局部变量、⽅法块或许这是⼀个⽐较轻松简单的知识点,因为只是简单地做⼀个总览对⽐⽽已。

这周⽐较忙,祝我⾃⼰好运。

有关接⼝(interface)的修饰符,其实⼀般⽤public,也可以不加修饰词(default),或者是使⽤private修饰的声明在类的内部的内部接⼝。

不存在protected修饰的接⼝。

⽽接⼝内部可以有⽤public static final修饰的静态常量,除此之外只存在public修饰的⽅法(接⼝中⽆修饰词的⽅法也默认是public)了。

⽆论是接⼝还是接⼝中的⽅法的abstract修饰词都是隐含的,不必显式地修饰在接⼝或者⽅法前⾯。

类的访问限制修饰词与接⼝⼀样,但是还可以有⾮访问限制修饰词abstract(抽象类)和final(不可继承的类)。

类的成员变量可以被四种访问修饰词修饰,同时也可以被static(静态变量),final(常量),transtient(有关序列化特殊标识变量,具体还需要进⾏了解), volatie(线程共享变量)。

类⽅法除了访问限制修饰符,还可使⽤static(静态⽅法),final(不可改变的⽅法),abstract(抽象的),native(⾮java实现的),synchronized(线程同步),类构造⽅法只可使⽤访问限制修饰符修饰,局部变量只能使⽤final定义常量,⽅法块可以使⽤static定义静态⽅法块和使⽤synchronized 定义线程同步的⽅法块。

java的接⼝、类1、接⼝(interface) 在java中,接⼝是⼀个抽象类型,是抽象⽅法的集合,接⼝通常以interface来声明,接⼝只能包含抽象⽅法和以static\final修饰的变量,⼀个接⼝可以继承(extends)另⼀个接⼝。

接⼝只包含要实现的⽅法,⽽类描述对象的属性和⽅法,两者实现类似但是概念不同。

java提供了类和接⼝之间的实现机制,接⼝不可被实例化,只能被实现(implements),实现接⼝的类必须实现接⼝中全部的抽象⽅法,否则该类必须使⽤abstract声明为抽象类。

linux 内核 变量命名 规则

linux 内核 变量命名 规则

linux 内核变量命名规则Linux内核变量命名规则在Linux内核开发过程中,变量命名是非常重要的,它直接影响到代码的可读性和可维护性。

为了使代码结构清晰、易于理解和维护,Linux内核遵循了一套严格的变量命名规则。

本文将介绍Linux内核变量命名规则的几个重要方面。

一、变量命名风格在Linux内核中,变量命名使用的是蛇形命名法(snake_case),即单词之间使用下划线进行分隔。

变量名应该尽量简洁,同时要具备一定的描述性,能够清晰地表达变量的用途。

例如,可以使用"page_count"表示页面计数。

二、变量作用域在Linux内核中,变量的作用域分为全局变量和局部变量两种。

全局变量用于在整个内核中共享数据,命名时应使用"global_"作为前缀,例如"global_count";局部变量仅在特定代码块中使用,命名时应使用具有描述性的名称,例如"local_count"。

三、变量类型Linux内核中的变量可以分为多种类型,包括基本类型和自定义类型。

基本类型的命名应该简洁明了,例如"int_size"表示整数大小;自定义类型的命名应该使用具有描述性的名称,能够清晰地表达其作用,例如"struct_person"表示人员结构体。

四、全局常量在Linux内核中,全局常量使用大写字母和下划线命名,例如"MAX_SIZE"表示最大大小。

全局常量的命名应该具备描述性,能够清晰地表达常量的含义。

五、函数名在Linux内核中,函数名应使用动词加名词的形式,能够清晰地表达函数的功能。

函数名应该使用蛇形命名法,并遵循变量命名的规则,例如"get_page_count"表示获取页面计数的函数。

六、宏定义在Linux内核中,宏定义使用大写字母和下划线命名,例如"#define MAX_SIZE 100"表示最大大小为100。

面对对象

面对对象
使用:
在主方法中,通过 对象名.方法名 调用
在其他的非静态的方法中,可以直接调用,即方法名();在静态方法中,不可以直接调用非静态的方法。但是非静态的方法可以通过 类名.静态方法名 调用静态方法。
在构造方法中调用时,可以直接用方法名(),也可以用this.方法名()调用;只是要明确this指的是哪个对象。
6、static
static是表示静态的意思,它可以用来修饰变量、常量、方法,使他们成为静态的,可被共享的。构造方法中是不可以用static来修饰的。被它所修饰的变量和方法存放在方法区。
它只能在类中定义,不可以在方法中定义静态的变量。如果在执行类时,想要先执行初始化动作,可以使用static定义一个静态区域。
用法:
第一,可以表示对当前对象的引用
第二,可以调用成员变量
第三,可以调用构造方法(仅仅只是构造方法之间)
this不可以出现在静态方法和静态代码块中。
8、成员方法
语法格式:
修饰符 返回值类型 方法名称(参数类型 参数名){
//方法体
return 返回值;
}
返回值类型要与方法返回的值类型一致。
第二,继承
第三,多态
3、类的构造方法:
A、语法格式:
public 类名(){ Nhomakorabea} B、特点:
第一,构造方法的名称一定要与类名一致,包括大小写;
第二,构造方法没有返回值
C、注意:在我们定义了一个或多个有参的构造方法时,系统将不再自动为我们创建一个无参的构造方法。
D、作用:对象的创建就是通过构造方法来完成的,每当实例化一个对象时,类都会自动调用构造方法。
public class example{

java基础-类的定义、成员变量、方法、对象的创建与使用

java基础-类的定义、成员变量、方法、对象的创建与使用

java基础-类的定义、成员变量、⽅法、对象的创建与使⽤⼀.JAVA类的定义 JAVA⾥⾯有class关键字定义⼀个类,后⾯加上⾃定义的类名即可。

如这⾥定义的person类,使⽤class person定义了⼀个person类,然后在person这个类的类体⾥⾯定义person这个类应该具有的成员变量(即属性)和⽅法,如这⾥定义的int id和int age这个两个成员变量,或者叫属性,这个id表⽰⼈的⾝份证号码,⼈应该具有这个属性,age表⽰⼈的年龄,这也是⼈应该具有的。

这样就在person这个类⾥⾯定义了两个⼈应该有的属性,接下来就是定义⽅法了,这⾥定义了三个⽅法,分别是getAge()、setAge(int i)和getId(),分别⽤来获取⼈的年龄,设置⼈的年龄,获取⼈的id,getAge()⽅法获取了⼈的年龄后,将获取到的值返回,所以使⽤了return age语句,getId()⽅法也使⽤了return id语句⽤于返回获取到的id的值。

⼆. 成员变量 在JAVA⾥⾯的任何变量⾸先应该要声明,然后再赋值,然后再使⽤。

成员变量和局部变量有⼀个重要区别:成员变量在类⾥⾯声明时如果不进⾏初始化,那么JAVA会默认给它初始化,⽽局部变量JAVA不会默认给它初始化,所以在⽅法⾥⾯声明⼀个局部变量如果不给它初始化时就会出错。

默认初始化⼤多数都是0,boolean类型的为false,引⽤类型的为null,如过不记得JAVA对成员变量默认的初始化是多少的话,那就这样做,定义⼀个成员变量,不给它初始化,然后直接打印这个成员变量,打印出来的结果就是JAVA默认的初始化的值。

三、Java⾯向对象的基本概念——引⽤ 引⽤类型和基本类型有着巨⼤的区别,当声明⼀个int i=0时,系统会马上给这个i分配⼀个内存空间(在栈内存⾥⾯分配⼀⼩块区域⽤来装数字0),⾥⾯装着⼀个值为0,以后使⽤i这个名字马上就可以访问这个内存空间⾥⾯的值,这就是基本数据类型,所以基础类型就只占⼀块内存。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J2EE_Struts © 2008 IBM Corporation
IBM 课程体系
成员变量
public class Test{ static final double PI = 3.1415926;//类属性 类属性 double r ;//成员属性 成员属性 public Test(double r){ this.r = r; }//构造方法初使化 构造方法初使化 double getArea(){ return PI * r * r; }//自定义方法 得到圆面积 自定义方法 public static void main(String[] args){ Test test = new Test(4);//创建对象(自动调用构造方法) 创建对象( 创建对象 自动调用构造方法) System.out.println(“半径为” + test.r + “的圆的面积:”);//对象 成员属 半径为” 的圆的面积: 对象.成员属 半径为 的圆的面积 对象 性 System.out.println (test.getArea());//对象 自定义方法 对象.自定义方法 对象 } 思考:对象能否调用类属性? 思考:对象能否调用类属性?
J2EE_Struts
© 2008 IBM Corporation
J2EE_Struts © 2008 IBM Corporation
}
IBM 课程体系
局部变量
局部变量:在一个方法内定义的变量。(包括方法的形式参 局部变量:在一个方法内定义的变量。(包括方法的形式参 。(包括 数) 局部变量根据定义形式的不同,又可以被分为以下三种: 局部变量根据定义形式的不同,又可以被分为以下三种: 形参: 1.形参:作用域是整个方法体 形参 2.方法局部变量: 方法局部变量: 方法局部变量 代码块局部变量: 3.代码块局部变量: 代码块局部变量 与成员变量不同的是,局部变量除了形式参数外, 与成员变量不同的是,局部变量除了形式参数外,都必须显 示初使化(必须显示指定初使值 否则不可以访问它们。 必须显示指定初使值)。 示初使化 必须显示指定初使值 。否则不可以访问它们。 形式参数不须显示初使化,它在被调用时由系统完成。 形式参数不须显示初使化,它在被调用时由系统完成。
第04讲 面向对象 讲 面向对象--成员变量和局部变量
IBM 课程体系
J2EE_Struts
© 2008 IBM Corporation
IBM 课程体系
上次回顾
构造方法的概念 熟练掌握构造方法的作用(重点 重点) 熟练掌握构造方法的作用 重点 熟练掌握构造方法的重载(重点 重点) 熟练掌握构造方法的重载 重点 掌握this关键字的使用 掌握 关键字的使用
J2EE_Struts
© 2008 IBM Corporation
IBM 课程体系
成员变量
成员变量:在类范围里定义的变量。(也可称成员属性) 成员变量:在类范围里定义的变量。(也可称成员属性) 。(也可称成员属性 成员变量又被分为两种:类属性和实例属性。 成员变量又被分为两种:类属性和实例属性。定义一个属性时 不使用static修饰的就是实例属性;使用 修饰的就是实例属性; 不使用 修饰的就是实例属性 使用static修饰的就是类属 修饰的就是类属 性。 类属性的作用域与这个类的生存范围相同 的作用域与这个类的生存范围相同, 类属性的作用域与这个类的生存范围相同,它作为类的一个 成员,与类共存亡。只要类存在, 成员,与类共存亡。只要类存在,程序就可以访问该类的类 属性。 属性。 实例属性则从这个类的实例(对象)被创建开始存在,直到 实例属性则从这个类的实例(对象)被创建开始存在, 则从这个类的实例 系统完全销毁这个实例,它作为实例(对象)的一个成员, 系统完全销毁这个实例,它作为实例(对象)的一个成员, 与实例(对象)共存亡。只要实例存在, 与实例(对象)共存亡。只要实例存在,程序就可以访问该 实例的实例属性。 实例的实例属性。
J2EE_Struts
© 2008 IBM Corporation
IBM 课程体系
本讲目标
什么是成员变量 什么是局部变量 成员变量的初始化及运行机制 局部变量的初始化及运行机制
J2EE_Sration
IBM 课程体系
语言中, 定义变量位置的不同 在JAVA语言中,根据定义变量位置的不同, 语言中 根据定义变量位置的不同, 可以将变量分成2大类 大类: 可以将变量分成 大类: 成员变量 局部变量
相关文档
最新文档