ArrayList集合,static,代码块,单例设计模式

  • ArrayList集合
  • static修饰成员变量
  • 代码块概述
  • 单例设计模式

ArrayList

  1. 会提供创建容器对象的方式

  2. 会提供相应的方法对容器进行操作

    • 添加数据
    • 删除某个数据
    • 修改某个数据
    • 获取某个数据
    1. 创建对象
    2. 增删改查的方法
    3. 容器的其他特点
Public class Test2 {
	public static void main() {
		String s2 = new String("abc"); // 这句话实际上创建了两个对象,(一个在字符串常量池中,一个在堆内存中),s2指向堆内存中的"abc"
		String s1 = "abc" // 没有创建对象,s1指向了字符串常量池的"abc"
		System.out.println("s1==s2") // false
	}
}

duineicum

ArrayList是使用最多,最常见的一种集合
构造器说明
Public ArrayList()创建一个空的集合对象
常用方法名说明
Public boolean add(E e)将指定的元素添加到此集合的末尾
Public void add(int index,E element)在此集合中的指定位置插入指定的元素
Public E get(int index)返回指定索引处的元素
Public int size()返回集合中的元素的个数
Public E remove(int index)删除指定索引处的元素,返回被删除的元素
Public boolean remove(Object o)删除指定的元素,返回删除是否成功
Public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
注意:集合和泛型都不支持基本数据类型,只能支持引用数据类型

Static修饰成员变量

Static叫静态,可以修饰成员变量、成员方法

成员变量按照有无Static修饰,分为两种:

  • 类变量:有Static修饰,属于类,在计算机里有一份,会被类的全部对象共享
  • 实例变量(对象的变量):无Static修饰,属于每个对象的
Public class Student {
	//类变量
	Static String name; // 类名.类变量(推荐) 对象.类变量(不推荐)
	//实例变量
	int age; // 对象.实例变量
}
类变量的应用场景

在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住

案例:要求用户类可以记住自己创建了多少个对象
Public class User {
	//类变量
	public static int number;
	//构造器
	public User() {
		User.number++;
	}
}
总结
  • 访问自己类中的类变量,可以省略类名不写

  • 注意:在某个类中访问其他类里的类变量,必须带类名访问

Static修饰成员方法

成员方法的分类

类方法:有Static修饰的成员方法,属于类

Public Static void printHelloWorld() {  // 类名.类方法(推荐)
	Syste,.out.println("Hello World"); //  对象名.类方法(推荐)
}

实例方法:无Static修饰的成员方法,属于对象

Public void PrintPass() {
	...   // 对象.实例方法
}
类方法的常见应用场景

类方法最常见的应用场景是做工具类

  1. 工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给来发人员使用的
  2. 使用类方法来设计工具类提高了代码复用,调用方便,提高了开发效率

为什么工具类中的方法要用类方法,而不用实例方法?

  • 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存

  • 类方法,直接用类名调用即可,调用方便,也能节省空间

多学一招

工具类没有创建对象的需求,建议将工具类的构造器进行私有

使用类方法、实例方法的注意事项
  1. 类方法中可以直接访问类的成员,不可以直接访问实例成员(属于对象),注意同一个类中,访问类成员,可以省略类名不写
  2. 实例方法中,既可以直接访问类成员,也可以直接访问实例成员
  3. 实例方法中可以出现this关键字,类方法中不可以出现this关键字

代码块概述

代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)

代码块分两种

静态代码块

格式:static{ }

特点: 类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次

作用:完成类的初始化,例如:对类变量的初始化赋值

实例代码块

格式:{ }

特点:每次创建对象时,执行实例代码块,并在构造器前执行

作用:和构造器一样,都是用来完成对象的初始化的,对实例成员进行初始化赋值

什么是设计模式?

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

设计模式有20多种,对应20多种软件开发中会遇到的问题

  1. 解决什么问题?
  2. 怎么写?

单例设计模式

确保一个类只有一个对象

写法:

  1. 把类的构造器私有
  2. 定义一个类变量记住类的一个对象
  3. 定义一个类方法,返回对象
	// 饿汉式单例设计模式
	Public class A {
	// 2. 定义一个类变量记住类的一个对象
	private static A a = new A();
	
	// 1. 私有构造器
	private A() {
	
	}
	
	// 3. 定义一个类方法返回对象
	public static A getObject() {
		return a;
	}
}

单例设计模式的实现方式有很多

饿汉式单例:拿对象时,对象早就创建好了

懒汉式单例:拿对象时,才开始创建对象(延迟加载对象)

懒汉式单例设计模式

写法:

  1. 把类的构造器私有

  2. 定义一个类变量用于存储对象

  3. 提供一个类方法,保证返回的是同一个对象

// 懒汉式单例设计模式
Public class B {
	// 2. 定义一个类变量,用于存储这个类的一个对象
	private static B b;
	
	// 1. 把类的构造器私有
	private B() {
	
	}
	
	// 3. 定义一个类方法,这个方法要保证第一次调用时才创建一个对象,
	      后面调用时都会用这同一个对象返回
	      public static B getInstance() {
	      	if(b == null) {
	      		b = new B();
	      	}
	      	return b;
	      }
}
  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值