动手动脑(三)

int value=100;

MyClass obj = new MyClass();

定义的两个变量不一样,前者是一个原始数据变量,而后者是引用一个对象的变量,称为“引用类型的变量”简称“对象变量”。

对象变量也可以使用==”判断两变量值是否相等吗?

   对象变量不适用==”来判断两变量的只相等,因为当“==”施加于引用类型变量时,是比较这两个变量是否引用同一个变量,即“==”实际上相当于比较这两个引用类型变量中保存的对象地址相同。

以下代码为何无法通过编译?哪儿出错了?

 

原因:类中提供了一个自定义的构造方法,所以系统不再提供默认的构造方法,由于没有具替代的参数类型也无法调用定义的构造函数,所以无法通过编译。

 

输出结果:100   300

Java字段初始化的规律:类的初始化块不接受任何的参数,而且只要创建一个类对象他们就会被执行。执行类成员定义时指定的默认值或类的初始化块,在执行过程中是按照其生命历程的顺序执行的,即先执行哪一个就要看他的先后顺序。

静态初始化块的初始化顺序:

  1. 首先调用类中的静态初始化字段
  2. 调用类中的普通的无参数的构造函数
  3. 调用类中带有参数的构造函数
  4. 执行其自身的执行函数

静态初始化块只执行一次,创建子类型的对象时,也会导致父类型的静态初始化块的执行。

注意:在调用过程中都是先调用父类中的构造函数再调用子类的。

如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

答:在这个静态方法中创建类对象,通过对象来调用类中的实例成员。

 1 package text;
 2 
 3 public class Employee {
 4             String name;
 5         long salary;
 6         short employee_id;
 7         static int total_employees;
 8         static void clear(){
 9             total_employees=0;
10             Employee em = new Employee();
11             em.salary = 500;
12             em.name = "wjakfld";
13             em.employee_id = 12;
14         }
15          
16         public static void main(String[] args) {
17             
18         }
19 
20 
21 
22 }

两对整数明明完全一样,为何一个输出true,一个输出false

Intteger是一个类,是int的扩展,定义了很多的转换方法,当Java在编译Integer a = 100时被翻译成-> Integer a = Integer.valueOf(100);比较时仍然是对象的比较,而jdk为了提高效率初始化了-128~127之间的整数对象,所以在赋值的这个范围内还是同一个对象是相等的。

使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象”

 1 package text;
 2 
 3 public class TongJi {
 4     private static int count;
 5     
 6      public TongJi() {
 7         // TODO 自动生成的构造函数存根
 8          count++;
 9     }
10      
11      public static int getCount()
12      {
13          return count;
14      }
15     
16         
17     
18 
19     public static void main(String[] args) {
20         // TODO 自动生成的方法存根
21         TongJi t1 = new TongJi();
22         TongJi t2 = new TongJi();
23         TongJi t3 = new TongJi();
24         System.out.println("你创建了" + getCount() + "个对象");
25         
26         
27     }
28 
29 }

猜你喜欢

转载自www.cnblogs.com/1gaoyu/p/9822702.html