今天我们在Java课上学习了类与对象的知识点
一:验证ClassAndObjectTest.java
1)代码:
public class ClassAndObjectTest { public static void main(String[] args) { //创建类的实例,定义一个对象变量引用这一实例 MyClass obj = new MyClass(); //通过对象变量调用类的公有方法 obj.myMethod("Hello"); //给属性赋值 obj.setValue(100); //输出属性的当前值 System.out.println(obj.getValue()); //直接访问对象公有字段 obj.Information = "Information"; //输出对象公有字段的当前值 System.out.println(obj.Information); } } /** * 自定义Java类的示例 */ class MyClass { // 公有字段 public String Information = ""; // 自定义公有Java实例方法 public void myMethod(String argu) { System.out.println(argu); }// 定义属性:私有字段+get方法+set方法 private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } }
2)结果:
3)结果分析:首先需要定义一个对象变量引用实例,赋值给对象变量,再进行调用。
二.一:解决问题系列
int数据类型,可以直接使用“==”判断两变量值是否相等,那么对象变量也可以使用“==”判断两变量值是否相等吗?
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Foo obj1 = new Foo(); Foo obj2 = new Foo(); System.out.println(obj1==obj2); } } class Foo{ int value=100; }
结论:进行字符串的比较时不能用==,要用equals。
当“==”施加于“原始数据类型”变量时,是比较变量所内容数据是否相等
equals用于“引用变量”时的对比。比较两者地址。
二.二
以下代码为何无法通过编译?哪儿出错了?
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Foo obj1 = new Foo(); } } class Foo{ int value; public Foo(int initValue){ value=initValue; } }
结论:将“Foo obj1 = new Foo();”改为“Foo obj1 = new Foo(4);”。
用户自定义构造方法,引用时内部应有实参。
1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”
import java.util.Scanner;
class A{
public static int id=0;
public A()
{
id++;
System.out.println("创建第"+id+"个对象");
}
}
public class Javapingshi{
public static void main(String[] args){
while(1>0){
A obj=new A();
System.out.println("请选择1.继续创建对象2.结束");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
if(i==2){
break;
}
}
}
}
结果截图