jaya语法易混淆点

  • 一个java文件中可以定义N多个class,但是只能有一个public class并且public class的类名跟文件名保持一致;

  • 一个类里面必须有一个主函数;

  • 对象的创建和使用:

    • 使用new关键字来创建对象

      ClassName objectName = new ClassName();【记住这个语法】

  • 构造方法:

/*
 * 构造方法:
 *   创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化操作
 *   构造方法的语法:
 *       方法名称:构造方法的方法名称必须跟类的名称保持一致
 *       访问修饰符:后面讲
 *       形参:可以用户自定义添加,跟方法的普通参数一样
 *       方法体:完成对象的初始化功能
 *       返回值:没有返回值
 *   注意:
 *       1、创建完类之后,如果没有手动调用构造方法,会有一个默认的无参的构造方法供调用
 *       2、当用户自定义了构造方法之后,默认的无参构造方法就不能够使用了,必须要手动定义无参构造方法
 *       3、同一个类中可以包含多个同名的构造方法
 *
 *   重载:在一个类中可以包含多个重名的方法,但是注意方法的参数列表不能相同
 *       三个方面的不同:
 *           参数的个数不同
 *           参数的类型不同
 *           参数的顺序不同
 *       注意:
 *           一般构造方法都会进行重载(一个类中可能包含多个属性值,当只需要给部分属性初始化的时候需要调用不同的构造方法)
 * */
public class Teacher {

    String name;
    int age;

    public Teacher(){
        System.out.println("hello");
    }

    public Teacher(String xname){
        System.out.println("one argument");
        name = xname;
    }
    //构造方法
    public Teacher(String xname,int xage){
        System.out.println("two argument");
        System.out.println("new......");
        name = xname;
        age =xage;
    }

    public void teach(String a,int b){

    }

    public void teach(int b,String a ){
        System.out.println("上课");
    }

    public static void main(String[] args) {
        Teacher teach = new Teacher();
        teach.name="连";
        teach.age=18;
        System.out.println(teach.name);
        System.out.println(teach.age);
        Teacher teacher2 = new Teacher("lisi",29);
        System.out.println(teacher2.name);
        System.out.println(teacher2.age);
        Teacher t3 = new Teacher("wangwu");
        System.out.println(t3.name);
    }
}
  • this:表示当前对象的指针,指向当前对象,表示当前对象的引用,用处:

    • 当构造方法中的参数名称跟类的成员变量名称一样的时候,可以使用this代表当前对象
    • 注意:有了this之后,可以将构造方法的参数跟成员变量保持一致
    • 当构造方法中需要调用其他的构造方法时,可以使用this(name)调用其他构造方法,相当于this.constructor(name)但是必须位于方法体的第一行
    • 当多个普通方法之间需要调用的时候,可以使用this来进行调用,指的是当前对象的其他方法(也可以不加this);
    • 当方法中的参数名称跟成员变量保持一致的时候,使用 this.变量名称 表示的是对象的值,而使用变量名称表示形参列表中的值;
  • static关键字:

    • 修饰成员变量的时候,表示静态成员变量或者叫类变量
      • 普通变量在使用的时候,必须要通过对象名进行调用
      • 类变量或者静态变量可以使用对象名调用也可以使用类名进行调用
    • 修饰方法的时候,表示静态方法或者叫类方法
      • 普通方法在使用的时候,必须要通过对象名进行调用
      • 类方法或者静态方法可以使用类名,也可以使用对象名
    • 注意:
      • 1、静态变量,在创建对象之前被初始化,或者说在类被载入之前进行初始化
      • 2、静态变量被所有的对象共享,属于公共变量,对象和类都可以直接调用【但是推荐使用类来调用】
      • 3、成员变量放在堆中,而静态变量放在方法去中静态区
      • 4、静态变量不能定义在静态方法中,还有普通方法中
      • 5、静态方法可以在非静态方法(普通方法)中进行调用
      • 6、静态方法中不能直接调用非静态方法【如果想调用,则可以new ClassName().method();】
      • 7、静态方法中不允许出现this调用【静态方法在对象创建之前就已经有了,调用this的时候没有对象可调用】
      • 8、一般工具类中的方法定义为static
  • 实例:

    public class TestStatic {
    int a;
    static int width;
    static void gg(){
    System.out.println("gg");
    }
    void tt(){
    System.out.println("tt");
    }
    public static void main(String[] args){
    TestStatic hi = new TestStatic();
    TestStatic.width = 2;
    TestStatic.gg(); //gg();
    hi.gg(); //通过引用也可以访问static变量或static方法。不过,一般还是使用
    类名.static成员名来访问。
    gg();
    } }
    
  • 代码块:

    /*
    * 代码块:  使用{}括起来的一段代码叫做代码块
    * 分类:
    *   普通代码块:定义在方法中,使用{}括起来的代码叫做普通代码块
    *   构造代码块:定义在类中的使用{}括起来的代码叫做构造代码块
    *           注意:每次代码运行的时候回将构造代码块中的代码添加到构造方法的前面
    *                   构造代码块中的代码会添加到每一个构造方法中,当使用this(参数)的时候不会添加
    *   静态代码块:使用static{}括起来的代码叫做静态代码块,在程序载入的时候优先执行
    *           数据库连接等其他提前需要准备好的代码会放在static代码块
    *   同步代码块:
    *           在多线程的时候回使用,用来给共享空间进行加锁操作(后面讲)
    *   执行顺序:静态代码块--》构造代码块(创建对象的时候才会用到)--》普通代码块
    * */
    
  • 访问控制符:

image

posted @ 2021-07-30 09:40  107w  阅读(64)  评论(0)    收藏  举报