admin管理员组

文章数量:1608851

目录

static(静态)

静态的特点

应用示例

静态变量

静态方法

注意事项

内存图

重新认识main方法

什么是包

使用导包在什么时候

final关键字

常量

命名规范

细节(重点)

权限修饰符

代码块

局部代码块

构造代码块

静态代码块

个人号推广

博客主页

Web后端开发

Web前端开发

数据库开发

项目实战

算法与数据结构

计算机基础

回忆录

static(静态)

静态的特点

1.static可以修饰变量和方法;

2.被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享;

3.在类被加载的时候,就会去加载被static修饰的部分;

4.被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

应用示例

定义类:属性 行为

所有的student类所有的对象共享teacherName

直接调用

static是一个java的修饰符

静态变量

被static修饰的成员变量,叫做静态变量

特点:被该类所有的对象共享

调用方式:

1.类名调用(推荐)

2.对象名调用

静态变量是随着类加载而加载的,优于对象出现

方法执行完毕 出栈

通过对象s2调用方法show

堆内存里的静态区

静态区的变量是各个对象共享的,谁要 用谁去拿

静态区的变量在内存里只有一份

静态对象属于类

简单来说,静态对象就是在程序运行期间一直存在的一个对象,它不会随着函数或方法的调用而创建或销毁,而是随着程序的启动而创建,随着程序的结束而销毁。静态对象通常被用于保存全局状态或者提供共享的资源,可以通过类名直接访问,而无需创建类的实例。例如,在Java中,我们可以定义一个静态变量表示某个类的实例个数,每次创建该类的实例时,静态变量的值就会递增,因为静态变量属于类,而非对象。

类:类是一种抽象的概念,它定义了对象的属性和行为。类可以看作是对象的模板或蓝图,描述了对象应该具有的特征和行为。

对象:对象是类的一个实例,它是类的具体化。当我们根据类创建一个具体的实例时,这个实例就是一个对象,拥有了类所定义的属性和行为。

因此,其他对象不是类,而是基于类创建的实例。类是用来定义对象的模板,而对象是根据模板创建出来的具体实体。在面向对象编程中,我们通过定义类来描述对象的特征和行为,并通过创建对象来使用这些特征和行为。

在Java等静态类型语言中,类的加载通常发生在程序运行之初,但在动态语言或一些特殊场景下,类的加载可能会更加灵活和动态。

总的来说,类的加载是在程序运行期间动态发生的,根据程序运行时的需要来进行。

静态方法

被static修饰的成员方法,叫做静态方法

成员方法 getter setter

多用在测试类和工具类中

javaBean类:

用来描述一类事物的类

例 Student Dog Cat

测试类:

用来检测其他类是否正确

带有main方法 是程序的主入口

工具类:

帮我们做一些事情,但不描述任何事情(例如数组求和)

1.类名见名知意

2.私有化构造方法

3.方法定义为静态

javabean类中很少用

静态方法很少用

1.类名调用(推荐)

2.对象名调用

工具类

遍历数组

求总分和平均数

测试类

创建工具类 求集合中的学生年龄的最大值

首先定义javabean类 存储学生对象 放入属性

再用工具类进行定义方法

最后在测试类中调用工具类中的方法

注意事项

1.静态方法只能访问静态变量静态方法

2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和成员方法

3.静态方法中没有this关键字

静态方法的调用方式是通过类名直接调用,不需要先创建类的实例。这也说明了为什么静态方法中没有this关键字,因为在没有实例的情况下,不存在当前对象实例的引用。

this表示当时方法调用者的地址值

this由虚拟机赋值

谁调用当前方法,this就 地址值

内存图

this在形参的最前面 是隐含的

非静态和对象相关,必须要有this;

成员变量 成员方法

静态的是共享的,和每一个对象无关,所以无this

静态 随着类加载而加载

非静态 跟对象有关

重新认识main方法

public class Helloworld{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

public:权限修饰符 被虚拟机调用 访问权限足够大

static:被虚拟机调用 不用创建对象,直接类名访问

因为main方法是静态的,所有测试类的其他方法也需要是静态的

void:被虚拟机调用,不需要给虚拟机返回值

main:虚拟机只能识别main

String[] args:以前是接收数据,现在没用

什么是包

包是文件夹,用来管理不同功能的java类,方便后期代码维护 分门归类

包名规则:

公司域名反写+包的作用,需要全部英文小写,见名知意

packet com.ithema.domain

使用同一个包中的类时,不需要导包

使用导包在什么时候

1.使用java.lang包中的类时,不需要导包

2.其他情况都需要导包

3.如果同时使用两个包中的同名类,需要用全类名

4.使用其他其他包里面的类时要用全类名

final关键字

表示 最终的 不可被改变

一个 修饰符

应用于 方法:表明该方法时最终方法,不能被重写

应用于 :表明该类是最终类,不能被继承

应用于 变量:叫做常量,只能被赋值一次

写在类中防止值改变

例:

math类中的成员变量PI(π)

public static final double PI=3.1415926 5358979 323846

常量

在实际开发中,常量一般为系统的配置信息,方便维护,提高可读性

和final关键字一起用

命名规范

单个单词:全部大写

多个单词:全部大写 单词之间用下划线隔开

细节(重点)

final修饰的变量是基本类型,那么变量存储的数据值不能发生改变

final修饰的变量是引用数据类型,那么变量存储的地址值不能发生改变,对象内部的可以该改变

实例操作

权限修饰符

控制一个成员能被访问的范围

可以修饰成员变量,方法,构造方法,内部类

private 只能自己用

默认(空着不写) 只能在本包中

protectes 受保护的 其他包里的子类也能用

public 都能用

实际开发中一般只用private 和 public

原则

成员变量私有

方法公开

如果方法是抽取其他方法中共性代码,要私有

代码块

局部代码块

写在方法里面的单独代码

回收内存 不浪费空间

不过现在硬件水平提高了,内存空间很大 实际开发中已经不再使用这种方式写代码

public class Dduo{
    public static void main(String[] args){
        {
            int a=10;
        }
        System.out.printf(a);
    }
}//输出结果为0

构造代码块

写在成员位置的代码块,可以优先于成员方法执行

成员方法中共性的可以抽出来放在方法前写入构造代码块

private String name;
private int age;
{
    System.out,println("开始创建对象喽")
}
public Student(){
    
}

只要创建对象 就会先执行构造代码块(必定执行) 再执行构造方法

不过现在也不用了,因为不灵活

静态代码块

static{}

需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次 第一次

在类加载的时候,随着类的加载使用

初始化数据 提高代码效率

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文标签: 代码常量程序设计静态面向对象