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

原创 2006年05月31日 12:27:00

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

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!

Java 代码块、成员变量初始化、构造函数初始化顺序

一、对于实例变量 实例变量初始化过程分析 初始实例变量的有: ① 实例变量定义时初始化、 ② 非静态代码块初始化、 ③ 构造函数实例变量初始化 package cn.daywan.test; ...
  • Only_Wan
  • Only_Wan
  • 2016年11月23日 16:51
  • 1407

C++ 为什么类的构造函数可以访问类的私有成员?解惑

看下面的例子程序:class Point{public:Point(int xx=0,int yy=0){x=xx;y=yy;}Point(Point &p){x=p.x; //这里访问了p对象的私...
  • wesleyluo
  • wesleyluo
  • 2010年05月20日 08:51
  • 2565

Java中构造函数的权限可以是private吗?为什么

可以 但是一般只有单例模式才把他设成为private 确保外部不能实例化,这样才能保证他是一个实例 给你个例子 public class ClassicSingleton { priva...
  • guguojin
  • guguojin
  • 2011年07月15日 09:23
  • 2797

继承类对基类成员的访问权限

继承是事物发展的过程,通过继承使得后代继承了父辈的优秀属性并进一步 拓展出新的属性和能力。c++中的继承就是现有的类中建立一个新的类, 现有的类成为基类,继承出来的新类称为派生类, 可以简单的理解为:...
  • qq_36409711
  • qq_36409711
  • 2017年03月23日 08:15
  • 234

构造函数的成员初始化列表有什么作用?

内容转载自百度知道!! 以及自己代码验证!! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { p...
  • zzuchengming
  • zzuchengming
  • 2016年06月27日 10:20
  • 1330

Java类 成员 访问权限 默认

Java中的访问权限控制符有四个.  作用域         当前类          同一package           子孙类                其他package  publ...
  • Shb_derek
  • Shb_derek
  • 2012年09月25日 15:44
  • 4528

Java类成员访问控制权限

类成员访问控制权限   在JAVA中有四种访问控制权限,分别为:private, default, protected, public   1、Private 如果一个成员方法或变量名前使用...
  • s634772208
  • s634772208
  • 2017年04月05日 22:21
  • 195

构造函数成员初始值列表(member initialization list)

为什么对象使用前需要初始化1.读取未初始化的值会导致不明确的行为   在某些平台上,仅仅是读取未初始化的值,就可能让你的程序终止运行。更可能的情况是读入一些“半随机”bits,污染了正在进行读取动作...
  • oNever_say_love
  • oNever_say_love
  • 2016年03月10日 14:11
  • 1175

JAVA中,static和三个权限关键字的总结

1、static       就是静态的意思。          (1)定义静态成员变量和方法。静态变量是独立于所在类的对象。可以直接通过类名访问。并且成员变量被整个类共享。         (2)定...
  • naturalmaster
  • naturalmaster
  • 2016年03月30日 17:32
  • 388

JS中通过构造函数添加成员方法和通过原型法添加成员方法的区别

① 通过原型法分配的函数是所有对象共享的. ② 通过原型法分配的属性是独立.(如果你不修改属性,他们是共享) ③ 建议:如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函数,这样比较...
  • xxmzumeng
  • xxmzumeng
  • 2014年08月07日 17:43
  • 2222
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java学习笔记(三)----成员权限,构造函数,this用法
举报原因:
原因补充:

(最多只允许输入30个字)