Java学习第七天

2024-09-04 17:36
文章标签 java 学习 第七天

本文主要是介绍Java学习第七天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

成员方法分类:

静态成员方法(有static修饰 属于类)建议用类名访问,也可以用对象访问

实例成员方法(无static修饰 属于对象)只能用对象出发访问

使用static来定义一些工具类

工具类直接使用类名.方法调用即可,将构造器私有化,不要对外产生对象。

/*
* 工具类
* */
public class ArraysUtils {//构造器私有化private ArraysUtils(){}//数组转字符串public static String tostring(int[] arr){if(arr == null){return null;}String result = "[";for (int i = 0; i < arr.length; i++) {if(i == arr.length - 1){result += (arr[i] + "]");}else{result += (arr[i] + ",");}}return result;}//求数组的平均值public static double getAverage(int[] arr){if(arr == null){return 0.0;}double ave = 0.0;double sum = 0.0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}ave = sum/arr.length;return ave;}}//测试类
public class TestDemo {public static void main(String[] args) {int[] arr = {1,5,44,29,36,7,12,23,18,489};System.out.println(arr);System.out.println("原始数组为" + ArraysUtils.tostring(arr));System.out.println("均值为" + ArraysUtils.getAverage(arr));int[] arr1 = null;System.out.println("空数组为" + ArraysUtils.tostring(arr1));System.out.println("均值为" + ArraysUtils.getAverage(arr1));}
}

代码块

类中的代码块在main方法之前执行,可以做一些初始化操作,

构造代码块在创建对象时候触发,比构造器先执行。

静态代码块用于初始化类;构造代码块用于初始化对象、实例资源。

单例设计模式

设计模式是一套被前人反复使用、多数人知晓、经过分类编目的代码设计经验的总结,后来者可以拿来解决问题。

设计模式是软件中的常见解决方案,好的设计模式可以进一步的提高代码的重用性。

单例模式:可以保证系统中,应用该模式的这个类只有一个实例,即一个类永远只能创建一个对象。例如任务管理器对象我们只需要一个就可以解决问题了,这样可以节省内存空间。

饿汉单例设计模式

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

设计步骤:

1.定义一个类,把构造器私有化。

2.定义一个静态变量存储一个对象。

/*
* 学会饿汉单例模式
* */
public class SingleInstance {//构造器私有化private SingleInstance(){}//定义一个公开的静态变量来存储对象//饿汉式单例模式:在这里加载静态变量的时候就会创建一个对象。public static SingleInstance s1 = new SingleInstance();
}

懒汉单例模式

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

/*
* 学会使用懒汉单例模式
* */
public class SingleInstance2 {//构造器私有化private SingleInstance2(){}//创建一个公共的静态变量来存储实例对象private static SingleInstance2 s2;//提供一个公共的方法来获取实例对象public static SingleInstance2 getInstance(){//实例对象为空,则创建一个直接返回 否则返回已经创建的实例对象/*以下注释代码有问题,实现不了懒汉单例,因为第一次创建时,返回一个新对象,但是该对象并没有赋值给s2,这样下次执行getinstance方法时候,s2仍然为null,所以每次返回的都不一样。*//*if(s2 == null){//第一次创建return new SingleInstance2();}return s2;*/if(s2 == null){s2 = new SingleInstance2();}return s2;}}

懒汉单例最好使用private私有化变量,饿汉单例必须public,因为懒汉单例外部是通过getinstance方法来获取对象的,而该方法是public公开的;饿汉单例需要外部来获取该变量,必须public公开。

继承

就近原则,先局部,然后子类,最后父类。

私有方法不能被重写

这篇关于Java学习第七天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136579

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node