今天和同事讨论了一个问题,虽然是由new String引起的,但是这个问题绝对不关new String的什么事情。我争论的问题是:
我们每天都在new Class,然后把引用指给某一个变量,那么这个变量到底能不能称为对象呢 ?
为此我查阅了wiki 上面有一段关于对象的解释:
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure.
(With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)
红色部分我的理解是: 在OOP的世界里,对象 指的是一个类的实例,那么这个实例应该指的是堆上面的那个部分,而不包括栈里面的变量,也就是标题里面的s1!
在我的思想里面,一切皆对象,当然s1属于对象,但是现在被wiki搞乱了,求谁来说服我s1的确是一个对象。
问题补充:housen1987 写道
“一切皆对象”说的是现实世界的任何物件,你都可以当成对象来看待,然后构造出你希望的对象逻辑,别如石头可以看成一个对象,那么质量、体积就是这个对象的属性。
s1是对象的一个实例,不是对象,如果是java中的对象概念的话,那么s1又可以实例化了,也就是说,会有:
s1 a = new s1();
这个用法你觉得对吗?
恩,看了一切其他的东西,发现s1的确不是一个对象,只是一个变量而已。
相关推荐
标题中的"C语言=S1=1=C=源代码.rar"表明这是一个关于C语言的源代码文件集合,其中可能包含了多个程序示例或者一个大型项目的不同模块。"S1=1=C="在描述中再次出现,虽然这个字符串没有明确的含义,但我们可以推测它...
创建一个对象用什么运算符?对象实体与对象引用有何不同? 对象的相等和引用相等的区别 类的构造方法的作用是什么? 如果一个类没有声明构造方法,该程序能正确执行吗? 构造方法有哪些特点?是否可被 override? 面向...
在第一个程序中,s1 先被放到了池中,所以在 s2 被创建的时候,程序找到了具有相同值的 s1,将 s2 引用 s1 所引用的对象。 在第二个程序中,我们使用了 new 操作符,它明白的告诉程序:"我要一个新的!不要旧的!...
在上述代码中,`s1`和`s2`引用的是常量池中的同一个`String`对象,因为它们的值相同。这种优化被称为字面量共享,可以节省内存。 然后,我们来看执行期的`String`对象创建,这通常涉及`new`关键字。当使用`new ...
北大青鸟 ACCP4.0S1=5.0S2转换资料完整版.rar
var s1=15; var s2=”string”; if (isNaN (s1)) document.writeln (s1); if (isNaN (s2)) document.writeln(s2); A) 15 B) string C)15 string D)不输出任何信息 15、分析javascript代码段,输出...
此外,还需要注意的是,在Java中,使用`new`关键字创建对象时,总是会创建一个新的对象,并将其赋给引用变量。例如,`String s = new String("hello");`将创建一个新的`String`对象,并将其赋给`s`。因此,在这种...
编译并运行这个程序,输出结果是 "s1 == s2",这意味着 s1 和 s2 引用的是同一个字符串对象。 现在,让我们修改代码,使用 new 运算符创建一个新的字符串对象: public class TestString { public static void ...
编译并运行程序,输出结果是 "s1 == s2",这说明 s1 和 s2 引用同一个 String 对象 "Monday"。 让我们继续修改程序: public class TestString { public static void main(String[] args) { String s1 = "Monday...
已知字符串 s1="python" ,s2="Python",则表达式中 s1>s2 的值为( )A .“python ” B .“Python ” C .True D .False1.C【详解】本题主要考查 Python 字符串。比较字符串的大小,是将两个字符串的字符一一比较...
在这个例子中,s1 和 s2 都是字符串 "Monday",但是 s1 引用的是字符串缓冲池中的对象,而 s2 引用的是一个新的字符串对象。 intern() 方法 Java 中的 intern() 方法用于将字符串对象添加到字符串缓冲池中。intern...
一. Java基础部分 1、一个".java"源文件中是否可以包括多个类(不是内部类)?...10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11、"=="和equals方法究竟有什么区别?
String s1="abc"; String s2=new String("abc"); System.out.println(s==s1);//false System.out.println(s==s2);//false System.out.println(s1==s2);//false System.out.println(s==s.intern());//false ...
例如,如果我们有两个字符串s1="hello world"和s2="lo",那么使用这个函数后,字符串s1将变为"he wrd"。 在实际应用中,这个函数可以用于各种字符串处理任务,例如,删除字符串中的特殊字符、去除字符串中的重复字符...
String s1=new String(); Object op=new String(); Object o=new String(); double d, dFore, dBack; int i=9; public static void main(String[] args) { // TODO Auto-generated method stub
` 此时,`s1 == s2`的结果是`false`,尽管两个字符串的内容相同,但由于`s2`通过`new`关键字创建了一个新的字符串对象,因此`s1`和`s2`指向了不同的内存地址。 #### 3. equals() 方法 `equals()`方法最初定义在`...
因此,`s1 == s3`的结果为true,说明s1和s3指向的是同一个字符串对象。 现在,让我们看一个更复杂的例子: ```java String s1 = "Hello"; String s2 = new String("Hello"); String s3 = new String("Hello")....
s1=new JPanel(); s2=new JPanel(); p1=new JPanel(); p2=new JPanel(); p3=new JPanel(); p4=new JPanel(); id=new JLabel("学号"); name=new JLabel("姓名"); end=new JLabel("考试剩余...
使用new关键字创建的字符串会在堆内存中创建一个新的对象,即使常量池中已有相同的字符串,也会生成新的实例。 3. **StringBuilder/StringBuffer**:`StringBuilder sb = new StringBuilder().append("Hello")....