java代码规范(适合写程序之前先了解有助于开发协同)

目录

一、类定义

二、方法定义

三、接口定义

四、变量定义

1、命名规范:

2、类型规范:

3、常量规范:

五、static关键字

1、静态变量(类变量):

2、静态方法(类方法):


一、类定义

  1. 类名应该使用大写字母开头的驼峰命名法。例如,PublicClass。
  2. 类定义应该包含在一个与类名同名的文件中。例如,PublicClass类的定义应该保存在名为PublicClass.java的文件中。
  3. 类定义应该包括访问修饰符,通常是public,表示该类可以被其他类访问。如果没有指定访问修饰符,则默认为package-private(即只有在同一包中的类可以访问)。
  4. 类定义可以包含类级别的变量(称为字段)和方法。字段和方法也应该使用驼峰命名法,并且方法名应该以动词开头。
  5. 类定义可以包含构造函数,用于初始化类的实例。构造函数应该与类名同名,没有返回类型,并且可以在其中初始化类的字段。
  6. 如果类定义包含方法,则应该为每个方法提供适当的访问修饰符,例如public、private、protected或默认(package-private)。方法的访问修饰符应该根据方法的用途和访问需求进行选择。
  7. 类定义可以包含注释和文档,以便其他人可以理解代码的功能和用途。注释应该清晰明了,并且应该使用JavaDoc格式进行编写。

二、方法定义

在Java中,方法的定义也需要遵循一定的规范,这有助于提高代码的可读性和一致性。以下是一些Java方法定义的规范:

  1. 方法命名:方法名应该使用小写字母开头的驼峰命名法。动词应该用来表示方法的行为。例如,calculateSum()。
  2. 访问修饰符:每个方法都应该有明确的访问修饰符,如 public,private,protected,或者默认(没有指定)。这决定了该方法从哪里可以被访问。
  • private:当一个类的成员被声明为private时,它只能被其本身访问,而不能被外部的类访问。这是访问权限最严格的修饰符。
  • protected:当一个类的成员被声明为protected时,它可以被其本身、相同包中的其他类以及不同包中的子类访问。
  • public:当一个类的成员被声明为public时,它具有最宽松的访问权限。它可以被任何其他类访问,无论这些类是否在相同的包中或是该类的子类。

首先包层次如下所示:

private只可以在类中访问:

protected同一包中访问:

Test类和User类属于同一包下可以访问:

EasyTest类在easy包下和User类不属于同一包下所以不可以访问:

public可以被其他的类任意访问:

不同包下也可以访问:

  1. 返回类型:方法应该明确声明其返回类型。如果方法不返回任何值,那么它应该声明为 void。返回的类型应该尽可能地精确,避免使用过于宽泛的类型,如 Object。
  2. 参数:方法的参数列表应该清晰明了,每个参数的类型和名称都应该明确。参数也应该使用驼峰命名法。
  3. 异常处理:方法应该清楚地声明它可能抛出的任何异常。这有助于调用此方法的代码理解可能发生的错误并适当处理。
  4. 注释:和方法相关的重要信息应该通过注释进行说明,包括方法的目的、参数的含义和返回值。注释应该使用JavaDoc格式。
  5. 方法体:方法体内部的代码应该简洁明了,避免冗长和复杂的代码。每个方法都应该尽量只做一件事情,这样有助于代码的重用和测试。

三、接口定义

1、接口命名

  • 接口名称应具有描述性,通常以able,ible或er结尾,例如Runnable,Serializable。
  • 使用大写字母开头的驼峰命名法,例如PublicInterface。
  • 避免使用Java关键字作为接口名称。

2、接口位置

  • 接口应该放在其使用者可以访问的位置。通常,这意味着接口应该放在一个包中,该包的名称反映了其用途。

3、方法命名

  • 接口方法应该是动词或动词短语,表示一个操作,例如start(),stop()。
  • 方法也应该使用驼峰命名法,并且首字母小写,例如public void myMethod();。

4、注释

  • 对接口和其方法进行充分的注释,以便其他开发者理解它们的用途。
  • 使用JavaDoc格式进行注释,以便可以通过工具生成API文档。

5、接口与实现分离

  • 接口不应包含任何具体的实现细节。这些细节应在实现接口的类中定义。

6、避免过于庞大

  • 避免创建过于庞大的接口,接口中的方法数量应适中。过于庞大的接口会使得实现类变得复杂和难以理解。

7、常量定义

  • 如果接口需要定义常量,则这些常量应该是公共的、静态的和最终的,通常这些常量都是大写字母,用下划线分隔单词,例如:public static final String CONSTANT_NAME = "value";

8、默认方法和静态方法

  • 在合适的情况下,可以使用默认方法和静态方法。默认方法可以在不破坏已有实现的情况下向接口添加新方法,而静态方法则可以提供与接口相关的工具性函数。

接口的定义 接口类中的方法和属性不要加任何修饰符号(public 也不要加)

