java全局变量和局部变量_Java 10 –局部变量类型推断

java全局变量和局部变量

在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能。 从Java的第一个版本开始,它是一种强类型化的语言,我们需要提及每种变量数据类型。 我们都感到Java是冗长的语言,并期望精确,紧凑的Java编写方式。 Java 8解决了这个问题。

Java 10在初始化程序中添加了局部变量类型推断 ,以消除冗长的内容。 例如,

jshell> Map<String,String> map = new HashMap<>();
jshell> var map = new HashMap<>(); //This is valid with Java10

这里的LHS变量数据类型将由RHS语句确定。 例如,

jshell> var i = 3;
i ==> 3 //based on RHS, the LHS datatype is int.
jshell>int i=3,j=4; //Valid Declaration
but,
jshell> var j=4,k=5; //Not a Valid Declaration
| Error:
|'var' is not allowed in a compound declaration
| var j=4,k=5;
|^

您可以将此功能用于增强的for循环和for循环。

jshell> List names = Arrays.asList("ABC","123","XYZ");
names ==> [ABC, 123, XYZ]
jshell> for(var name : names){
...> System.out.println("Name = "+ name);
...> }Name = ABC
Name = 123
Name = XYZ

我们也可以在for循环中使用局部变量类型推断。

jshell> int[] arr = {1,2,3,4};
arr ==> int[4] { 1, 2, 3, 4 }jshell> for (var i=0;i<arr.length;i++){...> System.out.println("Value = "+i);...> }
Value = 0
Value = 1
Value = 2
Value = 3

在某些情况下,此功能无效。 例如,

  • 对构造函数变量无效
  • 对实例变量无效
  • 对方法参数无效
  • 无效以分配NULL
  • 无效作为返回类型

让我们看看上述声明的示例。

