Java 面向对象(四)

🔭学习内容

  • 掌握this关键字的作用,并可以使用this关键字完成对象的比较操作。
  • 掌握static关键字,并可以阐述出static属性及static方法的特点。
  • 掌握主方法的组成及运行时的参数传递。
  • 掌握Java中的普通代码块、构造块、静态块3种代码块的使用方法

🔭1、this关键字

🎬作用:

(1)使用this强调本类中的方法

this.getName();

(2)表示类中的属性

this.name=name;// 明确表示为类中name属性赋值
this.age=age;

(3)可以使用this调用本类的构造方法

this();//调用类中的无参构造方法

使用this调用构造方法必须也只能放在构造方法的第1行this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其他构造方法。

(4)this表示当前对象

在一个类之中肯定会产生诺干个对象,那么程序类在分辨的时候不会记住具体有多少个对象产生了,它唯一可能知道的当前操作本类的对象是哪一个。

❄️范例:

class Person{
  public String A() {
	  System.out.println("Person类-->"+this);
	  return null;
	}
}
public class Demo {
  public static void main(String args[]) {
    Person p1=new Person();
    System.out.println("Main方法-->"+p1);
    p1.A();//由p1这个对象调用了A()方法(this=p1)
    System.out.println(" ");
    Person p2=new Person();
    p2.A();
  }
}	

❄️运行结果:

Main方法–>Person@1b6d3586
Person类–>Person@1b6d3586

Person类–>Person@4554617c

哪个对象调用了本类中的方法,那么这个this就表示当前执行的对象。

🔭2、static关键字

如果一个类中的方法想由类调用,则可以声明为static 方法

🎬作用:

(1)使用static声明属性

如果在程序中使用static声明属性,则此属性称为全局属性(有些也称为静态属性),访问形式是:类名.静态成员名。

static String str=“Hello”;

static关键不能修饰局部变量,包括实例方法和静态方法

🔎注意:Java中常用的内存区域

  • (1)栈内存空间:保存所有的对象称(更准确地说是保存了引用的堆内存空间的地址)。
  • (2)堆内存空间:保存每个对象的具体属性内容。
  • (3)全局数据区:保存static类型的属性。
  • (4)全局代码区:保存所有的方法定义.

(2)static声明方法

用它声明的方法被称为静态方法,有时也被称为“类方法”,访问形式是:类名.方法名调用

public static String getCountry(){
return country;
}

🔎说明:非static声明的方法可以去调用static声明的属性或方法。但是static声明的方法是不能调用非static类型声明的属性或方法的。

static关键字不能修饰普通类,但可以用static关键字修饰内部类使其变成静态内部类static关键字本身的含义就是共享,而Java类加载到JVM内存的方法区,也是线程共享的,所以没必要用static关键字修饰普通类

🎬应用:

❄️范例:统计一个类产生了多少个实例化对象。

❄️代码如下:

class Demo1{
    private static int count=0;//  所有对象共享此属性
    public Demo1(){
        count++;
        System.out.println("产生了"+count+"个对象1");
    }
}
public class Test {
    public static void main(String[] args){
        new Demo1();
        new Demo1();
        new Demo1();
    }
}

❄️运行结果:

产生了1个对象!
产生了2个对象!
产生了3个对象!

只要一有实例化对象产生,则一定会调用其中的构造方法,所以在构造方法中将static属性进行自增,这样就能够计算出一个类中到底有多少个实例化对象。

🎬main方法:

❄️主方法每个参数的含义:

  • public:表示此方法可以被外部调用。
  • static:表示此方法可以由类名称直接调用。
  • void:主方法是程序的起点,所以不需要任何的返回值。
  • main:系统规定好默认调用的方法名称,执行时默认找到main方法名称。
  • String args[]:表示的是运行时的参数。参数传递的形式为"Java类名称 参数1 参数2 参数3 …"

❄️范例:验证参数传递,输入的必须是3个参数,否则程序退出。

❄️代码如下:

public class Demo {
    public static void main(String[] args){
        if(args.length!=3){
            System.out.println("参数不足3个,程序退出!");
            System.exit(1);
        }
        for (int i=0;i<args.length;i++){
            System.out.println("第"+(i+1)+"个参数:"+args[i]);
        }
    }
}

❄️程序执行命令:

java Demo one two three

❄️程序运行结果:

第1个参数:one
第2个参数:two
第3个参数:three

🔭3、代码块

所谓的代码块是指使用“ { } "括起来的一段代码,根据位置不同,代码块可以分为普通代码块、构造块、静态代码块、同步代码块4种,本次我们将学习前三种,同步代码块将在后边学习。

🎬三种代码块:

(1)普通代码块

就是指直接在方法或是语句中定义的代码块,如下面代码。

public class Demo {
   public static void main(String[] args){
        int x=30;
       System.out.println(x);
    }
}

(2)构造块

构造代码块是直接写在类中的代码块。

class Demo{
    {
    System.out.println(“构造块”);
    }
   public Demo(){
      System.out.println(“构造方法”);
   }
public class Test {
   public static void main(String[] args){
        new=Demo();
    }
}

❄️运行结果:

构造块
构造方法

构造块优先于构造方法执行,而且每次实例化对象时都会执行构造块中的代码,会执行多次。

(3)静态代码块

静态代码块是使用static关键字声明的代码块。

class Demo{
    {
    System.out.println(“1、构造块”);
    }
   static{
      System.out.println(“0、静态代码块”);
   }
   public Demo(){
      System.out.println(“2、构造方法”);
   }
public class Test {
   static{
      System.out.println(“在主方法所在类中的静态代码块”);
   }
   public static void main(String[] args){
        new=Demo();
        new=Demo();
        new=Demo();
    }
}

❄️运行结果:

在主方法所在类中的静态代码块
o、静态代码块
1、构造块
2、构造方法
1、构造块
2、构造方法
1、构造块
2、构造方法

可以看出,静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亮点菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值