java查看变量类型的方法 将日期从string转成date

现在Java 11已经发布了一段时间,是时候学习新版本Java中的一些新特性了。今天我要实际解释一下Java 10中增加的最重要的特性:局部变量类型推断。大家都知道是var关键字,但是怎么用,要注意哪些点呢?下面我们通过几个例子来解释一下局部变量类型推断的这个新特性!什么是局部...

现在Java 11已经发布了一段时间,是时候学习新版本Java中的一些新特性了。

今天我要实际解释一下Java 10增加的最重要的特性:局部变量类型推断。大家都知道是var关键字,但是怎么用,要注意哪些点呢?

下面我们通过几个例子来解释一下局部变量类型推断的这个新特性!

什么是局部变量类型推断?

var javastack = & # 8220javastack ”

system . out . println(Java stack);

可以看到,局部变量类型推断是指左边的类型直接由var定义,而不是编写具体的类型。编译器可以根据右边的表达式自动推断类型,比如上面的字符串。

var javastack = & # 8220javastack ”

等于:

String javastack = & # 8220javastack ”

局部变量类型推理的例子

既然叫局部变量类型推断,那就只能用在局部变量里。这里还有一些例子。

1。字面量定义局部变量

私有静态void testVar() {

var javastack = & # 8220javastack ”

system . out . println(Java stack);

}

2。接收方法的返回值定义了一个局部变量

私有静态void testMethod() {

var javastack = getJavastack();

system . out . println(Java stack);

}

公共静态字符串getJavastack() {

return & # 8220javastack ”

}

3。在循环中定义局部变量

私有静态void测试循环(){

for(var I = 0;我<3;i++) {

for(var m = 10;m <15;m++) {

system . out . println(I+m);

}

}

}

4。结合局部变量的泛型

私有静态void testGeneric() {

//表达式1

列表& lt字符串& gtlist1 =新数组列表& lt& gt();

list 1 . add(“javastack & # 8221);

//表达式2

var list2 = new ArrayList & lt& gt();

list 2 . add(2018);

//表达式3

var list3 = new ArrayList & lt字符串& gt();

list 3 . add(“javastack & # 8221);

}

1在表达式<>Jdk 1.7+不需要以具体的类型开头,在界面中注明即可。

如果在表达式2中使用var,<>

在表达式3中,在

在下列情况下不能使用局部变量类型推理

1。类成员变量的类型

//编译错误

private var javastack = & # 8220牛蛋教育IT教室;

2。方法返回类型

/**

*编译错误

* @返回

*/

公共静态变量getJavastack(){

return & # 8220牛丹教育IT教室”;

}

3,Lambda表达式

私有静态void testLambda() {

runnable runnable =()->system . out . println(“javastack & # 8221);

//编译错误

//var runnable =()->system . out . println(“javastack & # 8221);

}

以上三种场景不能用Var,其他情况需要验证。

局部变量类型推理的优缺点

优点:简化的代码

CopyOnWriteArrayList list 1 = new CopyOnWriteArrayList();

ConcurrentModificationException CME 1 = new ConcurrentModificationException();

DefaultServiceUnavailableRetryStrategy strategy 1 = new

DefaultServiceUnavailableRetryStrategy();

var list 2 = new CopyOnWriteArrayList <& gt();

var CME 2 = new ConcurrentModificationException();

var strategy 2 = new DefaultServiceUnavailableRetryStrategy();

从上面的代码可以看出,长定义类型会让代码非常冗长,var的使用大大简化了代码的编写,而类型的统一让代码非常对齐。

缺点:屏蔽类型

var token = new JsonParserDelegate(解析器)。current token();

看看上面的代码,不进去看看返回的结果类型,谁知道返回的类型是什么?所以在这种情况下,最好不要使用var,而是使用具体的抽象类、接口或者实例类型。

关键词var原理

var其实只是Java 10加的一个语法糖。编译时会自动推断实际类型,其编译的字节码与实际类型一致,如下例所示。

私有静态void testByteCode() {

String javastack1 = & # 8220javastack ”

var javastack2 = & # 8220javastack ”

}

编译成字节码后:

私有静态测试字节码()V

劳拉西泮

22号线L0

LDC & # 8220javastack & # 8221

阿斯托利0

腰神经2

23号线

LDC & # 8220javastack & # 8221

阿斯托利1号

L2

24号线

返回

L3

local variable javastack 1 Ljava/lang/String;L1 L3 0

local variable javastack 2 Ljava/lang/String;L2 L3 1

MAXSTACK = 1

MAXLOCALS = 2

可以看出javastack1和javastack2是虚拟机识别的局部变量类型:java.lang.String虚拟机不知道var,所以var不神奇。

好了,关于Java 10中新函数的这篇实用文章就到此为止,也就是局部变量的类型推断。关于新Java版本的特性和功能的更多实用文章将在后面带来。

本文来自弑魂战神投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/483200.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 03-31
下一篇 03-31

相关推荐

  • 思维导图是什么意思,思维导图的10种类型分析

    你可能听过两种完全不同的关于思维导图的观点。一个是思维导图是灵丹妙药。如果平时学习不好,一旦学会思维导图,什么问题都可以解决。另一种观点认为思维导图只是一个绘图工具,作用不大。今天分享这篇文章的目的就是让大家正确认识思维导图。什么是思维导图?为什么要用思维

    2023-07-28 10:11:01
    604 0
  • redis支持的数据类型有哪些 redis支持的5种类型

    Redis的五种数据结构如下:对于redis,所有的键都是字符串。1.字符串字符串类型是redis中最基本的数据类型,一个键对应一个值。字符串类型是二进制安全的,这意味着redis的字符串可以包含任何数据。如数字、字符串、jpg图片或序列化对象。使用:get、set、del、incr、decr等。1

    2023-07-26 16:55:01
    285 0
  • 如何将int转为string类型 一览2种类型互换方式

    1,int和string类型相互转换int->;String: std:: to _ string (intval),同样适用于double、float等类型。字符串->Int: atoi (const char *)或stoi(const string*) (stoi增加了范围检查功能,所以不需要像atoi一样使用str.c_str进行转换)2。随机函数的生成Void srand(uns

    2023-07-26 08:48:01
    1056 0
  • easypoi导出word换行 easypoi导出数字类型

    如果遇到poi阅读,比如{name}无法整体识别,可以使用word的域操作。如果你不知道域的用法,你可以这样做。先写在文本文档里,比如{name},再***到word里。不要在word中一个一个地输入,否则poi可能会认不出您是一个整体XWPFDocument对象是apache提供的第三方jar,可以操作wor

    2023-07-25 10:28:01
    338 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信