a和b有什么区别??

yangq119 2003-07-17 03:13:16
a和b有什么区别??

import java.lang.* ;
public class test1{
public static void main(String args[]){
String a = new String( System.getProperty("java.version")) ;
String b = System.getProperty("java.version") ;
System.out.println(a) ;
System.out.println(b) ;
}
}
输出结果a和b是一样的阿!!
...全文
165 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdhy 2003-07-24
  • 打赏
  • 举报
回复
哈哈,java 是传值的,只是对于基本类型来说的.

对于,"类",全部都是传地址的!!!!!!!!!

不信你可以自己写一个程序来试试!!!!
yangq119 2003-07-20
  • 打赏
  • 举报
回复
那在定义和使用的时候有什么不一样呢,要注意什么呢!!!
java是值传递的,那地址对java来说有什么意义呢,我对垃圾回收不怎么熟悉啊,望大家
说说了,
abcdhy 2003-07-19
  • 打赏
  • 举报
回复
错了,不一样的

你看看, <Effective Java> 就知道的

主要是 String 是一个不变类,为了提高效率,正常创建的 相同的 String 都是同一个对象,但
String a = new String( System.getProperty("java.version")) ;
String b = System.getProperty("java.version") ;
这样就不是同一个对象了.
painAndhappy 2003-07-19
  • 打赏
  • 举报
回复
to:
htl(海豚) ( )
真的是这样吗?
也要看具体每个类里面是怎样实现的吧
htl 2003-07-19
  • 打赏
  • 举报
回复
"=="表示两个对象完全相同
".equals"仅仅表示值相同
yangq119 2003-07-18
  • 打赏
  • 举报
回复
小弟在这里先谢大家了,呵呵,看来要加点分啊,
我提的问题,a和b的用法是一样的了,这个大家确定了啊,说到地址,是不是象c++里分配动态
内存的那样呢,用new分配的在栈里,a和b的内存空间根本就不一样啊,!!!


那就顺便大家给点建议了,有什么好书推荐啊,我需要大量java code啊,大家知道哪里有吗?
handsomeghost 2003-07-18
  • 打赏
  • 举报
回复
if (a==b) System.out.print("a=b");
if (a.equals(b)) System.out.print("a.equals(b)");
可以看出他们的不同,同样的值但不同的内存地址。
同时java虚拟机的垃圾回收时也视其不同,当a或b被别的字串负值后,可能就被当作垃圾回收了,你可以通过这个方式发觉他们的不同。
随风来去 2003-07-18
  • 打赏
  • 举报
回复
好像对于String对象,由于其不可变性,虚拟机在生成这样的对象时,都是使用同一个地址
即a和b不但内容相同,而且地址也一样
zuoyangguang 2003-07-18
  • 打赏
  • 举报
回复
楼主真是幸运,这么多高手(我除外)为您排忧解难
CastleKtt 2003-07-17
  • 打赏
  • 举报
回复
仔细想了一下,a和b在使用上没有区别,a和b都是值和System.getProperty("java.version")相等的String实例,都不是真正内存中的属性。但是a生成时的效率比b低,因为在System.getProperty("java.version")时已经new了一个实例,再次new的时候又生成一遍实例。
CastleKtt 2003-07-17
  • 打赏
  • 举报
回复
a是一个新建String实例,他的值和System.getProperty("java.version")一样,但是不是System.getProperty("java.version").
b就是System.getProperty("java.version")
hayai 2003-07-17
  • 打赏
  • 举报
回复
这么说吧,你买了两支一模一样的圆珠笔,它们是不是相同呢?他们是不是就是一支笔呢?
所以,a.equals(b), 因为他们的确一模一样。
所以,a != b,因为他们本来就是两支笔。一支笔用完了,另一支笔还是满的。
当年古龙就是这样对我解释的。
yangtaylor 2003-07-17
  • 打赏
  • 举报
回复
虽然他们的值相同,但是给它们分配的内存地址不同。
这样就清楚了吧。你可以把它们的内存地址打印出来看一看。
zuoyangguang 2003-07-17
  • 打赏
  • 举报
回复
楼上的说的与楼主问的是俩回事
DDrddr 2003-07-17
  • 打赏
  • 举报
回复
请看 System 的 static String getProperty(String key) 方法,返回的是String
jspxnet 2003-07-17
  • 打赏
  • 举报
回复
你用下边的语句运行看看就明白了.

if (a==b) System.out.print("a=b");
if (a.equals(b)) System.out.print("a.equals(b)");
zuoyangguang 2003-07-17
  • 打赏
  • 举报
回复
有何不同,一样的
super_jack 2003-07-17
  • 打赏
  • 举报
回复
就象这样:
String a = new String("hello") ;
String b = "hello";
a,b当然是一样的值,但却是两个不同的对象!

内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