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是一样的阿!!
...全文
168 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当然是一样的值,但却是两个不同的对象!

内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

62,622

社区成员

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

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