Java 面向对象(四)

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

🔭学习内容



掌握this关键字的作用,并可以使用this关键字完成对象的比较操作。

掌握static关键字,并可以阐述出static属性及static方法的特点。

掌握主方法的组成及运行时的参数传递。

掌握Java中的普通代码块、构造块、静态块3种代码块的使用方法


✈️目录


🔭1、this关键字

🎬作用:

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

(2)表示类中的属性

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

(4)this表示当前对象

🔭2、static关键字

🎬作用:

(1)使用static声明属性

(2)static声明方法

🎬应用:

🎬main方法:

🔭3、代码块

🎬三种代码块:

(1)普通代码块

(2)构造块

(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、构造方法


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

目录
相关文章
|
1月前
|
存储 Java 数据处理
Java基础—笔记—面向对象篇
该内容是关于面向对象编程的介绍,包括类(用于定义数据和处理方法)、对象(通过类创建,存储和处理数据)的创建和使用,`this`关键字(代表调用方法的对象,用于区分成员变量和局部变量),成员变量与局部变量的区别(定义位置、初始化值、内存区域、作用域和生命周期),构造器(无返回值、与类名相同的特殊方法,用于对象创建和初始化),以及封装的概念(数据隐藏和暴露控制)和实现步骤(私有化成员变量,提供公共的setter和getter,以及构造器)。
17 0
|
8天前
|
存储 安全 Java
Java面向对象最新超详细总结版!
Java面向对象最新超详细总结版!
26 7
Java面向对象最新超详细总结版!
|
5天前
|
Java
java面向对象——包+继承+多态(一)-2
java面向对象——包+继承+多态(一)
17 3
|
5天前
|
SQL Java 编译器
java面向对象——包+继承+多态(一)-1
java面向对象——包+继承+多态(一)
16 2
|
15天前
|
存储 Java 开发工具
【Java探索之旅】用面向对象的思维构建程序世界
【Java探索之旅】用面向对象的思维构建程序世界
11 0
|
15天前
|
Java
java使用面向对象实现图书管理系统
java使用面向对象实现图书管理系统
|
15天前
|
Java
Java语言---面向对象的三大特征之继承
Java语言---面向对象的三大特征之继承
|
15天前
|
机器学习/深度学习 Java Python
Java面向对象知识体系---基础版
Java面向对象知识体系---基础版
|
20天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
20天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
16 0