⭐⭐⭐在JDK8以后接口中的方法也可以实现了,就是要在方法前面加一个default关键词。

实现接口使用implements,下面的图片中的代码有这么一行

Animal myDog = new Dog();

这一行是通过new Dog对象从而向上转型实现了Animal接口因为接口是不可以直接的被new出来的。

向上转型(Upcasting)和向下转型(Downcasting)是Java中两种重要的类型转换操作

1、向上转型(Upcasting)

  • 向上转型是将子类的引用转为父类的引用。
  • 由于子类对象可以当作父类对象来使用(子类是父类的扩展),这种转换是自动的,不需要使用任何特殊的语法。
  • 向上转型是安全的,不会丢失任何数据。示例:

                class Animal { }

                class Dog extends Animal { }

                Dog dog = new Dog();

                Animal animal = dog; // 向上转型, 自动完成

2、向下转型(Downcasting)

  • 向下转型是将父类的引用转为子类的引用。
  • 由于父类引用可能指向子类对象,也可能指向真正的父类对象,所以这种转换是不安全的,需要强制转换。
  • 在转换前,通常会使用instanceof操作符来检查是否可以安全地进行向下转型。示例:

                Animal animal = new Dog(); // 向上转型

                if (animal instanceof Dog) { // 检查是否可以安全地向下转型为Dog类型

                        Dog dog = (Dog) animal; // 向下转型, 需要强制转换

                        // ...

                }

四、变量定义

1、命名规范

  • 使用有意义的变量名,变量名应清晰地表达变量的用途。
  • 采用驼峰命名法,变量名首字母小写,例如 myVariable。
  • 对于多个单词组成的变量名,使用驼峰命名法,例如 mySecondVariable。

2、类型规范

  • 使用合适的数据类型,避免不必要的数据类型转换和浪费内存。
  • 在可能的情况下,优先使用基本数据类型而不是其包装类。

3、常量规范

  • 常量通常使用 static 和 final 关键字进行定义。
  • 常量名全部大写,单词之间使用下划线分隔,例如 MY_CONSTANT。
  • 常量不应被改变,因此在定义时应初始化。

五、static关键字

1、静态变量(类变量):

  • 使用static修饰的变量称为静态变量或类变量。
  • 它属于类,而不属于类的任何一个实例。也就是说,类的所有实例共享同一个静态变量。
  • 静态变量在类加载时初始化,仅在类加载时分配内存一次。
class Counter {  static int count = 0; // 静态变量  Counter() {  count++;  System.out.println(count);  }  public static void main(String args[]) {  Counter c1 = new Counter();  Counter c2 = new Counter();  Counter c3 = new Counter();  }  
}  
// 输出  
// 1  
// 2  
// 3

2、静态方法(类方法)

  • 使用static修饰的方法称为静态方法或类方法。
  • 静态方法可以直接通过类名来调用,不需要创建类的实例。
  • 静态方法可以访问静态数据成员并且可以更改静态数据成员的值。
