首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Java】变量声明在循环体内还是循环体外你用哪一个?

引言 最近刷知乎的时候看到一个比较有意思的问题,变量声明在循环体内还是循环体外?这个问题有人认为应该定义循环体外,不应该定义在循环体内。...这条建议应该也出现过在很多公司的代码规范上了吧。下面我们就来分析下变量声明在循环体内和变量声明循环体外的情况。...Object o = null变量还有的话就是LocalVariableTable有点区别,变量在循环体内的话公用了一个变量槽(o和b变量) outsideLoop在stack frame中定义了4个slot..., 而intsideLoop只定义了3个slot 在outsideLoop中,变量o和b分别占用了不同的slot,在intsideLoop中,变量o和b复用一个slot。...从“「局部变量作用域最小化」”原则上来说,变量声明在循环体内更合适一点,这样代码的阅读性更好。 结束 由于自己才疏学浅,难免会有纰漏,假如你发现了错误的地方,还望留言给我指出来,我会对其加以修正。

73820

【Java】变量声明在循环体内还是循环体外你选哪一个咧?

引言 最近刷知乎的时候看到一个比较有意思的问题,变量声明在循环体内还是循环体外?这个问题有人认为应该定义循环体外,不应该定义在循环体内。...这条建议应该也出现过在很多公司的代码规范上了吧。下面我们就来分析下变量声明在循环体内和变量声明循环体外的情况。...Object o = null变量还有的话就是LocalVariableTable有点区别,变量在循环体内的话公用了一个变量槽(o和b变量) outsideLoop在stack frame中定义了4个slot..., 而intsideLoop只定义了3个slot 在outsideLoop中,变量o和b分别占用了不同的slot,在intsideLoop中,变量o和b复用一个slot。...从“局部变量作用域最小化”原则上来说,变量声明在循环体内更合适一点,这样代码的阅读性更好。 结束 由于自己才疏学浅,难免会有纰漏,假如你发现了错误的地方,还望留言给我指出来,我会对其加以修正。