jshell> public class Sample {...>    private var name = "xyz";...>    public Sample(var name) {...>     this.name=name;...>    }...>    public void printName(var name){...>      System.out.println(name);...>    }...>    public var add(int a, int b) {...>     return a+b;...>    }...> }
|  Error:
|  'var' is not allowed here
|     private var name = "xyz"; //Instance variable
|             ^-^
|  Error:
|  'var' is not allowed here
|     public Sample(var name) { //Constructor variable
|                   ^-^
|  Error:
|  'var' is not allowed here
|     public void printName(var name){ //Method parameter
|                           ^-^
|  Error:
|  'var' is not allowed here
|     public var add(int a, int b) { //Method return type
|            ^-^
jshell> public class Sample {...>    ...>    public static void main(String[] args) {...>     var s = null;...>    }...> }
|  Error:
|  cannot infer type for local variable s
|    (variable initializer is 'null')
|      var s = null;
|      ^-----------^

当我们从较低版本迁移到Java10时,我们不必担心本地变量类型推断,因为它具有向后兼容性。

在接下来的文章中,我们将学习另一个主题。 直到敬请期待!

翻译自: https://www.javacodegeeks.com/2018/06/local-variable-type-inference.html

java全局变量和局部变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS_Java_Oracle_MySQL截取字符串的函数

JS 截取字符串 函数 substring(indexStart, indexEnd)&#xff1a; function f1() {var s abcd;// 字符串的字符下标从0开始&#xff0c;从下标为2的字符c开始截取&#xff0c;截取到下标为3的字符d为止&#xff0c;含头不含尾&#xff0c;所以字符d没有被截取&#xff0c;最…

linux安装meld rpm,Linux meld安装

meld是一款图形化的文本比较工具&#xff0c;该工具在windows与linux平台下均有对应版本&#xff0c;最新版本为3.14.2&#xff0c;附上下载地址http://meldmerge.org/meldmeld相较diff命令其输出结果更加直观&#xff0c;因此在linux下使用该工具进行程序源码的比较。忘了说了…

linux注册平台驱动,关于Linux驱动的平台注册方式-- platform_driver_register

http://hi.baidu.com/deep_pro/blog/item/754f7764b73099fbf636544a.htmlcdev_add 、register_blkdev 这样的驱动注册函数platform_driver_register这样的写法&#xff0c;但是没有看到哪本书介绍了相关内容简要说&#xff0c;使用这种方式&#xff0c;可以轻松的实现device和d…

JDBC连接Oracle数据库的参数配置

Oracle 的连接 URL 字符串&#xff1a;jdbc:oracle:thin:host:port:sid 在数据库配置文件 db_oracle.properties 的配置字段如下&#xff1a; urljdbc:oracle:thin:localhost:1521:orcl dbUserlwx dbPassword123456 driverNameoracle.jdbc.OracleDriver

jdk 1.8 字符串+_JDK 9/10/11:Java字符串上+ =的副作用

jdk 1.8 字符串问题“ 为什么array [i &#xff05;n] i ”在Java 8和Java 10中给出不同的结果&#xff1f; ”已于本周初发布在StackOverflow.com上 。 它指出JDK9和更高版本中存在的Java编译器中的错误 &#xff0c;但JDK8中不存在。 如StackOverflow线程上所述&#xff0…

IntelliJ IDEA for Mac 如何设置字体和字号

按组合键 Command , 打开偏好设置窗口&#xff0c;在左侧菜单导航栏找到 Editor --> Font&#xff0c;如下图所示&#xff1a;

vs mono linux,[.NET][C#.NET]走跳在Linux的人生(八).NET Core与Mono执行

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;我们来试试用.NET Core从Windows环境开发&#xff0c;然后porting到Linux环境(布署及执行.NET Core)&#xff0c;之前曾看过stackoverflow文章提到Mono的性能问题&…

java char类型空值_展望Java的未来:空值类型

java char类型空值尽管有前途的Java值类型不是迫在眉睫&#xff0c;但我偶尔还是喜欢在OpenJDK valhalla-dev邮件列表中打听一下&#xff0c;以了解事情的进展情况并了解即将发生的事情。 诚然&#xff0c;由于我对所用术语的了解有限&#xff0c;并且其中某些消息的底层细节&a…

IntelliJ IDEA 如何设置编辑窗口的背景图片

按下组合键 Shift Command A&#xff0c;打开查找动作的窗口&#xff0c;在输入框中输入 set Background Image&#xff0c;然后选中它&#xff0c;如下图所示&#xff1a; 背景图片设置窗口如下所示&#xff1a;

2013下半年福建高等学校非计算机专业学生计算机二级c语言原题,2013年福建省计算机二级c语言真题及答案(填空题部分)...

1、程序Ccon441.c的功能是&#xff1a;从键盘输入一个直角三角形的两条直角边a和b&#xff0c;计算并输出其周长和面积。将程序填写完整。#include#includevoid main(){double a,b,c,circle,area;printf("Input 2 edges:");scanf(/**/ "%lf %lf" /**/,&…

spring boot示例_Spring Boot完成示例

spring boot示例这篇文章提供了一个使用Spring Boot开发松耦合的REST服务的完整示例。 使用spring boot&#xff0c;我们可以开发可独立运行的生产就绪的Java应用程序&#xff0c;使其成为独立的应用程序&#xff0c;它具有最小的依赖关系并且与其他应用程序的耦合较少。 大多数…

IntelliJ IDEA for Mac的窗口操作

最大化代码编辑窗口的快捷键&#xff1a;Fn Shift Command F12

c++语言编译环境,Windows安装C++开发环境-C++开发环境搭建-嗨客网

Windows安装C语言开发环境教程这里&#xff0c;我们选择使用 Dev-C。Dev-C下载地址https://sourceforge.net/projects/orwelldevcpp/Dev-C下载打开上面的链接&#xff0c;打开 Dev-C 的下载页面&#xff0c;如下图所示&#xff1a;这里我们点击 Download&#xff0c;跳转到下载…

软件实施与硬件实施的区别_实施白色标签

软件实施与硬件实施的区别有时&#xff08;根据我的经验&#xff0c;很多时候&#xff09;您需要为应用程序添加白色标签。 您通常可以以SaaS方式运行它&#xff0c;但是一些重要的或高知名度的客户端可能需要专用部署或本地部署&#xff0c;或者只是在云部署中“自己的一角”。…

Sublime Text 设置在标签页中打开文件

按组合键 Command , 打开配置文件&#xff0c;如下图所示&#xff0c;左边的是系统配置文件&#xff0c;里面都是默认的配置内容&#xff0c;你无法修改&#xff0c;但是你可以复制到右边的用户级别的配置文件中。 Sublime Text 默认打开一个文件时都会打开一个新的窗口&…

c语言计算机培训,C语言计算机基础学习||新手入门必看

本次内容笔者将完全抛弃传统教学的形式&#xff0c;通过自己所学所闻得出来的心得&#xff0c;用通俗易懂的语言结合生活&#xff0c;来让大家更好的认识计算机编程&#xff0c;更好的入门计算机基础。笔者也想用自己的论述告诉大家&#xff0c;专业知识有时会比较枯燥乏味点&a…

javafx如何带菜单_JavaFX技巧30:带有DropShadow的ScrollPane

javafx如何带菜单最近&#xff0c;在我的一个项目中&#xff0c;我发现用户很难看到ScrollPane实例的内容当前是否已滚动。 一种更清晰的方法是在滚动窗格的顶部添加阴影。 这也是Google的Material Design建议的。 所以我尝试了一下。 在我的解决方案中&#xff0c;我只是向Sc…

IntelliJ IDEA 怎么知道项目信息_如何重新打开已经移除的项目_如何关闭和删除项目

文章目录 一个窗口只管理一个项目如何打开已经移除的项目Open 和 Import 的简单区别关闭项目如何删除项目IDEA 怎么知道项目信息这里要特别理解一个问题,硬盘上的项目文件必须在 IDEA 的配置文件中,IDEA 才能识别这个文件,而通过 IDEA 添加本地文件(例如添加项目或者添加模…

hmi开发软件c语言,组态,HMI,软件,VC++,源代码

要点&#xff1a;1)、创建新的HMIBuilder应用。2)、如何创建刻度。3)、如何创建一个组合图形。参阅TestMeter1要点&#xff1a;1)、创建新的HMIBuilder应用。2)、如何快速通过组合操作创建按钮。参阅TestButton1.要点&#xff1a;1)、创建新的HMIBuilder应用。2)、如何快速创建…

机器学习java_Java机器学习,第2部分

机器学习java欢迎使用本教程的第二部分&#xff0c;该教程使用LightningScorer为PMML文件评分。 让我们找出其他参数是如何工作的。 初始步骤与教程的第一部分相似。 首先获取本地副本 git clone https://github.com/sezinkarli/lightningscorer.git并用Maven构建它 mvn c…