2016 - 2024

感恩一路有你

java中引用的概念 java synchronized锁对象,当对象引用是null的时候,锁的是什么?

浏览量:1522 时间:2021-04-02 16:07:40 作者:admin

java synchronized锁对象,当对象引用是null的时候,锁的是什么?

谢邀!

Java语言规范中明确指出如果锁住的对象是null,则会NullPointerException,规范内容如下:

The type of Expression must be a reference type, or a compile-time error occurs. A synchronized statement is executed by first evaluating the Expression. Then: If evaluation of the Expression completes abruptly for some reason, then the synchronized statement completes abruptly for the same reason. Otherwise, if the value of the Expression is null, a NullPointerException is thrown.

Java的哪个语法特性让你觉得写Java代码很享受?

本人在日常主要使用的语言为c#和Java,就语法而言,写c#更让人享受。主要原因为c#更多的语法糖,linq真的好用,其次visual studio号称宇宙第一IDE。但是个人还是更愿意用java。

从java8出来后,感觉java在追赶着c#的步伐, java和c#的语法上越来越像(本来也挺像的,哈哈)。以下做一个小小的比较。

c#

java

以上实现的功能差不多,在java8中加入lambda表达式后,个人感觉越来越像c#了。


抛开语法层面,现在来说一说为什么更愿意用java

1、首先当然是看收益啦,在国内基本上没有用c#的大厂,本来携程在用,后来也转为java了。

2、从技术层面来讲,因为java造轮子的多,有很多优秀的框架可以使用。在实际做项目中你遇到的问题,其他人肯定遇到过,能够很好的找到问题关键。

3、从生态上来讲,Java无疑是最好的选择之一,因为其开源的早,建立生态的时间早。

4、从性能来说,Sun/Oracle的HotSpot JVM内置的JIT编译器在运行时对字节码已经做出了非常大的优化努力,如果不是对性能十分敏感的应用,java足够用了。

谢谢。

Java中的注解到底是如何工作的?

注解是用来描述Java类的,可以自定义注解,然后通过反射获取注解执行指定的动作。

举个简单的例子

这样就可以通过反射来获取到一些元信息了,相当于配置和业务逻辑实现了分离。


当然这个自定义注解还需要依赖一些特定的注解,我们称为元注解。一共有5种:

@Retention:存活的周期

RetentionPolicy.SOURCE

保留在源码阶段

RetentionPolicy.CLASS

编译

RetentionPolicy,RUNTIME 运行阶段

@Documented 将注解中的元素包含到JavaDoc中

@Target 注解可以用到的地方 有类、方法、属性等

@Inherited 继承

@Repeatable 可重复

Java对象使用后设置为null会减少内存占用吗?

首先科普一下,Java对象是引用变型的,它会用两种内存区:堆内存、栈内存。Java对象是存储在堆内存中的,而对此对象的引用(理解为变量)存储在栈内存中。

比如:String str=new String("字符串") 这行代码用的是两块内存,new String("字符串") 存在堆内存中,str 变量存储在栈内存中。

当我们设置对象为 null 后(即:str=null),此时str变量与堆内存中的数据就断开联系了,GC算法会在必要时回收 str 及堆内存中的对象,但这个GC任何回收我们是无法干预的。

总结说就是:Java对象在使用后设置为null,在GC对此对象回收后,内存会相应减少,但不是说将一个对象引用设置为null后内存就立马释放了。GC会在合适的时间来回收垃圾数据。

java中引用的概念 什么叫引用 java返回对象的引用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。