局部变量

类的无参方法

北城余情 提交于 2020-01-20 07:58:56
定义类的方法: public 返回值类型 方法名() { //方法的主体 }; 如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型;如果方法没有返回值,返回值类型为void; 作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内部都是可见的; 初始值不同 Java会给成员变量一个初始值 Java不会给局部变量赋予初始值; 在同一个方法中,不允许有同名局部变量 在不同的方法中,可以有同名局部变量; 在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级; 调用类方法的两种形式: 同一个类中的方法,直接使用“方法名()”调用 不同类的方法,先创建对象,再使用“对象名.方法名()”调用; 注释符: 单行注释://这里是单行注释 多行注释:/*这里是多行注释, 可以多行 / JavaDoc注释:使用“/**“开始和“ /“结束,用来注释类、属性和方法等 来源: CSDN 作者: weixin_46000347 链接: https://blog.csdn.net/weixin_46000347/article/details/103825346

java内存划分为5个部分

两盒软妹~` 提交于 2020-01-19 09:14:09
Java的内存需要划分成为5个部分: 1.栈(Stack) : 存放的都是方法中的局部变量。 方法的运行一定要在栈当中运行。 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从栈内存当中消失。 2.堆(Heap) : 凡是new出来的东西,都在堆当中。 堆内存里面的东西都有一个地址值: 16进制 堆内存里面的数据,都有默认值。规则: 如果是整数 默认为0 如果是浮点数 默认为0.0 如果是字符 默认为"\u0000' 如果是布尔 默认为false 如果是引用类型 默认为null 3.方法区(Method Area) : 存储.class相关信息,包含方法的信息。 4.本地方法栈(Native Method Stack) : 与操作系统相关。 5.寄存器(pc Register) : 与CPU相关。 来源: CSDN 作者: young_change 链接: https://blog.csdn.net/young_changge/article/details/103843336

Java基础_基础语法知识6

喜你入骨 提交于 2020-01-18 14:54:45
面向对象 1.面向对象编程中成员变量与局部变量 (1).一个面向对象中成员变量和局部变量的代码体现 public class Student { private int a; public void Test() { //int b; //System.out.println(b);//报错:需要初始化 int b; b=0; System.out.println(b); } } //上面的代码中定义了一个类,然后这一个类中有一个int类型的a; 同时还定义了一个名为Test()的方法,里面定义了一个名为b的局部变量; (2).成员变量和局部变量的区别 A:在类中的位置不同 成员变量:定义在类中方法的外面 局部变量:定义在方法内部或者是方法声明上 B:在内存中的位置不同 成员变量:栈内存 局部变量: 堆内存 C:生命周期不同 成员变量:随着对象的存在而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值不同 成员变量:有默认的初始化值(null,0) 局部变量:没有默认的初始化值,需要先定义,然后赋值,才可以使用。 //注意:成员变量和局部变量的名称可以一样吗? 可以,但是不建议这样写,访问的时候是先找小范围(局部变量),然后再找大范围。(成员变量) (3).形式参数的问题 A:基本类型 形式参数的改变不影响实际参数 B:引用类型

JVM 线程中方法执行过程

倖福魔咒の 提交于 2020-01-18 09:56:23
本章节内容参考:《深入理解Java虚拟机》 运行时数据区: 本次只介绍用于程序运行的线程私有的内存模型。 虚拟机栈(FILO):java方法执行的内存模型。   栈帧(线程执行的一个方法的内存模型,每调用一个方法,压入一个栈帧)    局部变量表:编译器可知的8种基本类型、reference类型、returnAddress类型   操作数栈:一个用于计算的临时数据存储区(明显,此栈是为了存放要操作的数据用的)    动态链接:支持java多态   返回地址:方法结束的地方。return/Exception 本地方法栈:Native方法执行的内存模型。 程序计数器:这个计数器记录的是正在执行的虚拟机字节码指令的地址(如果线程正在执行的是一个java方法)。 字节码解释器工作时,就是通过改变这个计数器的值来选取需要执行的字节码 指令(分支,循环,跳转、异常处理、线程恢复) 线程中,方法A调用方法B。 线程的执行的过程:    1、线程开始,分配虚拟机栈大小(JVM参数 -Xss:大小,1.5+默认1M), 2、执行方法A时,创建一个栈帧A压入虚拟机栈顶,根据程序计数器中的记录的下一个要执行的字节码指令的地址,找到并执行指令(将要操作的数据压入操作数栈栈顶,将操作结果放入局部变量表中,详细过程参照下面“合代码演示”部分)。 3、中间调用方法B,则创建栈帧B,接着执行方法B的指令

C++ 对引用的理解4

笑着哭i 提交于 2020-01-18 03:41:32
引用的注意事项 // 引用注意事项, 不能返回局部变量的引用 int & test3() { //因为局部变量出了函数体外 就会被销毁 int a = 10; return a; } // 引用注意事项, 返回值如果是引用, 那么函数可以作为左值进行运算 int & test4() { static int a = 100; return a; } int main() { test4() = 300; cout << test4() << endl; // 输出300 return 0; } 指针的使用 struct Person { int age; int id; string name; }; void allocSpace(Person **p) { // Person **p = &per; *p = (Person *)malloc(sizeof(Person)); // *p 就是 per这个 指针变量, 指向了(就是存储了对象的堆内存地址) Person结构体对象内存 (*p)->age = 10; (*p)->id = 1; } int main() { Person *per = NULL; // 这时候 per 是一个指针变量(可以指向Person结构体的指针变量) allocSpace(&per); // 对这个 per 指针变量取地址运算&,

函数的作用域链的理解

强颜欢笑 提交于 2020-01-17 23:19:11
1. 作用域 (scope):在javascript 没有块级作用域 ,是由函数来划分的。 变量和函数的作用域是在定义时决定而不是执行时决定 ,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域(with和eval除外)。当定义了一个函数,当前的作用域链就保存起来,并且成为函数的内部状态的一部份。在最顶级作用域链仅由全局对象组成,而不和词法作用域相关,然而,当定义一个嵌套的函数时,作用域链就包括外面的包含函数。这意味着嵌套函数可以访问包含函数的所有参数和局部变量。尽管当一个函数定义时作用域链就固定了,但作用域链中定义的属性还没有固定。作用域链是活的,并且函数被调用时,可以访问任何当前的绑定。 2. 作用域链 (scope chain):存储 变量对象 的集合( 环境栈 ?),保证对执行环境有权访问的所有变量和函数的有序访问,也就是用于标识符解析(变量访问)。 3. 执行环境 (execution context):定义了变量和函数有权访问的其他数据,决定了它们的各自行为。每个执行环境都有一个与之关联的变量对象。 在web浏览器中,window对象就是全局执行环境。每个函数都有自己的执行环境,当函数执行完毕,该环境被销毁,保存在其中的变量和函数也随之销毁。 4. 变量对象 (variable object):保存了环境中定义的所有变量和函数

JS变量声明提升

那年仲夏 提交于 2020-01-17 16:42:32
一、作用域 JS中,作用域为function内的区域,称为函数作用域。 二、变量声明 在ES6之前,通过var声明一个变量,但是ES6之后,又添了两个关键词来声明变量: let和const var:声明了一个变量,这个变量的作用域是当前执行的上下文 let:声明了一个块级域的局部变量,并且它声明的变量只在所在的代码块内有效 const:声明了一个只读的块级域的常量,并且它声明的变量只在所在的代码块内有效 1 { // 代码块 2 var a = 1; 3 let b = 2; 4 const c = 3; 5 6 console.log(a); // 1 7 console.log(b); // 2 8 console.log(c); // 3 9 } 10 11 console.log(a); // 1 12 console.log(b); // 报错,ReferenceError: b is not defined(…) 13 console.log(c); // 未执行, 因为上面语句出错,所以这条语句不再执行,如果上面的语句不报错,那么这里就会报错 1 (function (){ 2 var a = 1; 3 let b = 2; 4 const c = 3; 5 6 console.log(a); // 1 7 console.log(b); // 2 8 console

类文件结构

六月ゝ 毕业季﹏ 提交于 2020-01-17 13:36:28
Class文件格式只有两种数据类型:无符号数和表。 ① 无符号数属于基本的数据类型,以u1,u2,u4,u8来分别代表1个字节,2个字节,4个字节和8个字节的无符号数;可用来描述数字,索引引用,数量值或者按照UTF-8编码构成的字符串值。 ② 表是由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性地以“_info”结尾。表用于描述由层次关系的复合结构的数据,整个Class文件本质上就是一张表。 魔数:每个class文件的头4个字节(0-3字节)(16进制),用来确定文件是否为一个可以被虚拟机接受的class文件,不用文件扩展名作为标识是因为扩展名可以随意改动 第4,5字节是次版本号;6,7字节是主版本号(JDK向下兼容以前版本的class文件)(0034是java 8) 8-9字节表示常量池的长度,0023表示常量池有#1~#34项(#0项不计入,也没有值) 常量池是在*.class文件中的一张表,常量池中存放两大常量项: ① 字面量(文本字符串,声明为final的常量值); ② 符号引用(类和接口的全限定名 (Fully Qualified Name)、字段的名称和描述符、方法的名称和描述符); 虚拟机根据这张表找到要执行的类名,方法名,参数类型,字面量等信息, 当类被加载,常量池信息会被放入运行时常量池,并且把里面的符号地址变为真实地址

Java 基础笔记 关于局部变量和类成员变量和父类成员变量重名时的调用问题

狂风中的少年 提交于 2020-01-16 03:40:43
用局部变量:直接写成员变量名 用本类的成员变量:this.成员变量名 用父类的成员变量:super.成员变量名 例子:↓ Father:父类中定义了 int num=10; Child extends Father:子类继承父类,并且自有成员变量 int num=20; public class Child extends Father{ int num=20; public void method(){ int num=30; //此时父类成员变量、子类成员变量、子类方法中的局部变量三者重名 System.out.println(num); //输出30,此时调用的是局部变量num System.out.println(this.num); //输出20,此时调用的是子类成员变量num System.out.println(super.num); //输出10,此时调用的是父类成员变量num } } 来源: CSDN 作者: 一名小白的进阶之路 链接: https://blog.csdn.net/qq_40275740/article/details/103994909

【C语言】变量类型

让人想犯罪 __ 提交于 2020-01-15 11:16:24
转载自cnblogs.com/mjios 语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储。变量也是有分类型的,不同类型的变量有不同的存储类型、不同的生命周期、不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型、生命周期)。 回到顶部 一、变量的作用域 C语言根据变量 作用域 的不同,将变量分为局部变量和全局变量。 1.局部变量 1> 定义:在函数内部定义的变量,称为局部变量。 形式参数也属于局部变量 。 2> 作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。 2.全局变量 1> 定义:在所有函数外部定义的变量,称为全局变量。 2> 作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。 1 int a; 2 3 int main () 4 { 5 int b; 6 return 0; 7 } 第1行的变量a是全局变量,第5行的变量b是局部变量。 回到顶部 二、变量的存储类型 * 变量的存储类型就是指变量存储在什么地方。有3个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。变量的存储类型决定了变量何时创建、何时销毁以及它的值能保持多久,也就是决定了变量的生命周期。 * C语言根据变量的 存储类型 的不同