Java进阶学习笔记3——static修饰成员方法

成员方法的分类:

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

成员方法:无static修饰的成员方法,属于对象。

Student类:

package cn.ensource.d2_staticmethod;

public class Student {
    double score;
    // 类方法
    public static void printHelloWorld() {
        System.out.println("Hello World");
        System.out.println("Hello World");
    }

    // 实例方法
    public void printPass() {
        System.out.println("成绩:" + (score >= 60 ? "及格" : "不及格"));
    }

}

Test测试类: 

package cn.ensource.d2_staticmethod;

public class Test {
    public static void main(String[] args) {
        // 目标:掌握有无static修饰方法的用法
        // 1. 类方法的用法
        // 类名.类方法
        Student.printHelloWorld();

        // 对象.类方法(不推荐)
        Student st = new Student();
        st.printHelloWorld();

        st.score = 80;
        st.printPass();

//        Student.printPass();  // 报错
    }
}

执行原理:

实例方法是不允许使用类名调用。

类方法可以使用类名调,也可以使用实例调。

工具类的方法基本上全部都是static修饰的。

补充知识:搞懂main方法:

 main方法怎么就能直接跑起来呢?

Java Test  ---> Test.main()     main方法是类方法。

参数:String[] args

如何把数据传给这个main方法的参数:

在Shell脚本中,就明白这个概念。

static修饰成员方法的应用场景:

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

工具类是什么?

工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

使用类方法设计工具类有什么好处呢?

1)提高了代码的复用性,调用方便,提高了开发效率。

工具类的方法都是类方法,每个类方法都是用来完成一个功能的。

 案例:

两段代码存在重复代码。那就不是好的架构。

同学的讨论:

类方法可以集合到工具类中,而且不用创建对象就能调用。类方法可以用类名直接调用,不需要创建对象,使用起来非常方便。

工具类,类方法:

package cn.ensource.d3_util;

import java.util.Random;

public class MyUtil {
    private MyUtil() {
}
    public static String createCode(int n) {
        String code = "";
        String data = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        Random r = new Random();

        for(int i = 0; i < n; i++) {
            int index = r.nextInt(data.length());
            code += data.charAt(index);
        }
        return code;
    }
}

调用工具类中的类方法:

package cn.ensource.d3_util;

import java.util.Random;

public class LoginDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(4));;
    }

}
package cn.ensource.d3_util;

import java.util.Random;

public class RegisterDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(6));
    }

}

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

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

类方法,直接使用类名调用,调用方便,也能节省内存。

多学一招:

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

Math 类:

工具类不让人创建对象,可以将构造器私有。

Math类的类方法:前面都有static:我们拿类名直接调用这种方法。

Static的注意事项:

使用类方法和实例方法时的几点注意事项:

类方法中可以直接访问类成员,不可以直接访问实例成员;

实例方法中即可以直接访问类成员,也可以直接访问实例成员(变量和方法);

实例方法中可以出现this关键字,类方法中不可以出现this关键字。

package cn.ensource._d4_static_attention;

public class Student {
    static String schoolName; // 类变量
    double score;
    public static void printHelloWorld1() {
        Student.schoolName = "黑马";
        Student.printHelloWorld2();

        // 类方法中不能访问实例变量、实例方法
//        System.out.println(score);
//        printPass();

//        System.out.println(this);
    }

    public static void printHelloWorld2() {
        System.out.println("Hello World");
        System.out.println("Hello World");
    }

    // 实例方法
    public void printPass() {
        Student.schoolName = "黑马";
        printHelloWorld2();

        System.out.println(score);
        printPass2();

        System.out.println(this);  //那取对象
    }

    public void printPass2() {

    }
}

只要记住:类方法只能只能访问类成员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC流程

1、SpringMVC常用组件&#xff1a; DispatcherServlet&#xff08;请求分发器&#xff09;&#xff1a;Spring MVC的核心组件之一&#xff0c;负责处理全局配置和将用户请求分发给其他组件进行处理。Controller&#xff08;处理器&#xff09;&#xff1a; 实际处理业务逻辑的…

springmvc中HandlerMapping是干什么用的

HandlerMapping处理器映射器 作用是根据request找到相应的处理器Handler和Interceptors&#xff0c;然后封装成HandlerExecutionChain对象返回 HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception; 实现类 HandlerMapping帮助DispatcherServlet进…

Oblivion Desktop:一款强大的网络工具介绍

一款优秀的开源网络工具。 文章目录 Oblivion Desktop: 安全与隐私的网络工具软件背景开发背景 使用方法安装日常使用高级功能 总结 Oblivion Desktop: 安全与隐私的网络工具 软件背景 Oblivion Desktop 是一个由 BePass 团队开发的开源桌面应用&#xff0c;旨在为用户提供更…

喜报 | 江苏刺掌信息科技有限公司获选市企业发展服务中心优质合作伙伴

喜报 江苏刺章信息成功入选 镇江市企业发展服务中心 “优质合作伙伴” 为进一步完善镇江市公共服务体系建设&#xff0c;提升服务范围和能力&#xff0c;更好地为企业提供专业、高效、安全的服务&#xff0c;镇江市企业发展服务中心启动了优质合作伙伴的征选工作&#xff0c;通…

win10右键没有默认打开方式的选项的处理方法

问题描述 搞了几个PDF书籍学习一下&#xff0c;不过我不想用默认的WPS打开&#xff0c;因为WPS太恶心人了&#xff0c;占用资源又高。我下载了个Sumatra PDF&#xff0c;这时候我像更改pdf文件默认的打开程序&#xff0c;发现右击没有这个选项。 问题解决 右击文件–属性–…

