java学习笔记(三)----成员权限,构造函数,this用法

成员权限
        
               本类    同包类    非同包子类    非同包非子类

public         y        y               y                        y

protected    y        y               y

default        y        y

private        y


在类中定义的变量,在创建对象时,会自动对类中的变量进行初使化,对如int类的会被初使化为0。
在方法中定义的变量,不会被初使化。

peason p1=new peason p1();
peason p2=p1;
p1=null;
此时p1为空,变为垃圾,peason对象还被p2所引用.

==和equals的区别:==用于比较两个变量的值是否相等(用于基本数据类型,equals用于比两个对象中的内容是否完全一样)
对于String s1=new String("abc"); 和 String s2=new String("abc");这两条语句,用if (s1==s2) , s1和s2是不等的,因为s1和s2是两个对象,所以不等; 但String s3=s1;
用if (s1==s3),则结果是相等的,因为s1和s3指向堆中的同一个对象,他们在栈中的值是一样的。
equals用于比较两个对象中的内容是否相等,if (s1.equals(s2)) ,则结果相等


数组间的考备函数 System.arraycopy()
数组间的排序 arrays.sort()
数组的比较也可用equals()

 

--------------------------------
***********匿名对象
可以 new 类名().方法名(); new peason().shout();直接创建一个对象,调用方法.(匿名对象)
匿名对象的两种情况:1.如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
2.将匿名对象作为实参传递给一个函数调用,比如程序中有一个getSomeOne函数,要接收一个Person类对象作为参数,函数定义如下;
public static void getSomeone(Person p)
{.......}
可以用下面的语句调用这个函数
getSomeOne(new Person());

 

----------------------------
*********构造函数
构造方法的特征:
1.它具有与类相同的名称
2.它不含返回值
3.它不能在方法中用return语句返回一个值
注意:在构造方法里不含返回值的概念是不同于void的,在定义构造方法时加了void,结果这个方法就不再被自动调用了

在构造函数中,通过this可以调用同一class中别的构造函数,如

   public class Flower{
   Flower (int petals){}
   Flower(String ss){}
   Flower(int petals, Sting ss){
   //petals++;调用另一个构造函数的语句必须在最起始的位置
   this(petals);
   //this(ss);会产生错误,因为在一个构造函数中只能调用一个构造函数
   }
   }
   **:1)在构造调用另一个构造函数,调用动作必须置于最起始的位置
   2)不能在构造函数以外的任何函数内调用构造函数

   3)在一个构造函数内只能调用一个构造函数

 

------------------------------------------

this用法1
class Person ()
{  private int age;
   private String name=new String();
   public Person(){}
   public Person( String x)    
   {  name=x;}
   public Person( String x,int y)
   {  name=x;  age=y;}
   public void fun1();
   {  System.out.println(name) }
   public void fun2();
   {  Person a2=new Person("a2");
      a2.fun1();
      this.fun1();  // a1.fun1  this代表对fun2进行调用的对象,fun2运行时是一定有一个对象存在的,这里的this是可以省略的,直接用fun1()
    }
   //this就相当于我所在的那个对象
   public static void main(String [] args)
   { Person a1=new Person("a1");
     a1.fun2();
   }    
}

this用法2
 class Person ()
{  private int age;
   private String name=new String();
   public Person(){}
   public Person( String x)     
   {  name=x;}
   public Person( String x,int y)
   {  name=x;  age=y;}
}
改为
  class Person ()
{  private int age;
   private String name=new String();
   public Person(){}
   public Person( String name)     
   {  this.name=name;}
   public Person( String name,int age)
   {  this.name=name;  this.age=age;}
}
    
this用法3:用构造方法去调用另一个构造方法
 class Person ()
{  private int age;
   private String name=new String();
   public Person(){}
   public Person( String name)     
   {  this.name=name;}
   public Person( String name,int age)
   {  this();   // 调用Person()构造孔方法
      this(name); //调用Person(String name)构造方法
      this.age=age;}
}
---------------------------------------
finalize 析构方法,垃圾回收器  用法 public void finalize(){...}
System.gc() 当在主函数中调用时,启动地垃圾回收finalize(){...}
每个类中都有一个垃圾回收器

Classs A{
...
...
public void finalize()
{ System.out.println("object is going!"); }

public static void main(String[] args)
{ new A();
  new A();
  new A();
  System.gc(); //启动垃圾回收
}
}
运行结果:object is going!
          object is going!
          object is going!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值