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编辑

                   

                  相关文章
                  |
                  15天前
                  |
                  Java 开发者 微服务
                  Spring Boot 入门:简化 Java Web 开发的强大工具
                  Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
                  35 6
                  Spring Boot 入门:简化 Java Web 开发的强大工具
                  |
                  12天前
                  |
                  监控 架构师 Java
                  Java虚拟机调优的艺术:从入门到精通####
                  本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
                  |
                  18天前
                  |
                  JSON Java 程序员
                  Java|如何用一个统一结构接收成员名称不固定的数据
                  本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
                  23 3
                  |
                  22天前
                  |
                  存储 缓存 安全
                  java 中操作字符串都有哪些类,它们之间有什么区别
                  Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
                  42 8
                  |
                  23天前
                  |
                  Java 开发者
                  在 Java 中,一个类可以实现多个接口吗?
                  这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
                  43 1
                  |
                  1月前
                  |
                  监控 安全 Java
                  Java中的多线程编程:从入门到实践####
                  本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
                  |
                  1月前
                  |
                  安全 Java
                  Java多线程集合类
                  本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
                  |
                  24天前
                  |
                  Java 程序员 数据库连接
                  Java中的异常处理:从入门到精通
                  在Java编程的海洋中,异常处理是一艘不可或缺的救生艇。它不仅保护你的代码免受错误数据的侵袭,还能确保用户体验的平稳航行。本文将带你领略异常处理的风浪,让你学会如何在Java中捕捉、处理和预防异常,从而成为一名真正的Java航海家。
                  |
                  28天前
                  |
                  Java Android开发
                  Eclipse 创建 Java 类
                  Eclipse 创建 Java 类
                  26 0
                  |
                  7月前
                  |
                  安全 Java
                  从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
                  从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)