黑马程序员——java关键字的使用

------- android培训、java培训、期待与您交流! ----------

private :私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。将age私有化以后,类以外即使建立了对象也不能直接访问。但是人应该有年龄,就需要在Person类中提供对应访问age的方式。(注意:私有仅仅是封装的一种表现形式。)之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作。提高代码健壮性。

class Person

{

       private int age;//私有变量,不可以直接访问,只可以被自己的类内使用

       public void setAge(int a)

       {

              if(a>0 && a<130)

              {

                     age = a;

                     speak();

              }

              else

                     System.out.println("feifa age");

       }

 

       public int getAge()

       {

              return age;

       }

       private void speak()

       {

              System.out.println("age="+age);

       }

}

 

class PersonDemo

{

       public static void  main(String[] args)

       {

              Person p = new Person();

 

              //p.age = -20;

              p.setAge(-40);

              //p.speak();

       }

}

关键字this

this:就代表本类的对象,到底代表哪一个呢?

       this代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。

              但凡本类功能内部使用了了本类对象,都用this表示。

class Person

{

       private String name;

       private int age;

       Person(int age)

       {

              this.age = age;

       }

       Person(String name)

       {

              this.name = name;

       }

       Person(String name,int age)

       {

              this.name = name;

              this.age = age;

       }

 

       public void speak()

       {

              System.out.println("name="+this.name+"...age="+this.age);

              this.show();

       }

       public void show()

       {

              System.out.println(this.name);

       }

 

       /*

       需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。

       */

       public boolean compare(Person p)

       {

              return this.age==p.age;

       }

}

class PersonDemo3

{

       public static void main(String[] args)

       {

 

              Person p1 = new Person(20);

              Person p2 = new Person(25);

              boolean b = p1.compare(p2);

              System.out.println(b);

              //Person p = new Person("lisi");

              //Person p1 = new Person("zhangsan");

              //p.speak();

              //p1.speak();

              //p.speak();

       }

}

静态:static

用法:是一个修饰符,用于修饰成员(成员变量,成员函数).

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,

还可以直接被类名调用。类名.静态成员。

 

 

static特点:

1,随着类的加载而加载。也就说:静态会随着类的消失而消失。说明它的生命周期最长。

2,优先于的对象存在明确一点:静态是先存在。对象是后存在的。

3,被所有对象所共享

4,可以直接被类名所调用。

实例变量和类变量的区别:

1,存放位置。类变量随着类的加载而存在于方法区中。实例变量随着对象的建立而存在于堆内存中。

2,生命周期:类变量生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。

静态使用注意事项:

1,静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。

2,静态方法中不可以定义thissuper关键字。因为静态优先于对象存在。所以静态方法中不可以出现this

3,主函数是静态的。

静态有利有弊

利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。可以直接被类名调用。

弊端:生命周期过长。访问出现局限性。(静态虽好,只能访问静态。)

 

final关键字:

1final是一个修饰符,可以修饰类,方法,变量。

2final修饰的类不可以被继承。

3final修饰的方法不可以被覆盖。

4final修饰的变量是一个常量,只能赋值一次。

为什么要用final修饰变量。其实在程序如果一个数据是固定的,

那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。

而且这个变量名称的值不能变化,所以加上final固定。

写法规范:常量所有字母都大写,多个单词,中间用_连接。

New的使用情况、

Person p = new Person("zhangsan",20);

该句话都做了什么事情?

1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。

2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。

3,在堆内存中开辟空间,分配内存地址。

4,在堆内存中建立对象的特有属性。并进行默认初始化。

5,对属性进行显示初始化。

6,对对象进行构造代码块初始化。

7,对对象进行对应的构造函数初始化。

8,将内存地址付给栈内存中的p变量。

class Person

{

       private Person(){}

       private String name = "hah";

       private int age;

       private static  String country = "cn";

       Person(String name,int age)

       {

              this.name = name;

              this.age = age;

       }

      

       {

              System.out.println(name+".."+age);

       }

       public void setName(String name)

       {

              this.name = name;

       }

 

       public void speak()

       {

              System.out.println(this.name+"..."+this.age);

       }

 

       public static void  showCountry()

       {

              System.out.println("country="+Person.country);

              Person.method();

       }

       public static void method()

       {

              System.out.println("method run");

       }

}

 

class  PersonDemo

{

       public static void main(String[] args)

       {

              Person p = new Person("zhangsan",20);

              p.setName("lisi");

              new Person();

       }

}

 

 

你可能感兴趣的:(黑马程序员——java关键字的使用)