class Example {  static int cube(int x) {  // 静态方法  return x * x * x;  }  public static void main(String args[]) {  int result = Example.cube(5); // 通过类名直接调用静态方法  System.out.println(result);  }  
}

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

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

相关文章

AUTOSAR软件手册文档缩写描述,AUTOSAR_TR_PredefinedNames

由于AUTOSAR文档中的缩写太多,入门者看起开不方便。例如TR、SWS、SRS、EXP模块。 下载链接:https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TR_PredefinedNames.pdf

android——自定义TextView

效果展示&#xff1a; 代码解析&#xff1a; 1、首先设置自定义属性&#xff08;res/values下新建一个attrs.xml文件&#xff09; <?xml version"1.0" encoding"utf-8"?> <resources><!-- name 自定义view的名字 CustomTextView--&…

Spring Bean的生命周期(钩子函数)

借鉴&#xff1a;https://www.cnblogs.com/liweimingbk/p/17843970.html https://blog.csdn.net/lxz352907839/article/details/128634404 一、Spring Bean生命周期 如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口&#xff0c;那么在加载Spring配置文…

Flood Fill算法总结

算法思想 从一个起点开始&#xff0c;每一次随机选择一个新加进来的格子&#xff0c;看一下它周围能否扩展新的格子。如果能扩展&#xff0c;那么就扩展进来&#xff0c;直到不能扩展新的格子为止。当然需要判重&#xff0c;同样一个格子只能覆盖一次&#xff0c;这样能够保证时…

DataLoader与Dataset

一、人民币二分类 二、DataLoader 与 Dataset DataLoader torch.utils.data.DataLoader 功能&#xff1a;构建可迭代的数据装载器 &#xff08;只标注了较为重要的&#xff09; • dataset: Dataset类&#xff0c;决定数据从哪读取及如何读取 • batchsize : 批大小 • num_…

机器学习异常值处理 逻辑汇总一

一 清除数据中恒定不变值 如果某个数据长时间不变&#xff0c;默认异常&#xff0c;清除掉该部分数据&#xff1a; # 使用 shift 和 cumsum 来创建一个分组键&#xff0c;每次值改变都会增加组号 g (df[沉淀池3号进水流量] ! df[沉淀池3号进水流量].shift()).cumsum()# 使用…

案例253:基于微信小程序的懂球短视频管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SpringBoot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …

GC8549 大电流,双通道 12V,短地短电源保护等功能 可替代ONSEMI的LV8548/LV8549

GC8549 可以工作在 3.8~12V 的电源电压上&#xff0c;每 通道能提供高达 1.5A 持续输出电流或者 2.5A 峰值 电流&#xff0c;睡眠模式下功耗小于 1uA。具有 PWM&#xff08;IN/EN&#xff09;输入接口,与行业标 准器件兼容&#xff0c;并具有过温保护&#xff0c;欠压保护&…

【计算机网络】网络层

文章目录 网络层提供的服务虚电路数据报服务虚电路与数据报服务比较 虚拟互连网络IP地址IP层次结构IP地址分类特殊地址子网掩码 子网划分变长子网划分超网合并网络规律 IP地址与MAC地址ARP协议ARP欺骗的应用 数据包数据包首部 路由ICMP协议RIP动态路由协议OSPF协议BGP协议 VPNN…

进程等待(wait和wait函数)【Linux】

进程等待 wait和wait函数【Linux】 进程等待的概念进程等待的必要性进程等待的方法wait函数waitpid函数 非阻塞等待和阻塞等待的对比阻塞等待&#xff1a;非阻塞等待 进程等待的概念 进程等待就是通过 wait/waitpid的方式&#xff0c;让父进程对子进程进行等待子进程退出并且将…

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】

【信号处理&#xff1a;小波包转换&#xff08;WPT&#xff09;/小波包分解&#xff08;WPD&#xff09; 】 小波包变换简介WPT/WPD的基础知识WPT/WPD的主要特点The Wavelet Packet Transform 小波包变换前向小波数据包变换最佳基础和成本函数数学中波纹的最佳基础其他成本函数…

酷狗高级Java面试真题

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…

洛谷普及组P1044栈,题目讲解(无数论基础,纯打表找规律)

[NOIP2003 普及组] 栈 - 洛谷 我先写了个打表的代码&#xff0c;写了一个小时&#xff0c;o(╥﹏╥)o只能说我真不擅长dfs。 int n; std::unordered_map<std::string, int>map; void dfs(std::vector<int>&a, int step,std::stack<int>p, std::string …

Nginx中include配置文件,方便管理多域名

目录 1.加上include配置 2.配置 server 记录 一个网站对应一个server 记录&#xff0c;这样管理起来相对麻烦。我们可以将每个网站记录单独拆分出来即可&#xff0c;这就需要用到 nginx 中的 conf.d 文件 1.加上include配置 先进入到 nginx.conf 文件&#xff0c;然后将所有…

CentOS7搭建Elasticsearch与Kibana服务

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络&#xff1a; docker network create es-net 1.2拉取elasticsearch镜像 docker pull elasticsearch:7.11.1 1.3.运行 运行docker命令&#xff0c;部…

paddle v4 hubserving 部署

环境准备&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7/deploy/hubserving#24-%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1 服务器启动命令 hub serving start -c deploy/hubserving/ocr_system/config.json客户端请求 python tools/test_hubserving.…

Java ORM 框架 Mybatis详解

&#x1f4d6; 内容 Mybatis 的前身就是 iBatis &#xff0c;是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点&#xff0c;结合 Mybatis 底层源码分析&#xff0c;图文并茂的讲解 Mybatis 的核心工作机制。 …

面向对象编程(高级)

面向对象编程&#xff08;高级&#xff09; 1、类变量和类方法 &#xff08;1&#xff09; 概念 类变量&#xff0c;也称为静态变量&#xff0c;是指在类级别声明的变量。它们与特定类相关联&#xff0c;而不是与类的实例&#xff08;对象&#xff09;相关联。每个类变量只有…

JavaSE语法之十五:异常(超全!!!)

文章目录 一、异常的概念与体系1. 异常的概念2. 异常的体系结构3. 异常的分类 二、异常的处理方式1. 防御式编程&#xff08;1&#xff09;LBYL 事前防御型&#xff08;2&#xff09;EAFP 时候认错型 2. 异常的抛出3. 异常的捕获&#xff08;1&#xff09;异常声明的 throws&am…

工作流入门这篇就够了!

总概 定义&#xff1a;工作流是在计算机支持下业务流程的自动或半自动化&#xff0c;其通过对流程进行描述以及按一定规则执行以完成相应工作。 应用&#xff1a;随着计算机技术的发展以及工业生产、办公自动化等领域的需求不断提升&#xff0c;面向事务审批、材料提交、业务…