Java_笔记_static_静态变量方法工具类_main方法

news2024/11/14 16:34:07

static表示静态,是Java中的一个修饰符,可以修饰成员方法和成员变量。

一、静态变量: 被static修饰的成员变量

1.特点:
1)被该类所有的对象共享。
2)不属于对象,属于类。
3)随着类的加载而加载的,优先于对象出现的。
JDK8以前,静态区在方法区里;JDK8以后,静态区(静态存储位置)在堆内存中。
在静态区里存着这个类所有的静态变量。
在这里插入图片描述

2.调用方式:
1)类名调用(推荐)
2)对象名调用

二、静态方法:被static修饰的成员方法

1.特点:
1)多用在测试类和工具类中

Javabean类:用来描述一类事物的类。例如Student,Teacher,Dog,Cat等。
测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口。
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类。类名见名知意;私有化构造方法;方法定义为静态。

2)Javabean类中很少会用

2.调用方式:
1)类名调用(推荐)
2)对象名调用

3.练习:
1)练习1:
定义数组工具类

需求:在实际开发中,经常会遇到一些数组使用的工具类。
请按照如下要求编写一个数组的工具类:ArrayUtil

提供一个工具类方法printArr,用于返回整数数组的内容。
返回的字符串格式如:[10, 20, 50, 34, 100](只考虑一维的整数数组)
提供一个工具方法getAverage,用于返回平均分。(只考虑一维的浮点型数组)
定义一个测试类Test,调用该工具类的工具方法,并返回结果。

public class ArrayUtil {
    //私有化构造方法
    //目的:不让外界创建其对象
    private ArrayUtil() {
    }

    //为方便调用需要定义静态方法
    public static String printArr(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        return sb.toString();
    }

    public static double getAverage(double[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum + arr[i];
        }
        return sum / arr.length;
    }
}

public class Test {
    public static void main(String[] args) {
        //测试工具类中的两个方法是否正确
        int[] arr1 = {1, 2, 3, 4, 5};
        String str = ArrayUtil.printArr(arr1);
        System.out.println(str);//[1,2,3,4,5]

        double[] arr2 = {1.5, 6.8, 3.5, 7.2};
        double average = ArrayUtil.getAverage(arr2);
        System.out.println(average);//4.75
    }
}

2)练习2:
定义学生工具类

需求:定义一个集合,用于存储3个学生对象。
学生类的属性为:name, age, gender
定义一个工具类,用于获取集合中最大学生的年龄

public class Student {
    private String name;
    private int age;
    private String gender;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

import java.util.ArrayList;

public class StudentUtil {
    private StudentUtil() {
    }

