简单分析Java的求值策略原理
形参和实参
java在定义方法时可以设置参数,参数分为形参和实参,形参是指在定义函数时用于接收外部传入数据的参数,而实参是指在调用方法时主调函数向被调函数传递的数据参数。
例如:
public class Main { public static void main(String[] args) { int a = 2; int b = 3; System.out.println(sum(a,b));//5 } private static int sum(int i1,int i2){ return i1+i2; } }
其中,a,b是传入sum方法的数据为实参,i1,i2是定义方法时接收数据的参数为形参。
求值策略
实参在向形参传递值的时候有多种方法,即求值策略。求值策略分为严格求值、非严格求值和非确定求值。
其中严格求值内包含我们常见的值传递(传值)、引用传递(传引用)和地址传递(传址)。
传值:将实参的值复制副本后传给形参
传引用:将实参的引用直接传给形参
传址:将实参的引用复制副本后传给形参
Java的求值策略
地址传递可以看成值传递的一种特殊情况,java的基础类型传值为值传递,引用类型的传值是地址传递,因此可以说java中的求值策略为传值
到此这篇关于简单分析Java的求值策略原理的文章就介绍到这了,更多相关Java的求值策略内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
简单分析Java的求值策略原理
形参和实参 java在定义方法时可以设置参数,参数分为形参和实参,形参是指在定义函数时用于接收外部传入数据的参数,而实参是指在调用方法时主调函数向被调函数传递的数据参数. 例如: public class Main { public static void main(String[] args) { int a = 2; int b = 3; System.out.println(sum(a,b));//5 } private static int sum(int i1,int i2){ ret
-
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
介绍 本章,我们将讲解在ECMAScript向函数function传递参数的策略. 计算机科学里对这种策略一般称为"evaluation strategy"(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面的内容,我觉得称为赋值策略更为恰当,anyway,标题还是写成大家容易理解的求值策略吧),例如在编程语言为求值或者计算表达式设置规则.向函数传递参数的策略是一个特殊的case. http://dmitrysoshnikov.com/ecmascript/chapter-
-
详细讨论JavaScript中的求值策略
目录 一栗以蔽之 参数传递 按值传递 按共享传递 总结 延伸 - 惰性求值 最近在研究 lambda演算 中的 η-变换 在JavaScript中的应用,偶然在 stackoverflow 上看到一个比较有意思的问题.关于JavaScript的求值策略,问js中函数的参数传递是按值传递还是按引用传递?回答很经典. 一栗以蔽之 function changeStuff(a, b, c) { a = a * 10; b.item = "changed"; c = {item: "
-
简单了解Java多态向上转型相关原理
这篇文章主要介绍了简单了解Java多态向上转型相关原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 多态性是面向对象的第三大特征. 多态的优点 改善代码的组织结构和可读性. 能够创建可扩展的程序.(随时可以加入新功能) 消除类型之间的耦合关系. 说实话,作为小白的我,并不太能够理解上面三个优点.随着深入学习,理解应该会越来越深吧,共勉. 向上转型 概念 Java允许把子类对象赋值给父类的引用变量,不用做任何强制转换,系统自动完成.向上转型来自
-
简单分析Java线程编程中ThreadLocal类的使用
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLocalVar更加合适.线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突. 从线程的角度看,每个线程都保持一个对
-
简单分析ucenter 会员同步登录通信原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid)). 3.然后这个函数后向Ucenter的index.php传递数据,index.php接受传
-
简单了解java volatile关键字实现的原理
一.volatile关键字的语义分析 1.保证可见性 对共享变量的修改,其他线程能够马上感知到.但不能保证原子性(i++) 2.保证有序性 3.volatile的原理和实现机制 有volatile修饰的共享变量进行写操作的时候会多出有 "lock"标志的汇编代码,Lock前缀的指令在多核处理器下会引发两件事情: 1)将当前处理器缓存行中的数据写回到系统内存中 2)这个写回内存的操作会使在其他cpu里缓存了该内存地址的数据无效. 二.volatile的使用场景 1.状态标志(开关模式)
-
简单分析js中的this的原理
很多人可能会有疑问,this到底是什么?为什么this的值变化多端? 首先我们来概括下this. this是一个对象,一般存在于函数中,表示当前函数的执行上下文; 值得一提的是,当函数在执行后,this才有绑定的对象,函数未执行时,this没有内容 接下来我们看看在不同场景下的this的指向 1.函数默认执行 :此时this指向Window function fn(){ console.log(this) //Window }; fn(); 在严格模式开启后,this的指向又有所不同 严格模式下
-
简单分析java中CMS回收器
CMS(Concurrent Mark Sweep)回收器 它使用的是标记清除算法,同时又是一个使用多线程并行回收的垃圾回收器. CMS主要工作步骤 CMS工作时主要步骤有初始标记.并发标记.预清理.重新标记.并发清除和并发重置.其中初始标记和重新标记是独占系统资源的,而预清理.并发标记.并发清除和并发重置是可以和用户线程一起执行的.因此它可以在应用程序运行过程中进行垃圾回收. 根据标记清除算法,初始标记.并发标记和重新标记都是为了标记出需要回收的对象.并发清理则是在标记完成后,正是回收垃圾对象
-
如何用JavaScript实现一个数组惰性求值库
概述 在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性计算.懒惰求值,也称为传需求调用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作.它有两个相关而又有区别的含意,可以表示为"延迟求值"和"最小化求值",除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型. 看到函数式语言里面的惰性求值,想自己用JavaScript写一个最简实现,加深对惰性求值了解.用了两种方法,
随机推荐
- js实现加载页面就自动触发超链接的示例
- Nginx 实现灰度发布的三种方法总结
- eregi_replace与preg_replace 函数代码的用法比较
- JS实现直接运行html代码的方法
- 用javascript来控制 链接的target 属性的代码
- PHP几个数学计算的内部函数学习整理
- 验证用户是否修改过页面的数据的实现方法
- es6系列教程_ Map详解以及常用api介绍
- jquery(javascript)自动序列编号和属性编号实现代码
- imail8.22安装激活实例[图文]
- 数据库SQL语句优化总结(收藏)
- JavaScript事件学习小结(一)事件流
- Android Call(打电话)的基本知识详解
- PHP命名空间和自动加载类
- 浅谈Java读写注册表的方式Preferences与jRegistry
- 使用.htaccess设置图片防盗链的详细方法
- vue实现手机号码的校验实例代码(防抖函数的应用场景)
- 使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
- 基于VC 6.0使用C语言实现俄罗斯方块
- 关于Django ForeignKey 反向查询中filter和_set的效率对比详解