局部变量

Java 变量类型

徘徊边缘 提交于 2019-12-02 19:55:20
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: http://www.jinnan411.top/?p=882 type identifier [ = value ] [ , identifier [ = value ] ... ] ; http://www.jinnan411.top/?p=923 格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。 http://www.jinnan411.top/?p=916 以下列出了一些变量的声明实例。注意有些包含了初始化过程。 http://www.jinnan411.top/?p=876 int a , b , c ; // 声明三个int型整数:a、 b、c int d = 3 , e = 4 , f = 5 ; // 声明三个整数并赋予初值 byte z = 22 ; // 声明并初始化 z String s = " runoob " ; // 声明并初始化字符串 s double pi = 3 .14159 ; // 声明了双精度浮点型变量 pi char x = ' x ' ; // 声明变量 x 的值是字符 'x'。 Java语言支持的变量类型有: http://www.jinnan411.top/?p=880 类变量:独立于方法之外的变量,用

局部变量栈内存返回问题

江枫思渺然 提交于 2019-12-02 19:37:24
函数在返回参数的时候是这样的,先把要返回的数放在寄存器eax中,然后回到主函数中取出eax中的数值放在变量里,所以这样是不涉及函数中变量地址的。如果要返回引用,也就是变量地址,那么它会把这个变量的地址放在eax中,(注意这个地址是位于函数的栈空间里的,出了这个函数,这块内存就会被系统标记为可占用(就是其它程序可以占用)),回到主函数后系统会把这个地址赋值给主函数中的指针变量。此时主函数中的指针变量就指向了一个已经被标记为可占用的内存空间 来源: https://www.cnblogs.com/1271908407boy/p/11760921.html

内部类访问局部变量时,为什么需要加final关键字

