博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String s String s=null和String s="a"区别
阅读量:4677 次
发布时间:2019-06-09

本文共 977 字,大约阅读时间需要 3 分钟。

原文链接:https://www.cnblogs.com/ipetergo/p/6826909.html String s;和String s=null;和String s="a";有什么区别?   针对这三种情况,使用out.println(s);的时候,第一个会出现异常,第二个会输出null.第三个则会输出a.  
这是为什么呢?这三句声明语句,各自作了什么呢?   答:   第一个只是定义了一个String类型变量s,并没有给它赋初值,在Java中,默认在使用一个变量的时候必须赋予它初值(降低风险)。   第二个和第三个都定义了String类型变量s,并赋予它初值,只不过第二个赋予的值为null(空)罢了 主要要理解的是String s; s为一个引用~~它不是对象     第一个是没有初始化的引用;     第二个为空引用;   第三个是在字符串池里写入一个字符'a',然后用s指向它。   另外,     String s="a"和String s=new String("a");是有本质上的区别的     前者是在字符串池里写入一个字符'a',然后用s指向它;   后者是在堆上创建一个内容为"a"的字符串对象。   String   str="aaa";          //于栈上分配内存   String   str=new   String("aaa"); //于堆上分配内存   String s; 系统会自动赋值null   String s;只是给s分配一个内存空间     String s=null;是分配的空间中存储的值为空值     String s="a";这句就不用我多说了分配的空间的值为字符a 延伸补充:
在成员变量的定义中,String s;等同于String s=null;  而在本地变量(方法变量)的定义中,String s;不等同于String s=null;,这时要使用s必须显式地赋值。 这些虽然是小知识点,但在实际应用中很重要,也很容易被一些人忽视,特此提出。  还有一点要说明的是: 只要是在方法在中定义变量都要显示赋初值,main()方法也不例外,而在方法之外编译器回自动赋初值。

转载于:https://www.cnblogs.com/fswhq/p/9860728.html

你可能感兴趣的文章
Django DEBUG=False
查看>>
把实体 转为json 数据格式---jackson 的详细用法.
查看>>
数据库管理软件的由来
查看>>
Servlet容器如何处理请求资源路径
查看>>
Linux find 用法示例
查看>>
强悍高效率 92% Nixie Tube 升压电路 12V升150-250V(转)
查看>>
Happy Programming Contest
查看>>
四、K8S
查看>>
网页宽高clientWidth clientHeight获得数值不对的问题
查看>>
AX向在线用户发送消息
查看>>
程序员八荣八耻
查看>>
OCR引擎-Tesseract
查看>>
datagrid单元格格式化样式化
查看>>
转:在Nginx上配置多个站点
查看>>
javascript 技巧总结积累1-108条(正在积累中)
查看>>
为什么尽量避免使用 CSS 表达式
查看>>
[转]这才是真正的3D显示!Leap Motion推出次毫米级3D手动控制技术,让人手和影像融为一体...
查看>>
poj 3621 Sightseeing Cows 01分数规划
查看>>
bzoj 2821:作诗 分块
查看>>
如何让eclipse恢复默认布局
查看>>