ITPub博客

首页 > 应用开发 > Java > java学习

java学习

原创 Java 作者:20170405 时间:2020-07-21 17:05:32 0 删除 编辑

  this指的是当前实例对象,可以在构造方法内部区分同名的成员变量和局部变量

  可以用于调用构造方法,减少代码冗余。(在构造方法中通过this调用其他构造方法

  的语句必须是第一句),this也可以调用成员属性和成员方法

  class Person{

  String name;

  int age;

  String address;

  public Person(String name,int age){

  this.name=name; //左值this.name表示Person对象的那么属性,

  this.age=age; //右值name表示构造函数的形参那么name。

  }

  public Person(String name,int age,String address){

  this(name,age); //表示调用有name和age两个参数的构造函数

  this.address=address;

  }

  void hello(){

  System.out.println("hello....");

  }

  void introduce(){

  this.hello //调用Person对象的hello方法,这里可以省略this.

  } //因为没有同名方法,属性同理

  }

  static关键字

  表示静态的,可以修饰变量和方法,可以通过类名直接调用

  修饰成员变量时,称为静态变量,或者类变量;

  修饰方法时,称为静态方法,或者类方法。

  *静态变量不会存储在实例对象中,举个例子

  class Calculator(){

  static int num1=1;

  int num2=2;

  void a1(){

  num1=8;

  num2=8;

  }

  }

  public static void main(String[] args){

  Calculator c1=new Calculator();

  Calculator c2=new Calculator();

  c1.a1;

  System.out.println("num1"+c2.num1); //值为8

  System.out.println("num2"+c2.num2); //值为2

  }

  一个类中的static成员在该类被使用的时候就被分配空间并赋值,初始值为null或者0。

  1

  class A(){

  static A ins =new A(1);

  static int num1=5;

  int num2;

  A(int num3){

  num2=num1-num3;

  }

  }

  public static void main(String[] args){

  System.out.println(A.ins.num2); //值为-1

  System.out.println(new A(1).num2); //值为4

  }

  分析,第一个打印直接使用A类的ins静态变量,在使用A类的时候给static的成员分配空间

  (数值型默认为0,其他默认为null),ins需要使用A的构造方法,把num3的值传进去,执行语句

  num2=num1-num3=0-1=-1  

  第二个打印直接new了一个A对象,会先给这个对象分配空间并赋值,就是正常得出4的结论

  //静态方法使用注意事项

  在实例方法中调用静态方法(属性)时可编译的

  而在静态方法中调用实例方法(属性)时是不行的,因为不能保证静态方法调用时存在实例方法

  谨慎静态使用static,其生命周期过长

  在静态方法中不能使用this关键字

  举个例子

  class A(){

  int age;

  void mA(){

  age=20;

  }

  static void mb(){

  age=10; //age此时并未被加载,报错

  }

  }


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69979119/viewspace-2705986/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-14

  • 博文量
    63
  • 访问量
    30147