    //静态方法
    public static int getMaxAge(ArrayList<Student> list) {
        //1.定义一个参照物
        int max = list.get(0).getAge();
        //2.循环遍历集合
        for (int i = 0; i < list.size(); i++) {
            int tempAge = list.get(i).getAge();
            if (tempAge > max) {
                max = tempAge;
            }
        }
        return max;
    }
}

import java.util.ArrayList;

public class StudentTest {
    public static void main(String[] args) {
        //1.创建一个集合用来存储学生对象
        ArrayList<Student> list = new ArrayList<>();
        //2.创建3个学生对象
        Student s1 = new Student("云苓", 23, "女");
        Student s2 = new Student("黎川", 28, "女");
        Student s3 = new Student("岑溪", 29, "男");
        //3.把学生对象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        //4.调用工具类
        int maxAge = StudentUtil.getMaxAge(list);
        System.out.println(maxAge);//29
    }
}

4.单例设计模式:多线程

三、static的注意事项

1.静态方法只能访问静态变量和静态方法。
2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量(实例变量)和非静态的成员方法。
3.静态方法中没有this关键字(非静态方法的this表示当前方法调用者的地址值,this是由虚拟机赋值的)。
4.静态和共享有关;非静态和对象有关。

四、重新认识main方法:

1.public:被JVM调用,访问权限足够大。
2.static:被JVM调用,不用创建对象,直接类名访问。因为main方法是静态的,所以测试类中其他方法也需要是静态的。
3.void:被JVM调用,不需要给JVM返回值。
4.main:一个通用的名称,虽然不是关键字,但是被JVM识别。
5.String[] args:以前用于接收键盘录入数据的,现在没用。(Idea Edit Configuration设置参数)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(个人记录)Ensight后处理EDEM学习笔记

①EDEM计算完毕 ②左上角,点击输出data 先点击一下 然后再把EXPORT FORMAT改为ensight的格式 file name选择要保存到的文件夹,保存格式为.case文件 设置保存的时间步 填入“10”的意思是0.01*10=0.1,在ensight中以0.1的时间步展示结果 点击queries 在ensight里只能…

七段显示译码器

我们会把它放在系统中来显示多位&#xff0c;很多位的表达会用到小数点 12.34 我只想显示&#xff0c;我现实系统的数字大小有一个范围&#xff0c;比如整数四位&#xff0c;小数四位 我显示12.34 就意味着首先两位就是空着&#xff0c;最后两位也是空着 这几位从输入的数字…

Android 基础知识4-1 用户界面简介VIewGroup、Onclick事件处理

引言&#xff1a; 一个好的应用界面的必备条件是&#xff1a;内容清楚、指示明白、屏幕美观和有亲切感。界面通常包含图形和文字。应用界面的设计是对控件进行适当的取舍及功能的选择和处理的过程。在程序设计中&#xff0c;需要对设计的方法反复推敲、琢磨&#xff0c;才能使其…

spfa算法判断负环【什么是负环】【出现负环会怎么样】【牢记,此时不是求最短路】

欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09; 文章字体风格&#xff1a; 红色文字表示&#xff1a;重难点 蓝色文字表示&#xff1a;思…

【推荐题目】

一&#xff0c;题目 1. 猪队友&#xff08;pigmate.cpp&#xff09; 【问题描述】 "不怕神一样的对手&#xff0c;就怕猪一样的队友"&#xff0c;这不&#xff0c;小A需要将小B写的 n 张不同的明信片 放到一一对应的 n 个不同的信封中去&#xff0c;可是不管你信不…

代码不到200行!Tkinter上课点名程序来了

前言 今天给大家分享一个比较有意思的Python应用&#xff0c;使用Tkinter开发了一款上课点名程序&#xff0c;此程序可以用于点名、抽奖代码不到200行&#xff0c;程序简单又实用&#xff0c;分享给到大家&#xff5e; 开发工具 Python版本&#xff1a; 3.8 相关模块&#xff1…

I2C、SPI、CAN、PCIe 对比

唯一标识 在社会上&#xff0c;靠身份证号&#xff0c;来唯一标识一个人。 在计算机的世界里&#xff0c;通过什么来唯一标识一个外设呢&#xff1f;方案还不止一种 I2C 使用地址&#xff08;7 或 10 位&#xff09;来唯一标识一个外设 SPI 使用 CS 引脚来唯一确定通信的外设…

0.安装和配置

我们不要怕&#xff0c;我们要一直向前&#xff0c;为了我们的目标。 对应关系是: https://www.rabbitmq.com/which-erlang.html 安装 Erlang https://www.erlang.org/downloads 选中 64 位 进行下载 下载后&#xff0c;双击 进行安装 选择 安装的路径 路径为&#xff1a; …

[附源码]计算机毕业设计校园招聘系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android深色主题背景的实现及主题背景颜色互换

layout: post title: Android深色主题背景的实现及主题背景颜色互换 date: 2-12-03 21:52:38 发布 author: ‘zhangtao’ header-img: ‘img/post-bg-2015.jpg’ catalog: false tags: -android -android studio -ide 目录 深色主题背景的优势&#xff1a; 如何实现Android的…

MySQL进阶

文章目录数据库约束NULL约束UNIQUE&#xff1a;唯一约束DEFAULT&#xff1a;默认值约束PRIMARY KEY&#xff1a;主键约束FOREIGN KEY&#xff1a;外键约束表的设计——一对一、一对多、多对多增删改查进阶聚合函数Group by分组having:分组后的条件过滤联合查询内连接外连接自连…

【 第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别】

第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别 1.事务简介&#xff1a; ①事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0…

Kafka - 13 Java 客户端实现消费者消费消息

文章目录1. 独立消费者案例&#xff08;订阅主题&#xff09;2. 独立消费者案例&#xff08;订阅分区&#xff09;3. 消费者组案例1. 独立消费者案例&#xff08;订阅主题&#xff09; 需求&#xff1a;创建一个独立消费者&#xff0c;消费主题中数据&#xff1a; [roothadoo…

Linux系统移植三:移植Kernel生成zImage和dtb文件

Linux系统移植系列 Linux系统移植一&#xff1a;移植U-BOOT 添加自己的板子并编译&#xff08;非petalinux版&#xff09; Linux系统移植二&#xff1a;生成fsbl引导文件并制作BOOT.bin 下载源码包 Xilinx官方linux源码包下载地址&#xff1a;https://github.com/Xilinx/lin…

linux+window+macos下的JDK安装

1. Linux中安装JDK &#xff08;1&#xff09;下载Linux版本的jdk压缩包 &#xff08;2&#xff09;解压 tar -zxvf 压缩包名 例如&#xff1a; tar -zxvf jdk-8u251-linux-x64.tar.gz&#xff08;3&#xff09;在系统配置文件配置java 编辑profile配置文件 vim /etc/prof…

JVM Metaspace内存溢出问题

更多内容&#xff0c;前往 IT-BLOG 一、现象 x项目线上环境因为jvm报OOM的异常而报警,导致整个服务不可用并被拉出集群,现象如下: 当时的解决方案是增加metaspace的容量: -XX:MaxMetaspaceSize512m, 从原来默认的256m改为512m, 虽然没有再出现oom,但这个只是临时解决方案,通过…

MyBatis ---- 动态SQL

MyBatis ---- 动态SQL1. if2. where3. trim4. choose、when、otherwise5. foreach6. SQL片段MyBatis 框架的动态 SQL 技术是一种根据特定条件动态拼接 SQL 语句的功能&#xff0c;它存在的意义是为了解决拼接 SQL 语句字符串时的痛点问题。 1. if /*** 根据条件查询员工信息if…

eBPF书籍和教程良心推荐

中文 BPF 性能工具&#xff08;书籍&#xff09;&#xff0c;作者 Brendan Gregg。本书的GitHub 回购。系统性能&#xff1a;企业与云&#xff0c;第 2 版 (2020)&#xff0c;作者&#xff1a;Brendan GreggJed Salazar 和 Natalia Reka Ivanko 的 eBPF 安全可观察性什么是 eB…

Metabase学习教程:系统管理-5

仪表板优化 如何使您的仪表板加载更快。 说到仪表板性能方面&#xff0c;基本上有四种方法可以让仪表板更快地加载&#xff1a; 要求更少的数据.缓存问题答案.组织数据以预测常见问题.提出有效的问题。图1。包含三个筛选器小部件的示例仪表板&#xff0c;它们使用Metabase附…

友宝在线在港交所上市申请“失效”:连续两年亏损,王滨为大股东

近日&#xff0c;贝多财经从港交所披露易了解到&#xff0c;Beijing UBOX Online Technology Corp.&#xff08;北京友宝在线科技股份有限公司&#xff0c;下称“友宝”或“友宝在线”&#xff09;的上市申请材料已经失效&#xff0c;目前已经无法查看。 其中&#xff0c;招股书…