String g1 = "面向对象程序设计"; 04 String g2 = "面向对象程序设计"; 05 String g3 = new String("面向对象程序设计"); 06 System.out.println(g1 == g2); 07 System.out.println(g1 == g3); 08 System.out.println(g1.equals(g3))
时间: 2024-01-21 11:03:26 浏览: 137
这段代码的输出结果是:
```
true
false
true
```
这是因为在 Java 中,字符串常量池是用来存储字符串对象的,而字符串对象创建的方式有两种:直接赋值和使用 new 关键字。在这个例子中,g1 和 g2 都是字符串常量池中的同一个对象,所以 g1 == g2 的结果是 true。而 g3 使用 new 关键字创建了一个新的字符串对象,所以 g1 == g3 的结果是 false。但是,由于字符串对象的 equals 方法比较的是字符串的内容,所以 g1.equals(g3) 的结果是 true。
相关问题
class Guy { public Guy(){ System.out.print("111,"); } } class Cowboy extends Guy { public Cowboy(){ System.out.print("222,"); } } class Wrangler extends Cowboy { public Wrangler(){ System.out.print("333,"); } } public class Greeting2 { public static void main(String[] args) { Guy g1 = new Guy(); Guy g2 = new Cowboy(); Guy g3 = new Wrangler(); } }结果
这段代码定义了三个类`Guy`、`Cowboy`和`Wrangler`,其中`Cowboy`继承自`Guy`,`Wrangler`继承自`Cowboy`。`Guy`类中定义了一个无参构造函数,并输出`111`,`Cowboy`类和`Wrangler`类中也分别定义了无参构造函数,并输出`222`和`333`。
在`main`方法中,分别创建了三个`Guy`类型的变量`g1`、`g2`和`g3`,分别初始化为`new Guy()`、`new Cowboy()`和`new Wrangler()`。由于`Cowboy`是`Guy`的子类,`Wrangler`是`Cowboy`的子类,因此创建子类对象时会先调用父类构造函数,再调用子类构造函数。
对于`g1`,直接创建了`Guy`对象,因此只会调用`Guy`类的构造函数,输出`111`。
对于`g2`,创建了`Cowboy`对象并赋值给`Guy`类型的变量,因此会先调用`Guy`类的构造函数,输出`111`,再调用`Cowboy`类的构造函数,输出`222`。
对于`g3`,创建了`Wrangler`对象并赋值给`Guy`类型的变量,因此会先调用`Guy`类的构造函数,输出`111`,再调用`Cowboy`类的构造函数,输出`222`,最后调用`Wrangler`类的构造函数,输出`333`。
因此,程序的输出结果为`111,111,222,111,222,333,`。
#include<iostream> using namespace std; class gg { public: gg g1() { cout<<"gg"<<endl; } gg g2(int name) { m_name=name; cout<<"gg"<<endl; } gg g3(int xx,string age) { m_xx=xx; m_age=age; cout<<"gg"<<endl; } protected: private: int m_name; int m_xx; string m_age; }; int main() { g1(14); g2(15); g3("asdda"); }
这段代码存在一些问题,编译时应该会报错。首先,类中的成员函数需要在类外进行定义,而这里没有定义。其次,在 main 函数中直接调用了类的成员函数,应该先创建类的对象再调用成员函数。最后,函数参数的类型和数量应该和函数定义时一致。以下是修改后的代码:
```
#include<iostream>
using namespace std;
class gg {
public:
void g1() {
cout<<"gg"<<endl;
}
void g2(int name) {
m_name=name;
cout<<"gg"<<endl;
}
void g3(int xx, string age) {
m_xx=xx;
m_age=age;
cout<<"gg"<<endl;
}
private:
int m_name;
int m_xx;
string m_age;
};
int main() {
gg obj;
obj.g1();
obj.g2(15);
obj.g3(20, "asdda");
return 0;
}
```
这段代码的功能是定义了一个类 `gg`,其中包含了三个成员函数 `g1()`、`g2()` 和 `g3()`,分别执行不同的操作。在 `main()` 函数中,首先创建了一个 `gg` 类的对象 `obj`,然后依次调用了三个成员函数,对类的成员变量进行了赋值和输出。
阅读全文