当前位置: 首页 > news >正文

【Java】public class Person{}和public Person{} 和 public Person person究竟都有哪些区别呢。

public class Person{}和public Person{} 和 public Person person 和 public static void mian(String[] args) 究竟都有哪些区别呢。

以下是Java中public class Person{}public Person{}public Person personpublic static void main(String[] args)的区别解析:


一、public class Person{}

定义:声明一个公共类,类名为Person
用途

  • 表示这是一个可被其他包访问的类(public修饰符的作用)。
  • 类名必须与Java源文件名完全一致(如Person.java)。
  • 一个Java文件中最多只能有一个public class

示例

// Person.java文件
public class Person {
    // 类体(属性、方法等)
}

二、public Person{}

定义:构造方法的声明,用于初始化对象
用途

  • public表示构造方法对外可见,允许其他类通过new Person()创建对象。
  • 如果省略访问修饰符,则默认为包私有(只能在同包内访问)。
  • 构造方法名必须与类名完全一致(如Person)。

示例

public class Person {
    // 公共构造方法
    public Person() {
        // 初始化代码
    }
    
    // 带参数的构造方法
    public Person(String name) {
        // 初始化代码
    }
}

三、public Person person

定义:声明一个公共的成员变量,类型为Person,变量名为person
用途

  • 表示该成员变量(实例变量或静态变量)可被其他类直接访问(需结合static修饰符决定是否属于类或对象)。
  • 如果未显式初始化,默认值为null(引用类型)。

示例

public class Main {
    // 公共的Person类型成员变量
    public Person person = new Person("Alice");
}

四、public static void main(String[] args)

定义:Java程序的入口方法,固定语法结构。
用途

  • public:允许JVM从任何位置调用该方法。
  • static:无需创建类实例即可调用(JVM直接加载到内存执行)。
  • void:方法无返回值(程序执行的起点不需要返回数据)。
  • String[] args:接收命令行参数(如java Main arg1 arg2)。

示例

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

五、对比总结

语法结构类型作用关键修饰符
public class Person{}类声明定义可全局访问的类public(强制匹配文件名)
public Person{}构造方法初始化对象public(可自定义访问)
public Person person成员变量声明存储对象或类属性public(控制可见性)
public static void main程序入口方法作为JVM执行的起点public static void

六、常见误区

  1. public Person{}的命名
    • 构造方法名必须与类名一致,否则编译错误。
  2. public class的限制
    • 每个Java文件只能有一个public class,且文件名必须与public class名一致。
  3. main方法的特殊性
    • 即使类中有多个main方法,只有public static void main(String[] args)会被JVM调用。

通过理解这些语法结构的差异,可以更好地组织Java代码并遵循面向对象设计原则。

http://www.dtcms.com/a/98217.html

相关文章:

  • Java---类与对象
  • NLP高频面试题(二十三)对抗训练的发展脉络,原理,演化路径
  • 关于跨域与.NET的处理方案
  • 软考-高级-系统架构设计师【考试备考资料下载】
  • 自学-408-《计算机网络》(总结速览)
  • 区块链在教育领域的创新应用:改变传统教育的未来
  • 黑盒测试的等价类划分法(输入数据划分为有效的等价类和无效的等价类)
  • 综合实验
  • qt之使用redis与其他程序(python)交互同通信
  • 基于SpringBoot实现的高校实验室管理平台功能四
  • 多线程 -- Thread类
  • vue学习
  • Linux内核同步机制:解锁并发编程的奥秘
  • 软件的常用设计模式。可参考一个一个学习
  • 用Nginx实现负载均衡与高可用架构(整合Keepalived)
  • [Linux]在vim中批量注释与批量取消注释
  • 进程Kill杀死后GPU显存没有释放仍然被占用,怎么杀死僵尸进程
  • 跟着StatQuest学知识08-RNN与LSTM
  • Claude 在 SVG 绘图创作中的潜力与技巧
  • 【软考-架构】10.1、软件工程概述-CMM-软件过程模型-逆向工程
  • Pycharm (十)字符串扩展:统计小串在大串中出现的次数
  • C++23:现代C++的模块化革命与零成本抽象新高度
  • 笔记:遇见未来——6G协同创新技术研讨会
  • FPGA调试笔记
  • 从代码学习深度学习 - 含并行连结的网络(GoogLeNet)PyTorch版
  • 淘宝双十一大促监控系统开发:实时追踪爆品数据与流量波动
  • 谷粒微服务高级篇学习笔记整理---异步线程池
  • SQL Server数据库引擎服务启动失败:端口冲突
  • 电源系统的热设计与热管理--以反激式充电器为例
  • 1688 店铺清单及全商品数据、关键词检索 API 介绍