当前位置:首页 > 生活百科

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

栏目:生活百科日期:2025-01-21浏览: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 javastack = 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

*/

public 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();

DefaultServiceUnavailableRetryStrategy strategy1 = new

DefaultServiceUnavailableRetryStrategy();

var list2 = new CopyOnWriteArrayList&<&>();

var cme2 = new ConcurrentModificationException();

var strategy2 = new DefaultServiceUnavailableRetryStrategy();

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

缺点:掩盖类型

var token = new JsonParserDelegate(parser).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 Ljava/lang/String; L2 L3 1

MAXSTACK = 1

MAXLOCALS = 2

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

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

“java查看变量类型的方法(将日期从string转成date)” 的相关文章

2900驱动安装(canonlbp2900打印机使用说明)

12月18日消息,型号为M1901F9T的小米新机通过工信部入网许可,详细规格正式揭晓。根据工信部给出的数据,这款小米新机采用了5.84英寸显示屏,分辨率为22...

2023年iphone哪个手机值得买(最值入手的4款手机)

尽管苹果每年只有一场发布会,但是因为iOS系统的强大,使得市面上在售的iPhone机型还真不少,不少人也开始陷入纠结状态,不知道该怎么选?2021年买苹果手机不...

什么是博客怎样开通(个人博客建立搭建)

首先写博客是一个需要长期坚持的事情,见过很多人写博客,能坚持下来的寥寥无几,当然坚持下来的,换来的回报和收益也是很丰厚的。你所知道的很多大佬,之所以能成长为大佬...

哪些公司有能力用双拼域名,双拼域名成交价排行

域名作为企业的脸面,每个成功的企业,都离不开一个好域名的支撑。科技在进步、时局在变化,越来越多的企业开始追求符合品牌未来发展,简洁好记的新域名。据盛天网络官网在...

上古卷轴随从排行(讲解上古卷轴5前期装备)

上古卷轴5是美式RPG游戏不可逾越的巅峰之作,自2011年发布到现在已经走过了7个年头了。这七年里游戏里大大小小的各个游戏角色也陪伴着忠实玩家,带来了无数欢乐。...

三星翻盖最新款手机(三星翻盖手机图价)

GalaxyZFlip35G三星GalaxyZFlip系列,尽管同属是折叠屏系列,但与同门的GalaxyZFold系列又有所不同:它不追求极致大屏的体验,而是走...

原单可以拿去专柜验货吗真假(免费教你辨别真假)

1:六百块的一件秋款卫衣和专柜几万有什么区别!很多人觉得正品和高仿看起来都一样,为什么正品要贵几十倍。今天来和大家讲讲:我买过一二十个专柜正品,也买过不少原厂原...

千元ipad性价比高的是哪款(ipad性价比排行)

今年4月份的时候,苹果推出了全新的iPhoneSE(第二代),作为一款iPhone入门级机型,SE2不仅价格亲民,性能也不输iPhone11Pro系列,极具性价...

大学生创新创业大赛优秀范例(附其创新创业大赛详细获奖

中国“互联网+”大学生创新创业大赛,以“‘互联网+’成就梦想,创新创业开辟未来”为主题。大赛首次举办于2014年,现已成为覆盖全国所有高校、面向全体高校学生、影...

如何推广店铺产品,提升网店人气流量的技巧

虽然平时不少卖家都会选择付费的方式去推广店铺和商品,但是也有一些商家可能没有足够的资金去做付费推广,因此也可以选择一些免费的推广方式去进行宣传和推广,这样效果也...