首页 > 作文

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

更新时间:2023-04-05 03:05:26 阅读: 评论:0

现在 java 11发布已有一段时间了,是时候慢慢来学习一些java新版本中的新功能特性了。

今天要实战讲解的的是 在java 10 中添加的最重要的特性:局部变量类型推断,大家都知道是 var 关键字,但具体怎么使用,及要注意什么要点呢?

我们通过几个例子来讲解局部变量类型推断这个新特性!

什么是局部变量类型推断

var javastack = “javastack”;

system.out.println(javastack);

大家看出来了,局部变量类型推断就是左边的类型直接使用 var 定义,而不用写具体的类型,编译器能根据右边的表达式自动推断类型,如上面的 string 。

var javastack = “javastack”;

就等于:

string javastack = “javastack”;

局部变量类型推断使用示例

既然叫局部变量类型推断,以只能用在局部变量中,下面给出更多使用示例。

1、字面量定义局部变量

private static void testvar() {

var javastack = “javastack”;

system.out.println(javastack);

}

2、接收方法返回值定义局部变量

private static void testmethod() {

var javas过雪山草地tack = getjavastack();

system.out.println(javastack);

}

public static string getjavastack() {

return “javastack”;

}

3、循环中定义局部变量

private static void testloop() {

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

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

system.out.println(i + m);

}

}

}

4、泛型结合局部变量

private static void testgeneric() {

// 表达式1

list<string> list1 = new arraylist<>();

list1.add(“javastack”);

// 表达式2

var list2 = new arraylist<>();

list2.add(2018);

// 表达式3

var list3 = new arraylist<string>();

list3.add(“javastack”);

}

表达式1后面 <> 里面 jdk 1.7+开始是不用带具体类型的,在接口中指明就行了。

表达式2中如果使用 var 的话, <> 里面默认会是 object 的,所以可以添加任意类型。

表达式3中在 <> 强制使用了 string 来指定泛型。

局部变量类型推断不能用在以下场景

1、类成员变量类型

// 编译报错

private var javastack = “牛旦教育it课堂;

2、方法返回类型

/**

* 编译报错

* @return

*/

publ江西省高考分数线ic static var getjavastack(){

return “牛旦教育it课堂”;

}

3、lambda 表达式

private static void testlambda() {

runnable runnable = () -> system.out.println(“javastack”);

// 编译报错

// var runnable = () -> system.out.println(“javastack”);

}

以上 3 种场景是肯定不能使用 var 的,其他场合有待验证。

局部变量类型推断优缺点

优点:简化代码

copyonwritearraylist list1 = new copyonwritearraylist();

concurrentmodificationexception cme1 = new concurrentmodificationexception();

defaultrviceunavailableretrystrategy strategy1 = new

defaultrviceunavailableretrystrategy();

var list2 = new copyonwritearraylist<>();

var cme2 = new concurrentmodificationexception();

var strategy2 = new defaultrviceunavailableretrystrategy();

从以上代码可以看出,很长的定义类型会显得代码很冗长,使用 var 大大简化了代码编写,同时类型统一显得代码很对齐。

缺点:掩盖类型

var token = new jsonparrdelegate(parr).currenttoken();

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

var关键字原理

var其实就是 java 10 增加的一种语法糖而已,在编译期间会自动推断实际类型,其编译后的字节码和实际学雪随风转类型一致,如以下例子所示。

private static void testbytecode() {

string javastack1 = “javastack”;

var javastack2 = “javastack”;

}

编译成字节码后:

private static testbytecode()v

l0

linenumber 22 l0

ldc “javastack”

astore 0

l1

linenumber 23 l1

ldc “javastack”

astore 1

l2

linenumber 24 l2

return

l3

localvariable javastack1 ljava/lang/string; l1 l3 0

localvariable javastack2 lj经典三句半ava/lang/string; l2 l3 1

maxstack = 1

maxlocals = 2

可以看出 javastack1 和 javastack2 都是虚拟机所认识的的本地变量类型: java.lang.string,虚拟机并不认识 var, 所以 var 并不神奇。

ok,本次关于 j蓝屏000007eava 10 中新添功能,即局部变量类型推断实战文章就到这里了,后续带来更多的 java 新版的特性功能实战方面的文章。

本文发布于:2023-04-05 03:05:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/7efd56000b0bad232890ab11ddf14c45.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java查看变量类型的方法(将日期从string转成date).doc

本文 PDF 下载地址:java查看变量类型的方法(将日期从string转成date).pdf

标签:类型   变量   局部   推断
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图