Java面向对象(二)

本节主要是两个关键字的用法


前言

面向过程的笔记中多为概念,需要多次回顾


一、this关键字

this关键字表示当前正在执行的对象

在一个类的方法或构造方法内部,使用this+成员变量名,区分成员变量和局部变量

student s1 = new Student(10,"张三");

Student s2 = new student(11,"李四");
public student(int number,string name){

this .number = number;//使用this关键字对成员变量进行访问
this .name = name;
this.gender = gender;

}

public void study() {
    System.out.println(this.name+"好好学习");
    this.exam();
}

public void exam(){
    System.out.println(name+"认真考试");
}

二、 static关键字

 static被称为静态,可以用来修饰类的属性,方法,代码块,内部类.

类--class--静态代码 只有一份的存在

静态--在内存中只有一份的存在

public class Chinese(){

String name;

Static String country="中国";

}

new Chinese();

name=null;

//country ="中国";

new Chinese();

name=null;

//country ="中国";

static关键字修饰的方法就是静态方法,属于类,可以通过类名直接进行访问

当方法中不需要使用非静态的成员变量的时候,我们可以将方法设计为静态方法,不需要创建对象,直接通过类名访问

System.out.println(name);在静态方法中不能使用非静态的成员,因为静态的成员随着类的加载而加载,类加载先于对象

非静态成员方法中,可以使用静态成员变量,因为静态的变量先加载

static修饰后的成员,随着类的加载而加载

先于对象而存在

static修饰的成员变量在内存中只有一份,适合讲所有实例都相同的属性设计为静态(中国人类 国籍都是中国)

静态的成员可以使用类名/对象名调用,一般建议使用类名访问

static修饰方法

静态方法只能访问静态的变量,不能访问非静态的变量

在方法中不使用非静态成员变量时,可以将方法设计为静态的

public static int max(int a, int b) {

return (a>=b)?a:b;

}

三、静态非静态

类中可以定义:

成员变量(非静态成员变量属于对象,静态的成员变量属于类,和类一样只有一份)

成员方法(非静态的成员方法,属于对象,可以使用非静态的成员变量和静态成员变量,

静态的成员方法,只能使用静态的成员变量)

构造方法 在创建对象后,为对象成员变量进行初始化,有无参,也可以有有参的

四、代码块

定义在类中,类似于一个没有名字的方法;

分为实例代码块

静态代码块

因为代码块,没有名字,只能在,满足条件时,自动由系统调用

实例代码块:在创建对象时,被自动调用执行

静态代码块:在类被加载时,被自动调用执行

类什么时候被加载:

通过类名访问类中静态成员时,类会被加载

在一个类中使用main方法,也会加载类

创建对象也会加载类

类只被加载一次

如果有多个实例代码块或多个静态代码块,他们会按照先后顺序执行

实例代码块 先于构造方法执行。

public class Demo {
    {
        System.out.println("Deom实例代码块1");
    }

    {
        System.out.println("Deom实例代码块2");
    }

    public Demo(){
        System.out.println("Demo构造方法");
    }

    static {
        System.out.println("Deom静态代码块1");
    }

    static {
        System.out.println("Deom静态代码块2");
    }

//即使调换位置也不影响最后的输出顺序:
    //如果有多个实例代码块,静态代码块,就按顺序输出
    //实例代码块先于构造方法执行

    public static void test() {
        System.out.println("静态test");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        /*
        类什么时候被加载:
        通过类名访问类中静态成员时,类会被加载
        在一个类中使用main方法,也会加载类
        创建对象也会加载类
         */
//        Demo.test();
        new Demo();
        new Demo();
    }
}

五、包

问题:项目越写类越多,难免可能会同名的类(java.util.Date,java.sql.Date)

不同类功能不同,需要分类管理

包:

为了解决一些类管理的问题,java引入包机制来解决

包称为类的命名空间(可以理解为是一个文件夹)

是类名的组成部分

类名(全类名)=包名(地址)+类名简称

作用:

一个类属于不同的包,就可以避免同名类问题

按照不同的功能管理类(web层,service逻辑处理,dao数据访问层)

控制访问权限

包名单词全部小写

包命名:

第一级,项目类型 com,demo2,gov,edu...

第二级,公司名称 oracle sun huawei ali ffyc

第三极,项目名称 oa erp cms

第四级,功能模块名称

在类中,使用其他包中的类时,需要使用import关键字导入类的地址(全类名)

java.lang包中的类不需要导入


总结

主要的两个关键字要学会如何使用

区分静态和非静态变量

两种代码块的区别

包的作用与命名方式
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘伊珂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值