Linux——进程与线程

进程与线程 前言一、Linux线程概念线程的优点线程的缺点线程异常线程用途 二、Linux进程VS线程进程和线程 三、Linux线程控制创建线程线程ID及进程地址空间布局线程终止线程等待分离线程 四、习题巩固请简述什么是LWP请简述LWP与pthread_create创建的线程之间的关系简述轻量级进…

JAVA云HIS医院系统源码 HIS源码:云HIS系统与SaaS的关系

云HIS系统与SaaS的关系 云HIS系统是一种基于云计算技术的医院信息系统&#xff0c;它采用B/S架构&#xff0c;通过云端SaaS服务的方式提供。用户可以通过浏览器访问云HIS系统&#xff0c;无需关注系统的部署、维护、升级等问题。云HIS系统通常具有模板化、配置化、智能化等特点…

Android 共享内存

Parcelable 和 Serializable 区别 Serializable IO完成&#xff08;通过磁盘文件读写&#xff09; Parcelable C 对象指针 来实现共享内存 import android.os.Parcel; import androidx.annotation.NonNull;public class ApiResponseBean extends Throwable implements Parce…

吴恩达2022机器学习专项课程C2W2实验:Relu激活函数

目录 代码修改1.Activation2.Dense3.代码顺序 新的内容1.总结上节课内容2.展示ReLU激活函数的好处3.结论 代码案例一代码案例二1.构建数据集2.构建模型 2D1.构建数据集2.模型预测3.扩展 代码修改 1.Activation &#xff08;1&#xff09;需要添加代码from tensorflow.keras i…

深度学习模型keras第二十四讲:KerasNPL概述

1、KerasNPL简介 KerasNLP是一个与TensorFlow深度集成的库&#xff0c;旨在简化NLP&#xff08;自然语言处理&#xff09;任务的建模过程。它提供了一系列高级API&#xff0c;用于预处理文本数据、构建序列模型和执行常见的NLP任务&#xff0c;如情感分析、命名实体识别和机器…

深入解析力扣162题:寻找峰值(线性扫描与二分查找详解)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

php基础笔记

开端&#xff1a; PHP 脚本可以放在文本的任意位置 PHP 脚本以 开始&#xff0c;以 ?>** 结束&#xff1a; PHP 文件的默认文件扩展名是 ".php" 标签替换 <? echo 123;?> //short_open_tagson 默认开启 <?(表达式)?> 等价于 <?php echo …

virtual box ubuntu20 全屏展示

virtual box 虚拟机 ubuntu20 系统 全屏展示 ubuntu20.04 视图-自动调整窗口大小 视图-自动调整显示尺寸 系统黑屏解决 ##设备-安装增强功能 ##进入终端 ##终端打不开&#xff0c;解决方案-传送门ubuntu Open in Terminal打不开终端解决方案-CSDN博客 ##点击cd盘按钮进入文…

保存商品信息功能(VO)

文章目录 1.分析前端保存商品发布信息的json数据1.分析commoditylaunch.vue的submitSkus1.将后面的都注销&#xff0c;只保留查看数据的部分2.填写基本信息3.保存信息&#xff0c;得到json4.使用工具格式化一下 2.使用工具将json转为model3.根据业务修改vo&#xff0c;放到vo包…

力扣hot100学习记录(七)

240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题意 在二维矩阵中搜索是否存在一个目标值&#xff0c;该矩阵每一行每一列都是升序…

❤ Vscode和Idea都可以使用的-AI插件(官方-百度出的)

❤ Vscode和Idea都可以使用的-AI插件&#xff08;官方-百度出的&#xff09; 最新AI特别火&#xff0c;给大家推荐一下最新出的VScode插件&#xff0c;辅助我们写代码&#xff01; 1、下载地址&#xff1a; > https://comate.baidu.com/zh/shopping?inviteCodefkzlak8f …

内存函数详解与模拟实现

目录 1.memcpy函数 1.1memmcpy函数的模拟使用 2.memmove函数 2.1memmove 函数的模拟使用 3.memcmp 3.1memcmp函数的模拟实现 4.memset (内存设置) 4.1memset函数的模拟实现 1.memcpy函数 void* memcpy(void* destination, const void* source, size_t num);//之所以是v…

网络统一监控运维管理解决方案(ppt原件方案)

网络统一监控运维管理解决方案 1. 构建完善的网络运维体系&#xff1a;通过组织、流程、制度的完善、支撑手段的建设&#xff0c;构建低成本高效率的IT运营体系&#xff0c;推动IT运营工作自动化、智能化、一体化化发展。 2. 构建网络一体化监控能力&#xff1a;构建从设备、…

YOLOv10 | 无NMS的YOLO | 实时端到端目标检测的新突破

过去几年里&#xff0c;YOLOs因在计算成本和检测性能之间实现有效平衡而成为实时目标检测领域的主流范式。研究人员针对YOLOs的结构设计、优化目标、数据增强策略等进行了深入探索&#xff0c;并取得了显著进展。然而&#xff0c;对非极大值抑制&#xff08;NMS&#xff09;的后…

人工智能的阴暗面:犯罪分子如何利用 AI 进行欺诈

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正迅速成为推动各行各业生产力和创新的关键力量&#xff0c;而一些不法分子也开始探索如何将这些先进的工具用于他们自己的非法目的。从网络钓鱼到深度伪造&#xff0c;再到人肉搜索、越狱服务和身份验证系统的…