1.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Scala从零起步:变量和标识符

    ,所以在创建变量时无需指定变量类型,直接简单粗暴地直接声明变量即可: i = 1 # Python 当然,随着Python的不断发展,变量声明也开始支持明确变量类型,例如: i:int = 1 #...python 虽然上述语句中明确了变量i是int类型数据,但实际上其效果与C/C++中全然不同:Python的变量类型声明在变量名之后,仅用于提示使用者该变量的预期类型,且声明是这个类型后续也可能改变...(毕竟Python的特性之一是动态类型);而C/C++中的变量类型声明在变量名之前,是一种真正的明确和指定变量类型,且一旦指定则后续不可变更。...所以,Scala变量定义由三部分组成: 必须冠以val/var作为关键字开头 随后承接变量名 在变量名之后支持声明或缺省变量类型 例如: val i = 1 // scala变量类型方式一 var...尤其是理解val/var的哲学理念将伴随Scala整个学习周期……, 02 变量的数据类型 前文提到,在Scala变量定义中,支持显示声明或缺省变量类型,当缺省时则交由解释器自动推断。

    44220

    Scala

    在函数体内,可以访问到相应作⽤域内地任何变量。(重点)函数可以在变量不再处于作⽤域内时被调⽤。...8、scala和java 的区别   1、变量声明:   scala:只需要申明是val或是var,具体的类型(比如String,Int,Double等等)由编译器⾃行推断   java: 需要在变量前...1. var是变量声明关键字,类似于Java中的变量,变量值可以更改,但是变量类型不能更改。   2. val常量声明关键字。   3. def 关键字⽤于创建方法(注意方法和函数的区别)   4....2、Nothing也是一个trait(特质),是所有类型Any(包括值类型和引用类型)的子类型,它不在有子类型,它也没有实例,实际上为了一个方法抛出异常,通常会设置⼀个默认返回类型。   ...在Java中,null是一个关键字,不是⼀个对象,当开发者希望返回一个空对象时,却返回了了⼀个关键字,为了解决这个问题,Scala建议开发者返回值是空值时,使⽤Option类型,在Scala中null是

    19230

    Spark入门系列(二)| 1小时学会RDD编程

    作者 | 梁云1991 转载自Python与算法之美(ID:Python_Ai_Road) 导读:本文为 Spark入门系列的第二篇文章,主要介绍 RDD 编程,实操性较强,感兴趣的同学可以动手实现一下...5,安装Apache Toree-Scala内核。 可以在jupyter 中运行spark-shell。 使用spark-shell运行时,还可以添加两个常用的两个参数。...声明对一个RDD进行cache后,该RDD不会被立即缓存,而是等到它第一次因为某个Action操作触发后被计算出来时才进行缓存。...八、共享变量 当Spark集群在许多节点上运行一个函数时,默认情况下会把这个函数涉及到的对象在每个节点生成一个副本。但是,有时候需要在不同节点或者节点和Driver之间共享变量。...广播变量在每个节点上缓存一个只读的变量,而不是为每个task生成一个副本,可以减少数据的传输。 累加器主要用于不同节点和Driver之间共享变量,只能实现计数或者累加功能。

    84750

    scala(八) 面向对象

    语法: import 包.*/ import 包.类名 位置: 必须处于java源文件中,声明包(package)之后,类(class) 之前 声明包 scala中包的用法 导包 位置...定义类,不用指定修饰符 class 类名[(参数列表)]{类体} 说明: 1.Scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public) 2.一个Scala...规范中,应该对属性定义 get/set 方法,在scala中也有默认 get/set 方法。...scala中,在class中的代码不是属性或函数, 它会统一放到主构造器中执行。...定义:class 类名[(参数列表)]{类体} 若类中没有任何声明,可以不加{} 类中有一个主构造器,多个辅助构造器,声明辅助构造器必须调用主构造器或其他辅助构造器。

    34010

    Scala专题系列(一):Scala基础

    二 :Scala基础 1:变量声明 在Scala中,允许在声明变量是可变的还是不可变(只读)的,不可变的用val关键字声明: val str : String = "hello scala" 上例就是声明了一个...String 类型的字符串str 并赋值为"hello scala" val 在声明时必须被初始化 一个可变变量用关键字var来声明,var声明的变量是可变的,声明后可以再次对其赋值,但是也必须在声明的同时立即初始化...var price:double = 100.0 关于上述提到,val和var声明变量时必须初始化这一个规则,也有例外情况,比如这两个关键字均可以用在构造函数的参数中,这时候变量是该类的一个属性,因此显然不必在声明时进行初始化...此时如果用 val 声明,该属性是不可变的;如果用 var 声明,则该属性是可变的 为了减少可变变量在并发编程中,引起bug,应该尽可能的使用不可变变量,而比较常见的一种现象是当你正在使用的对象被其他人修改时...,Scala并不区分基本类型和引用类型,对于它来讲所以得类型都是一个类 在Scala中,我们用方法而不是强制类型转换来做数值类型之间的转换 4:方法声明 Scala 中声明方法的结构如下: def hello

    73440

    Scala 变量(三)

    变量声明 在学习如何声明变量与常量之前,我们先来了解一些变量与常量。 一、变量: 在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。...二、常量 在程序运行过程中其值不会发生变化的量叫做常量。如:数值 3,字符'A'。 在 Scala 中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。...---- 变量类型声明 变量的类型在变量名之后等号之前声明。...---- 变量类型引用 在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。...---- Scala 多个变量声明 Scala 支持多个变量的声明: val xmax, ymax = 100 // xmax, ymax都声明为100 如果方法返回值是元组,我们可以使用 val 来声明一个元组

    71430

    少年:Scala 学一下

    当你看到类似不同地点的下划线、一个变量没有定义就直接使用时,就开始怀疑自己的智商 在百度上搜索“scala 难 放弃 ”等类似字眼,内容很多。...一个参数的方法,一切符号皆方法。 两个构造参数的case class 两个型参数的高阶Kind 动词名词 在Java语言当中,动词和名词是泾渭分明的,动词就是方法,可执行的东西。...还可以在赋值语句中直接使用,并且与for关键字配合使用 隐式系统 scala语言比较特有的特征,只是简简单单的一个implicit关键字 三个基本的语义,隐式值、隐式视图、隐式类,隐式传递 隐式值与隐式视图的组合...Scala 变量 var,val,变量定义,Any,AnyRef,AnyVal,自动转换,基本上根Java类似,不过有细节差别。...每个知识点都配备了详细的代码示例和配置说明,实操性极强。以后工作需要感觉必读。 参考 Scala学习笔记 Scala语言浅析

    73410

    一天学完spark的Scala基础语法教程一、基础语法与变量(idea版本)

    Null 值 Scala 转义字符 Scala 变量 变量声明 总结: 创建测试类: 【day1/demo1.scala】 这里是有包名(后面有讲述)的  通过Package可以创建包名...Unit只有一个实例值,写成()。 Null null 或空引用 Nothing Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。...变量声明 在学习如何声明变量与常量之前,我们先来了解一些变量与常量。 一、变量: 在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。...二、常量 在程序运行过程中其值不会发生变化的量叫做常量。如:数值 3,字符'A'。 在 Scala 中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。...由于Scala是属于弱类型的,故而变量类型不需要单独声明,当然想声明也可以: val Str : String = "test";//声明类型的变量 声明变量实例如下: package day1 object

    92030

    原 荐 Scala的面向对象

    以及一个成员方法 eat() //需要注意的是:scala中变量(var)声明时需要指定初始值, private var name = “” private var age = 0 def...而直接写在类的体中的既不是类的成员变量也不是成员函数的部分,会自动收集为构造函数的体。     scala声明主构造的形式是在类右侧声明,如果不声明,Scala也提供了默认构造器。...示例: //scala中的类不需要明确声明一个构造器,而是直接将构造参数通过构造参数列表声明为类的一部分 class Person(v1: String, v2: Int) { //创建一个类,并定义类里的两个成员变量...以及一个成员方法 eat() //需要注意的是:scala中变量(var)声明时需要指定初始值, private var name = v1 private var age = v2 /...} } 5、样例类case class     1)只要在声明类时,在class关键字前加上case关键字,这个类就成为了样例类。样例类必须要显式的声明一个主构造器。

    853130

    大数据技术之_16_Scala学习_02_变量

    关键字2.16 作业01 ---- 第二章 变量   为什么需要变量:一个程序就是一个世界,在 scala 中一切都是对象。...2.2.2 Scala 变量使用的基本步骤   1、声明/定义变量 (scala 要求变量声明时需要初始化)   2、使用 2.3 Scala 变量的基本使用 示例代码: package com.atguigu.chapter02...2.4 Scala 变量使用说明 2.4.1 变量声明基本语法 var|val 变量名[: 变量类型] = 变量值 2.4.2 注意事项   1、声明变量时,类型可以省略(编译器自动推导,即类型推导)。...2、类型确定后,就不能修改,说明 Scala 是强数据类型语言。   3、在声明/定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改。   ... 是强数据类型语言     // num = 2.5 // 错误     // 3、在声明/定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改

    1.2K40

    Scala变量和常用数据类型

    一、 声明值和变量 Scala声明变量有两种方式,一个用val,一个用var。...声明方式:val / var 变量名 : 变量类型 = 变量值 val定义的值是不可变的,它不是一个常量,是不可变量,或称之为只读变量。...3、为了减少可变性引起的bug,应该尽可能地使用不可变变量。变量类型可以省略,解析器会根据值进行推断。val和var声明变量时都必须初始化。...三、Scala类型层次结构 java的除了原始类型的所有类都有一个默认的父类Object,那么scala的统一父类是什么呢? 在Scala中,所有的值都有类型,包括数值和函数。...在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object。

    38510

    Scala变量和数据类型

    Scala变量和数据类型 在Scala中,变量是用于存储和操作数据的标识符。在使用变量之前,我们需要声明它们并指定数据类型。Scala提供了多种数据类型,包括整数、浮点数、布尔值、字符、字符串等。...下面是一个示例,展示了如何声明和使用整数类型的变量: object IntegerExample { def main(args: Array[String]): Unit = { val...下面是一个示例,展示了如何声明和使用布尔类型的变量: object BooleanExample { def main(args: Array[String]): Unit = { val...下面是一个示例,展示了如何声明和使用字符类型的变量: object CharExample { def main(args: Array[String]): Unit = { val charVar...下面是一个示例,展示了如何声明和使用字符串类型的变量: object StringExample { def main(args: Array[String]): Unit = { val

    3900

    (数据科学学习手札45)Scala基础知识

    2.2 Scala变量声明   和java类似,Scala中的变量需要在创建时进行声明,有var和val两种声明方式,其中val类型变量定义后不可以重新赋值,而var类型变量声明之后可以自由赋新值,下面在...Scala控制台中演示: //利用val进行变量的声明 scala> val x = 0 x: Int = 0 scala> x = 5 :11: error: reassignment...,val声明后的变量不可重新赋值,而var则可以。   ...Scala中的变量声明有两种形式,一种是在声明变量时指出变量的具体类型: scala> val x:Int=10 x: Int = 10 scala> val y:Double=1.00 y: Double...= 1.0 scala> val z:String="scala" z: String = scala   而事实上,即使你在Scala中声明变量时不进行类型的指定,Scala内部也会根据你输入数据的具体类型进行判断

    2.6K20

    3小时Scala入门

    4,变量 Scala支持两种类型的变量,即常量val和变量var。 常量在程序中不可以被重新指向,变量可以被重新指向新的对象。 声明变量时可以指定类型,也可以由解释器根据初始值自动推断。 ?...类的定义中可以用private声明为私有属性和私有方法,只允许在类的作用域访问,不允许在类的外部访问。 可以用protected声明为受保护的属性和方法,只允许在类作用域及其子类作用域中访问。...Scala有3中定义类的风格,java风格,简写风格,和case类风格。 简写风格可以在类声明的参数前加上val即表示为类的属性,省去属性的绑定。...和Python语言不同,Scala每个类只能继承一个超类。 为了实现多继承的功能,在指定一个超类的同时可以指定若干个trait特征进行继承。 ? ? ? ? ?...并且在一个良好风格的scala程序中,只需要使用val不可变变量而无需使用var可变变量。 显式的for或者while循环是不可取的,让我们用更多的高阶函数吧。

    1.6K30

    快速学习-Scala变量

    为什么需要变量 一个程序就是一个世界,在scala中一切都是对象 ?...概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。...变量使用的基本步骤 声明/定义变量 (scala要求变量声明时初始化) 使用 Scala变量使用案例入门 ?...变量声明基本语法 var | val 变量名 [: 变量类型] = 变量值 注意事项 声明变量时,类型可以省略(编译器自动推导,即类型推导) 类型确定后,就不能修改,说明Scala 是强数据类型语言...在声明/定义一个变量时,可以使用var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改 [案例].

    35410

    Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合

    前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量...,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量; 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变。...3:指定类型:无论声明val变量还是声明var变量。...都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型的推断; 4:声明多个变量:可以将多个变量放到一起进行声明,如val id,age :Int = 0;val num1,num2=100...注意,在scala中没有提供++,--操作,我们只可以使用+=和-=操作符; 7:apply函数:在scala中apply函数是非常特殊的一种函数,在Scala的object中,可以声明apply函数。

    1.5K50

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券