Java 数组_方法_static关键字

简介: Java 数组_方法_static关键字

java数组

存储一批同种类型数据

静态初始化数组
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2 , ...};
int[] ages = new int[]{12,24,26};  // 和 C 语言有区别
数据类型[] 数组名 ={元素1, 元素2 , ...};
int[] ages = {12,24,26};

数组是引用类型

访问数组
数组名[index];

获取数组长度

array.length;

注意点

  • 数据类型[] 数组名 可以写成 数据类型 数组名[] --> 同C语言
  • 数组一旦定义后,长度和类型就已经确定了
动态初始化数组

定义时只确定类型和长度

数据类型[] 数组名 = new 数据类型[长度];

元素默认值

两种初始化方式,不可以混用

数组遍历
for(int i = 0 ;i< array.length; i++ ){
    // array[i];
}
java方法
  • 程序逻辑清晰
  • 代码的复用
方法定义
修饰符 返回值类型 方法名(形参列表){
  // 方法体
}
  • 方法的编写顺序无所谓
方法重载

同名方法, 形参列表不同

调用时,通过参数的不同来区分调用的方法

通过形参不同实现功能差异化的选择

修饰符,返回值类型不能作为重载的基础

形参列表不同指的是:形参的个数类型顺序不同,不关心形参的名称

static 关键字
  • 静态, 可以修饰成员变量,成员方法
  • 静态成员变量,静态方法
  • static 修饰后的成员变量, 被类的所有对象共享(访问和修改) --> 属于类,内存中只有一份
类名.静态成员变量;
对象.静态成员变量; --> 也可以
  • 静态成员方法,可以使用类名访问,可以使用对象访问
  • 实例成员方法,只能使用对象访问
static 访问注意事项
  • 静态方法只能访问静态成员,不可以直接访问实例成员
  • 实例方法可以访问静态成员,也可以访问实例成员
  • 静态访问中不可以使用this关键字, this 代表的是对象
工具类

类中的静态方法,每个方法都是以完成一个公用的功能为目的。

  • 实例方法需要创建对象调用
  • 静态的工具类无需创建对象,就可以直接调用方法 --> 将工具类的构造器进行私有
代码块

类的5大成分: 成员变量,构造器,方法,代码块,内部类

代码块定义在方法中

使用{} 括起来的代码称为代码块

  • 静态代码块
  • 格式 : static{}
  • 需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次
  • 在类加载的时候做一些静态数据初始化的操作,以便后续使用

定义成员变量时不允许赋初值

  • 在启动系统时对静态资源进行初始化
  • 构造代码块
  • 格式: {}
  • 每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
单例设计模式

一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结 出来了,称之为设计模式

  • 单例模式
    保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象
  • 单例实现方式
  • 饿汉单例模式
  • 懒汉单例模式
饿汉单例模式

在用类获取对象的时候,对象已经提前为创建好

步骤

  • 定义一个类,构造器私有
  • 定义一个静态变量,存储一个对象
public class SingleInstance{
    // 静态变量存储一个对象:属于类,与类一起加载一次
    public static SingleInstace instance = new SingleInstance();
    // 私有构造器
    private SingleInstance(){
        // ...
    }
}
懒汉单例模式

真正需要该对象时,才去创建一个对象(延迟加载对象)

步骤

  • 定义一个类,私有构造器
  • 定义一个静态变量存储对象
  • 提供一个返回单例对象的方法
public class SingleInstance{
    // 静态变量存储一个对象:属于类,与类一起加载一次
    public static SingleInstace instance;
    // 私有构造器
    private SingleInstance(){
        // ...
    }
    
    // 提供一个一个方法返回一个单例对象
    public static SingleInstance getInstance(){
        ...
        return ...;
    }
}
相关文章
|
4天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
31 17
|
1天前
|
存储 Java
Java 中的静态(static)
【10月更文挑战第15天】静态是 Java 语言中一个非常重要的特性,它为我们提供了一种方便、高效的方式来管理和共享资源。然而,在使用过程中,我们需要谨慎考虑其优缺点,以确保代码的质量和可维护性。
|
5天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3
|
6天前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
20 4
|
7天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
5天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
9 2
|
5天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
8 1
|
5天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
16 1
|
5天前
|
Java
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅。它们用于线程间通信,使线程能够协作完成任务。通过这些方法,生产者和消费者线程可以高效地管理共享资源,确保程序的有序运行。正确使用这些方法需要遵循同步规则,避免虚假唤醒等问题。示例代码展示了如何在生产者-消费者模型中使用`wait()`和`notify()`。
11 1
|
5天前
|
安全 Java 开发者
Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用
本文深入解析了Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用。通过示例代码展示了如何正确使用这些方法,并分享了最佳实践,帮助开发者避免常见陷阱,提高多线程程序的稳定性和效率。
15 1