JAVA面向对象之——关键字;入门级进来就能看懂

this

this指的是当前对象:

Person p = new Person(); this指得就是new Person()或p。

使用this关键字可以完成以下的操作:

· 调用类中的属性。

· 调用类中的方法或构造方法。

· 表示当前对象。

通俗的说:只要在类外外面能通过上面对象名p调用的,在类里面都能通过this调用。

class Person{
    
    
  private String name;
  private int age;
  
    Person(){
    
    
      this("小明",18);
    }
    Person(String name,int age){
    
    
      this.name=name;
      this.age=age;
    }
}

代码第6行用this调用了构造方法Person(String name,int age)。

代码9,10行用this调用了属性。

值得注意的是:

在一个构造方法中调用另一个构造方法时,调用的代码必须编写在构造方法第一行。原因:构造方法的本质是对对象进行一些初始化,在初始化完成之前不能够进行其它操作(例如打印)。


static

static表示“静态”的意思,可以用来修饰成员变量和成员方法。

tatic的主要作用在于创建独立于具体对象的域变量或者方法。简单理解就是:

被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。并且不会因为对象的多次创建 而在内存中建立多份数据。

  1. 静态成员在类加载时加载并初始化。所以第一次通过类调用就需要对其初始化。另一方面static修饰的方法也可以直接通过类调用。

  2. 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )。

  3. 在访问时:静态不能访问非静态 , 非静态可以访问静态 !

class Person1{
    
    
    static void say(){
    
    
      System.out.println("疑是地上霜");
      say2();  //这一行bug.
    }

    void say2(){
    
    
      System.out.println("窗前明月光");
      say();
    }
}

静态成员的加载永远比创建对象要快。

第9行能通过是因为当say2()被对象调用了(方法只有被对象调用才能使用),静态方法say()已经提前加载了。

而第4行不能通过是因为如果直接通过类调用say()使用时,say2()还未被加载。

对象内存分析

static修饰的变量,随着类第一次被使用加载到方法区中。可以被所有对象共用。


import

就是调用有包的类;也就是导包操作;

import 包名.类名;


main

JVM找程序入口的时候,就找通过public static 修饰的 main方法。

程序之所以能允许起来,就是因为JVM调用了这个main方法。


四个权限修饰符

修饰符 子类 其它包
public
protected ×
default × ×
private × × ×

√ ×:表示在该情况下,该修饰符修饰的成员能否被访问。


final

使得内存的变量变成一个常量。

final int a = 10; a以后一直为10;

对于局部变量,只能赋值一次(可以先声明后赋值)

对于成员属性,必须声明时赋值。

final能修饰什么

修饰类:final修饰的类,不能被继承;

修饰方法:final修饰的方法,不能被子类重写;


常量命名规范

可以由多个单词组成,单词之间"_"隔开,所有字母大写。

Guess you like

Origin blog.csdn.net/m0_58702068/article/details/120502860