Java 基础入门 | 第七章 类成员与实例成员

简介: 目录类成员与实例成员什么是类成员什么是实例变量实例变量和类变量的区别类方法和实例方法的区别类成员和实成员的区别static 关键字的其他使用包的使用什么是包包的声明类的导入访问修饰符类成员与实例成员什么是类成员

 类成员与实例成员

什么是类成员

    • 使用static修饰的成员方法和成员变量称为类成员
    • 使用static修饰的成员变量叫做类变量
    • 使用static修饰的成员方法叫做类方法

    什么是实例变量

      • 未使用static修饰的成员方法和成员变量称为实例成员
      • 未使用static修饰的成员变量叫做实例变量
      • 未使用static修饰的成员方法叫做实例方法

      代码示例

      public class StaticTest {
          String name;//实例变量
          static int num; //类变量
          //实例方法
          public void  say(){
              System.out.println("你好啊!!!");
          }
          //类方法
          public static void eat(){
              System.out.println("你是一个吃货!!!");
          }
      }

      image.gif

      实例变量和类变量的区别

        • 所有该类的对象共享同一个类变量,但是每个对象都会有自己独特的实例变量
        • 所有该类的对象都能改变类变量的值,但是每个对象只能改变自己的实例变量值
        • 实例变量在使用前必须创建一个对象,根据对象名.变量名使用,但是类变量不需要创建对象

        代码示例

        public class TestDemo {
            public static void main(String[] args) {
                //创建一个实例对象test1
                StaticTest test1=new StaticTest();
                //创建一个实例对象test2
                StaticTest test2=new StaticTest();
                //给test1对象的实例变量赋值
                test1.name="张三";
                //给test2对象的实例变量赋值
                test2.name="李四";
                //每个对象都有一个自己的实例变量值
                System.out.println(test1.name); //输出 实例变量值 张三
                System.out.println(test2.name); //输出 实例变量值 李四
                //给类变量赋值
                //方式1
                test1.num=20;
                System.out.println(test1.num);
                System.out.println(test2.num);
                System.out.println(StaticTest.num);
                //类变量被所有该类的实例对象共同拥有
                //方式2
                //类变量也可以用类名.变量名直接调用
                StaticTest.num=20;
                System.out.println(test1.num);
                System.out.println(test2.num);
                System.out.println(StaticTest.num);
            }
        }

        image.gif

        类方法和实例方法的区别

          • 所有该类对象共享类方法
          • 类方法使用类名.方法名([参数])调用
          • 实例方法使用对象名.方法名([参数])调用
          public class TestMethodDemo {
              public static void main(String[] args) {
                  StaticTest test1=new StaticTest();
                  test1.say();
                  StaticTest.eat();
              }
          }

          image.gif

          类成员和实成员的区别

            • 实例成员和类成员的相互访问限制
            • 实例方法可以直接访问实例变量和实例方法。
            • 实例方法可以直接访问类变量和类方法。
            • 类方法可以直接访问类变量和类方法。
            • 类方法不能直接访问实例变量或实例方法,要访问它们必须使用对象引用。还有,类方法不能使用this关键字,因为没有this的实例可供使用。

            static 关键字的其他使用

              • 静态代码块是一个以static为前导的代码块,一般用于为类的工作做一些初始化工作,如初始化一些静态变量。
              • 一个类中可以有许多静态初始化块,并且它们可以出现在类体的任何地方。运行时系统会保证静态初始化块会按照它们在源代码中出现的顺序被调用

              包的使用

              什么是包

              包是Java用于提供访问保护和命名空间管理的方式,包就是用来将Java中类和接口等进行分类管理的工具,类似于操作系统中的目录

              包的声明

                • package 包名;
                • 包名的前半部分一般使用倒置的域名,后半部分一般采用该包下类分类名(或者功能名),如:package com.sina.util;
                • 包的声明必须是整个类文件可执行的第一行语句

                代码示例

                //声明包,声明包的语句必须在第一行
                package com.tarzan.reptile.java;
                //导入Scanner类(同包下的类不需要导入,不同包下的类需要导入)
                import java.util.Scanner;
                public class UsePackageDemo {
                    public static void main(String[] args) {
                        Scanner scanner=new Scanner(System.in);
                    }
                }

                image.gif

                类的导入

                  • 一旦需要使用另外一个包中的类时,需要将该类导入到当前类中,如需要在程序中使用java.util包下的Scanner类,需要将给类先导入到使用的类中
                  • 类导入的语法
                  • import 包名.类名;
                  • 或者 import 包名.*;

                  访问修饰符

                  访问修饰符对成员变量和成员方法的访问限定

                  image.gif编辑

                   

                  相关文章
                  |
                  1天前
                  |
                  Java
                  【专栏】Java中的反射机制与应用实例
                  【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
                  |
                  3天前
                  |
                  人工智能 安全 Java
                  Java8 - LocalDateTime时间日期类使用详解
                  Java8 - LocalDateTime时间日期类使用详解
                  |
                  4天前
                  |
                  Java 开发工具 Windows
                  Java入门及环境变量
                  Java入门及环境变量
                  10 1
                  |
                  4天前
                  |
                  安全 Java 程序员
                  |
                  4天前
                  |
                  Java API 调度
                  [AIGC] 深入理解Java并发编程:从入门到进阶
                  [AIGC] 深入理解Java并发编程:从入门到进阶
                  |
                  4天前
                  |
                  Java Nacos 开发者
                  Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
                  Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
                  |
                  4天前
                  |
                  前端开发 Java 测试技术
                  Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
                  Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
                  |
                  4天前
                  |
                  Java 程序员 数据库连接
                  Java从入门到精通:3.3.2性能优化与调优——内存管理篇
                  Java从入门到精通:3.3.2性能优化与调优——内存管理篇
                  Java从入门到精通:3.3.2性能优化与调优——内存管理篇
                  |
                  4天前
                  |
                  Dubbo Java 应用服务中间件
                  Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
                  Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
                  |
                  4天前
                  |
                  SQL Java 数据库连接
                  Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
                  Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句