六眼飞鱼酱① 提交于 2019-12-02 18:51:30
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类中的方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域只在这个方法内部有效。因为编译的时候内部类和方法在同一级别上,所以方法中的变量或参数只有为final,内部类才可以引用。 Java代码: package com.cxz.j2se; public class MyClass { public MyClass() { final int finalValue = 10; int not$Final = 20; MyInterface myInterface = new MyInterface() { public void functionWithoutPara() { //compile Error //System.out.println(noFinal); System.out.println(finalValue); } public void functionWithPara(int num) { System.out.println("The parameter "

Java11 新特性

Deadly 提交于 2019-12-02 17:30:24
Java 11新特性的详细解释。JDK 11已经于 2018年9月25日正式发布,那么Java 11主要包含哪些新特性呢? JDK 11是Java SE 11平台版本11的开源参考实现,由JSR 384在Java Community Process中指定。 阿里巴巴是中国唯一的JCP委员会成员公司,参与Java规范制定。 该版本的功能和时间表是通过JEP流程提出和跟踪的,并由JEP 2.0提案进行了修订。 使用JDK Release Process(JEP 3)生成发布。 Java11 主要新特性 详解 1、ZGC:可伸缩低延迟垃圾收集器 ZGC 即 Z Garbage Collector(垃圾收集器或垃圾回收器),这应该是 Java 11 中最为瞩目的特性,没有之一。ZGC 是一个可伸缩的、低延迟的垃圾收集器,主要为了满足如下目标进行设计: GC 停顿时间不超过 10ms 既能处理几百 MB 的小堆,也能处理几个 TB 的大堆 应用吞吐能力不会下降超过 15%(与 G1 回收算法相比) 方便在此基础上引入新的 GC 特性和利用 colord 针以及 Load barriers 优化奠定基础 当前只支持 Linux/x64 位平台 停顿时间在 10ms 以下,10ms 其实是一个很保守的数据,即便是 10ms 这个数据,也是 GC 调优几乎达不到的极值。根据 SPECjbb

java局部变量与成员变量

狂风中的少年 提交于 2019-12-02 14:37:52
成员变量:a 局部变量:i a可以直接声明变量不用初始化值,因为在初始化类的时候jvm会初始化a; i不可以不初始化而进行运算,javac强制规定如此,局部变量在调用的时候是可以确定该变量的值的,所以强制规定需要一个初始化的值。避免交给jvm进行初始化而加大性能消耗。 public class TestI加价 { int a; public void changei(){ int i = 0; i = i++; } } 来源: https://blog.csdn.net/weixin_43063239/article/details/102775302

this关键字。

馋奶兔 提交于 2019-12-02 14:35:26
一、this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。 Public Class Student { String name; //定义一个成员变量name private void SetName(String name) { //定义一个参数(局部变量)name this.name=name; //将局部变量的值传递给成员变量 } } 应用一:引用成员变量 如上面这段代码中,有一个成员变量name,同时在方法中有一个形式参数,名字也是name,然后在方法中将形式参数name的值传递给成员变量name,虽然我们可以看明白这个代码的含义,但是作为Java编译器它是怎么判断的呢?到底是将形式参数name的值传递给成员变量name,还是反过来将成员变量name的值传递给形式参数name呢?也就是说,两个变量名字如果相同的话,那么Java如何判断使用哪个变量?此时this这个关键字就起到作用了。this这个关键字其代表的就是对象中的成员变量或者方法。也就是说,如果在某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。为此在上面这个代码中,this.name代表的就是对象中的成员变量

JavaScript闭包

﹥>﹥吖頭↗ 提交于 2019-12-02 13:06:44
一、闭包的作用 JavaScript 中闭包是一个很难理解的概念,也是衡量 JavaScript 功力的重要 标准。JavaScript 语法中的独特特性也通过闭包淋漓尽致的体现了出来。 在学习闭包的过程中,很多同学最大的困惑其实并不是语法本身,而是看 着闭包的语法不知道它是干什么用的。难道闭包仅仅是一项供奉在象牙塔中供学 术研究者膜拜的高冷课题吗? 其实并不是这样,闭包的本质是将一个函数中某些变量的作用域延伸到函 数外部的技术。所有需要突破作用域链,在函数外部访问函数内部变量值的场合 都可以使用闭包。具体的例子我们看过语法后再讲述。 二、作用域链 1. 作用域 在 JavaScript 中,变量也可以分为全局变量和局部变量。 全局变量 直接在 script 标签内声明的变量就是全局变量 var global = 'Hello I am Global'; console.log("global="+global); // global=Hello I am Global 局部变量 在函数中声明的变量是局部变量 function myMethod() { var localVariable = "Hello I am Local"; console.log("localVariable=" + localVariable); // :localVariable=Hello I am

Java 变量类型

无人久伴 提交于 2019-12-02 11:11:33
Java 变量类型 在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式说明:type为Java数据类型;identifier是变量名;可以使用逗号隔开来声明多个同类型变量。 Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用 static 修饰 实例变量:独立于方法之外的变量,不过没有 static 修饰 局部变量:类的方法中的变量 Java 局部变量 局部变量声明在方法、构造方法或者语句块中 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁 访问修饰符不能用于局部变量 局部变量只在声明它的方法、构造方法或者语句块中可见 局部变量是在栈上分配的 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用 实例变量 实例变量声明在一个类中,但在方法、构造方法和语句块之外 当一个对象被实例化之后,每个实例变量的值就跟着确定 实例变量在对象创建的时候创建,在对象被销毁的时候销毁 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息 实例变量可以声明在使用前或者使用后 访问修饰符可以修饰实例变量; 实例变量对于类中的方法、构造方法或者语句块是可见的

转:理解ThreadLocal

杀马特。学长 韩版系。学妹 提交于 2019-12-02 08:38:23
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。 线程局部变量并不是Java的新发明,很多语言(如IBM IBM XL FORTRAN)在语法层面就提供线程局部变量。在Java中没有提供在语言级支持,而是变相地通过ThreadLocal的类提供支持。 所以,在Java中编写线程局部变量的代码相对来说要笨拙一些,因此造成线程局部变量没有在Java开发者中得到很好的普及。 ThreadLocal的接口方法 ThreadLocal类接口很简单,只有4个方法,我们先来了解一下: void set(Object value)